Hide debug tools from JEI when disabled via config (#4439)

This commit is contained in:
yueh
2020-07-01 14:29:43 +02:00
committed by GitHub
parent 400fcdb633
commit 0f11c1e0a4
3 changed files with 58 additions and 11 deletions
+20 -4
View File
@@ -18,7 +18,16 @@
package appeng.core;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.DoubleSupplier;
import java.util.stream.Collectors;
@@ -36,7 +45,13 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig;
import appeng.api.config.*;
import appeng.api.config.CondenserOutput;
import appeng.api.config.PowerMultiplier;
import appeng.api.config.PowerUnits;
import appeng.api.config.SearchBoxMode;
import appeng.api.config.Settings;
import appeng.api.config.TerminalStyle;
import appeng.api.config.YesNo;
import appeng.api.features.AEFeature;
import appeng.core.settings.TickRates;
import appeng.util.EnumCycler;
@@ -175,9 +190,10 @@ public final class AEConfig {
this.matterCannonBattery = COMMON.matterCannonBattery.get();
this.featureFlags.clear();
for (final AEFeature feature : AEFeature.values()) {
if (feature.isVisible()) {
if (COMMON.enabledFeatures.containsKey(feature)) {
if (feature.isVisible() && feature.isConfig()) {
if (COMMON.enabledFeatures.containsKey(feature) && COMMON.enabledFeatures.get(feature).get()) {
this.featureFlags.add(feature);
}
} else {
@@ -19,9 +19,6 @@
package appeng.core;
import appeng.api.definitions.IDefinitions;
import appeng.api.definitions.IItems;
import appeng.api.definitions.IMaterials;
import appeng.api.definitions.IParts;
import appeng.bootstrap.FeatureFactory;
import appeng.core.api.definitions.ApiBlocks;
import appeng.core.api.definitions.ApiItems;
@@ -57,17 +54,17 @@ public final class ApiDefinitions implements IDefinitions {
}
@Override
public IItems items() {
public ApiItems items() {
return items;
}
@Override
public IMaterials materials() {
public ApiMaterials materials() {
return materials;
}
@Override
public IParts parts() {
public ApiParts parts() {
return parts;
}
}
@@ -18,6 +18,8 @@
package appeng.integration.modules.jei;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Optional;
import com.google.common.collect.ImmutableList;
@@ -32,7 +34,12 @@ import mezz.jei.api.IModPlugin;
import mezz.jei.api.JeiPlugin;
import mezz.jei.api.constants.VanillaRecipeCategoryUid;
import mezz.jei.api.constants.VanillaTypes;
import mezz.jei.api.registration.*;
import mezz.jei.api.registration.IAdvancedRegistration;
import mezz.jei.api.registration.IRecipeCatalystRegistration;
import mezz.jei.api.registration.IRecipeCategoryRegistration;
import mezz.jei.api.registration.IRecipeRegistration;
import mezz.jei.api.registration.IRecipeTransferRegistration;
import mezz.jei.api.registration.ISubtypeRegistration;
import mezz.jei.api.runtime.IJeiRuntime;
import appeng.api.AEApi;
@@ -44,6 +51,7 @@ import appeng.api.features.AEFeature;
import appeng.container.implementations.CraftingTermContainer;
import appeng.container.implementations.PatternTermContainer;
import appeng.core.AEConfig;
import appeng.core.Api;
import appeng.core.AppEng;
import appeng.core.localization.GuiText;
import appeng.integration.abstraction.JEIFacade;
@@ -169,6 +177,32 @@ public class JEIPlugin implements IModPlugin {
@Override
public void onRuntimeAvailable(IJeiRuntime jeiRuntime) {
JEIFacade.setInstance(new JeiRuntimeAdapter(jeiRuntime));
this.hideDebugTools(jeiRuntime);
}
private void hideDebugTools(IJeiRuntime jeiRuntime) {
Collection<ItemStack> toRemove = new ArrayList<>();
// We use the internal API here as exception as debug tools are not part of the
// public one by design.
toRemove.add(Api.INSTANCE.definitions().items().dummyFluidItem().maybeStack(1).orElse(null));
if (!AEConfig.instance().isFeatureEnabled(AEFeature.UNSUPPORTED_DEVELOPER_TOOLS)) {
toRemove.add(Api.INSTANCE.definitions().blocks().cubeGenerator().maybeStack(1).orElse(null));
toRemove.add(Api.INSTANCE.definitions().blocks().chunkLoader().maybeStack(1).orElse(null));
toRemove.add(Api.INSTANCE.definitions().blocks().energyGenerator().maybeStack(1).orElse(null));
toRemove.add(Api.INSTANCE.definitions().blocks().itemGen().maybeStack(1).orElse(null));
toRemove.add(Api.INSTANCE.definitions().blocks().phantomNode().maybeStack(1).orElse(null));
toRemove.add(Api.INSTANCE.definitions().items().toolDebugCard().maybeStack(1).orElse(null));
toRemove.add(Api.INSTANCE.definitions().items().toolEraser().maybeStack(1).orElse(null));
toRemove.add(Api.INSTANCE.definitions().items().toolMeteoritePlacer().maybeStack(1).orElse(null));
toRemove.add(Api.INSTANCE.definitions().items().toolReplicatorCard().maybeStack(1).orElse(null));
}
jeiRuntime.getIngredientManager().removeIngredientsAtRuntime(mezz.jei.api.constants.VanillaTypes.ITEM,
toRemove);
}
}