From 3c19de95a6f91ed351770650d54e19ec7b51a541 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?HuTao=E4=BB=8A=E5=A4=A9=E5=90=83=E4=BB=80=E4=B9=88?= <1184726415@qq.com> Date: Sat, 8 Oct 2022 13:31:12 +0800 Subject: [PATCH] v0.1.6.2 --- build.gradle | 2 +- gradle.properties | 1 + .../extrabotany/common/blocks/PowerFrame.java | 21 +++---- .../subtile/generating/SubTileStonesia.java | 3 + .../common/blocks/tile/TilePowerFrame.java | 9 ++- .../common/handler/StonesiaManager.java | 57 +++++++++++++++++++ .../render/entity/RenderEGOLandmine.java | 3 +- 7 files changed, 80 insertions(+), 16 deletions(-) create mode 100644 src/main/java/chick/extrabotany/common/handler/StonesiaManager.java diff --git a/build.gradle b/build.gradle index 1b4d8af..0b48fe0 100644 --- a/build.gradle +++ b/build.gradle @@ -161,7 +161,7 @@ repositories { } dependencies { - minecraft 'net.minecraftforge:forge:1.18.2-40.1.51' + minecraft "net.minecraftforge:forge:1.18.2-${forge_version}" annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:1.18.2-5.0.7.1") diff --git a/gradle.properties b/gradle.properties index 6178990..b09653d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,6 +4,7 @@ org.gradle.jvmargs=-Xmx4G org.gradle.daemon=false minecraft_version=1.18.2 +forge_version=40.1.68 botania_version=435 diff --git a/src/main/java/chick/extrabotany/common/blocks/PowerFrame.java b/src/main/java/chick/extrabotany/common/blocks/PowerFrame.java index 90f90d8..07dede7 100644 --- a/src/main/java/chick/extrabotany/common/blocks/PowerFrame.java +++ b/src/main/java/chick/extrabotany/common/blocks/PowerFrame.java @@ -35,19 +35,16 @@ public class PowerFrame extends BlockModWaterloggable implements EntityBlock ItemStack stack = player.getItemInHand(hand); if (frame != null) { - if (!stack.isEmpty() && (IXplatAbstractions.INSTANCE.findManaItem(stack) != null || chick.extrabotany.xplat.IXplatAbstractions.INSTANCE.findNatureOrbItem(stack) != null)) + if (!frame.getItemHandler().isEmpty()) { - if (frame.getItemHandler().isEmpty()) - { - boolean result = frame.addItem(player, stack, hand); - VanillaPacketDispatcher.dispatchTEToNearbyPlayers(frame); - return result ? InteractionResult.SUCCESS : InteractionResult.PASS; - } else - { - InventoryHelper.withdrawFromInventory(frame, player); - VanillaPacketDispatcher.dispatchTEToNearbyPlayers(frame); - return InteractionResult.SUCCESS; - } + InventoryHelper.withdrawFromInventory(frame, player); + VanillaPacketDispatcher.dispatchTEToNearbyPlayers(frame); + return InteractionResult.SUCCESS; + } else if (!stack.isEmpty() && (IXplatAbstractions.INSTANCE.findManaItem(stack) != null || chick.extrabotany.xplat.IXplatAbstractions.INSTANCE.findNatureOrbItem(stack) != null)) + { + boolean result = frame.addItem(player, stack, hand); + VanillaPacketDispatcher.dispatchTEToNearbyPlayers(frame); + return result ? InteractionResult.SUCCESS : InteractionResult.PASS; } } return InteractionResult.PASS; diff --git a/src/main/java/chick/extrabotany/common/blocks/subtile/generating/SubTileStonesia.java b/src/main/java/chick/extrabotany/common/blocks/subtile/generating/SubTileStonesia.java index 3edf932..c3208e0 100644 --- a/src/main/java/chick/extrabotany/common/blocks/subtile/generating/SubTileStonesia.java +++ b/src/main/java/chick/extrabotany/common/blocks/subtile/generating/SubTileStonesia.java @@ -65,6 +65,7 @@ public class SubTileStonesia extends TileEntityGeneratingFlower pos = getEffectivePos().offset(offset); var block = level.getBlockState(pos).getBlock(); //TODO:OUTPUT + /* int output = RecipeStonesia.getOutput(new ItemStack(block)); if (output != 0) { @@ -79,6 +80,8 @@ public class SubTileStonesia extends TileEntityGeneratingFlower break; } + + */ } } } else diff --git a/src/main/java/chick/extrabotany/common/blocks/tile/TilePowerFrame.java b/src/main/java/chick/extrabotany/common/blocks/tile/TilePowerFrame.java index 3c5f737..e8f7cc4 100644 --- a/src/main/java/chick/extrabotany/common/blocks/tile/TilePowerFrame.java +++ b/src/main/java/chick/extrabotany/common/blocks/tile/TilePowerFrame.java @@ -1,5 +1,6 @@ package chick.extrabotany.common.blocks.tile; +import chick.extrabotany.ExtraBotany; import chick.extrabotany.common.ModItems; import chick.extrabotany.common.baubles.NatureOrb; import chick.extrabotany.common.blocks.ModTiles; @@ -70,7 +71,7 @@ public class TilePowerFrame extends TileSimpleInventory } }; - public static final Supplier MULTIBLOCK_ADV = (() -> PatchouliAPI.get().makeMultiblock( + public static final Supplier MULTIBLOCK_ADV = Suppliers.memoize(() -> PatchouliAPI.get().makeMultiblock( PATTERN_ADV, 'P', ModBlocks.naturaPylon, '0', chick.extrabotany.common.ModBlocks.POWER_FRAME.get(), @@ -176,7 +177,7 @@ public class TilePowerFrame extends TileSimpleInventory { boolean multi = MULTIBLOCK_ADV.get().validate(level, worldPosition) != null; - + ExtraBotany.LOGGER.debug("sb250 multi:" + multi); int redstoneSignal = 0; for (Direction dir : Direction.values()) { @@ -219,8 +220,12 @@ public class TilePowerFrame extends TileSimpleInventory var orb = chick.extrabotany.xplat.IXplatAbstractions.INSTANCE.findNatureOrbItem(stack); if (orb != null && multi && level.dayTime() % 20 == 0) { + ExtraBotany.LOGGER.debug("sb250 1"); + if (level.getBlockEntity(worldPosition.offset(0, 1, 0)) instanceof TilePool p) { + ExtraBotany.LOGGER.debug("sb250 2"); + int natureToGet; if (redstoneSignal == 0) { diff --git a/src/main/java/chick/extrabotany/common/handler/StonesiaManager.java b/src/main/java/chick/extrabotany/common/handler/StonesiaManager.java new file mode 100644 index 0000000..8df8638 --- /dev/null +++ b/src/main/java/chick/extrabotany/common/handler/StonesiaManager.java @@ -0,0 +1,57 @@ +package chick.extrabotany.common.handler; + +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.ListMultimap; +import net.minecraft.server.packs.PackType; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.server.packs.resources.ResourceManagerReloadListener; +import net.minecraft.world.item.crafting.RecipeManager; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.block.Block; +import chick.extrabotany.api.craft.IStonesiaRecipe; +import vazkii.botania.api.recipe.StateIngredient; +import vazkii.botania.common.handler.OrechidManager; +import vazkii.botania.xplat.IXplatAbstractions; + +import javax.annotation.Nonnull; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static chick.extrabotany.ExtraBotany.prefixRl; + + +public class StonesiaManager implements ResourceManagerReloadListener +{ + private static final Map, ListMultimap> DATA = new HashMap<>(); + + public static void registerListener() + { + IXplatAbstractions.INSTANCE.registerReloadListener(PackType.SERVER_DATA, prefixRl("stonesia"), new StonesiaManager()); + } + + @Override + public void onResourceManagerReload(@Nonnull ResourceManager manager) + { + DATA.clear(); + } + + public static ListMultimap getFor(RecipeManager manager, + RecipeType type) + { + return DATA.computeIfAbsent(type, t -> + { + ListMultimap map = ArrayListMultimap.create(); + for (var recipe : manager.getAllRecipesFor(t)) + { + map.put(recipe.getInput(), recipe); + } + for (var list : map.asMap().values()) + { + // ((List) list).sort(Comparator.comparingInt(IStonesiaRecipe::getWeight)); + } + return map; + }); + } +} diff --git a/src/main/java/chick/extrabotany/forge/client/render/entity/RenderEGOLandmine.java b/src/main/java/chick/extrabotany/forge/client/render/entity/RenderEGOLandmine.java index 71cc73c..0043185 100644 --- a/src/main/java/chick/extrabotany/forge/client/render/entity/RenderEGOLandmine.java +++ b/src/main/java/chick/extrabotany/forge/client/render/entity/RenderEGOLandmine.java @@ -9,6 +9,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.phys.AABB; import net.minecraftforge.client.event.RenderLevelLastEvent; +import net.minecraftforge.client.event.RenderLevelStageEvent; import org.jetbrains.annotations.NotNull; import vazkii.botania.client.core.handler.ClientTickHandler; import vazkii.botania.client.render.tile.RenderTileSpecialFlower; @@ -26,7 +27,7 @@ public class RenderEGOLandmine extends EntityRenderer super(renderManager); } - public static void onWorldRenderLast(RenderLevelLastEvent evt) + public static void onWorldRenderLast(RenderLevelStageEvent.Stage evt) { offY = INITIAL_OFFSET; }