diff --git a/src/main/java/appeng/block/AEBaseBlockItem.java b/src/main/java/appeng/block/AEBaseBlockItem.java index e169ded01..ada440ece 100644 --- a/src/main/java/appeng/block/AEBaseBlockItem.java +++ b/src/main/java/appeng/block/AEBaseBlockItem.java @@ -122,7 +122,7 @@ public class AEBaseBlockItem extends BlockItem { } ActionResult result = super.place(context); - if (result != ActionResult.SUCCESS) { + if (!result.isAccepted()) { return result; } @@ -132,7 +132,7 @@ public class AEBaseBlockItem extends BlockItem { ori = tile; if (tile == null) { - return ActionResult.SUCCESS; + return result; } if (ori.canBeRotated() && !this.blockType.hasCustomRotation()) { @@ -148,7 +148,7 @@ public class AEBaseBlockItem extends BlockItem { ori.setOrientation(forward, up); } - return ActionResult.SUCCESS; + return result; } } diff --git a/src/main/java/appeng/core/AEConfig.java b/src/main/java/appeng/core/AEConfig.java index f7c0ef656..32c5d5c37 100644 --- a/src/main/java/appeng/core/AEConfig.java +++ b/src/main/java/appeng/core/AEConfig.java @@ -159,9 +159,10 @@ public final class AEConfig { this.matterCannonBattery = commonConfig.matterCannonBattery.get(); this.featureFlags.clear(); + for (final AEFeature feature : AEFeature.values()) { - if (feature.isVisible()) { - if (commonConfig.enabledFeatures.containsKey(feature)) { + if (feature.isVisible() && feature.isConfig()) { + if (commonConfig.enabledFeatures.containsKey(feature) && commonConfig.enabledFeatures.get(feature).get()) { this.featureFlags.add(feature); } } else { diff --git a/src/main/java/appeng/core/ApiDefinitions.java b/src/main/java/appeng/core/ApiDefinitions.java index 36ab4ddcd..e68e97062 100644 --- a/src/main/java/appeng/core/ApiDefinitions.java +++ b/src/main/java/appeng/core/ApiDefinitions.java @@ -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; } } diff --git a/src/main/java/appeng/parts/PartPlacement.java b/src/main/java/appeng/parts/PartPlacement.java index ae26ab7eb..1327799c0 100644 --- a/src/main/java/appeng/parts/PartPlacement.java +++ b/src/main/java/appeng/parts/PartPlacement.java @@ -20,7 +20,6 @@ package appeng.parts; import appeng.api.AEApi; import appeng.api.definitions.IBlockDefinition; -import appeng.api.definitions.IItems; import appeng.api.parts.*; import appeng.api.util.AEPartLocation; import appeng.api.util.DimensionalCoord; @@ -51,7 +50,6 @@ import net.minecraft.world.World; import java.util.ArrayList; import java.util.List; -import java.util.Optional; public class PartPlacement { @@ -215,24 +213,22 @@ public class PartPlacement { host = (IPartHost) tile; } - final Optional maybeMultiPartStack = multiPart.maybeStack(1); - final Optional maybeMultiPartBlock = multiPart.maybeBlock(); - final Optional maybeMultiPartBlockItem = multiPart.maybeBlockItem(); + ItemStack multiPartStack = multiPart.stack(1); + Block multiPartBlock = multiPart.block(); + BlockItem multiPartBlockItem = multiPart.blockItem(); - final boolean hostIsNotPresent = host == null; - final boolean multiPartPresent = maybeMultiPartBlock.isPresent() && maybeMultiPartStack.isPresent() - && maybeMultiPartBlockItem.isPresent(); - BlockState multiPartBlockState = maybeMultiPartBlock.get().getDefaultState(); - final boolean canMultiPartBePlaced = multiPartBlockState.canPlaceAt(world, te_pos); + boolean hostIsNotPresent = host == null; + BlockState multiPartBlockState = multiPartBlock.getDefaultState(); + boolean canMultiPartBePlaced = multiPartBlockState.canPlaceAt(world, te_pos); // We cannot override the item stack of normal use context, so we use this hack ItemPlacementContext mpUseCtx = new ItemPlacementContext( - new AutomaticItemPlacementContext(world, te_pos, side, maybeMultiPartStack.get(), side)); + new AutomaticItemPlacementContext(world, te_pos, side, multiPartStack, side)); // FIXME: This is super-fishy and all needs to be re-checked. what does this // even do??? - if (hostIsNotPresent && multiPartPresent && canMultiPartBePlaced - && maybeMultiPartBlockItem.get().place(mpUseCtx) == ActionResult.SUCCESS) { + if (hostIsNotPresent && canMultiPartBePlaced + && multiPartBlockItem.place(mpUseCtx).isAccepted()) { if (!world.isClient) { tile = world.getBlockEntity(te_pos); diff --git a/src/unported/java/appeng/integration/modules/jei/JEIPlugin.java b/src/unported/java/appeng/integration/modules/jei/JEIPlugin.java index 47a8e5536..2fbca9d0e 100644 --- a/src/unported/java/appeng/integration/modules/jei/JEIPlugin.java +++ b/src/unported/java/appeng/integration/modules/jei/JEIPlugin.java @@ -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 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); } }