diff --git a/.gitignore b/.gitignore index dc5b8854..6d2397c2 100755 --- a/.gitignore +++ b/.gitignore @@ -17,9 +17,12 @@ out build .gradle +# vscode +.vscode + # other eclipse run repo -generated \ No newline at end of file +generated diff --git a/gradle.properties b/gradle.properties index fadd7c9d..c767acfb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,17 +4,17 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false ## Environment Properties # The Minecraft version must agree with the Forge version to get a valid artifact -minecraft_version=1.20.1 +minecraft_version=1.20.2 # The Minecraft version range can use any release version of Minecraft as bounds. # Snapshots, pre-releases, and release candidates are not guaranteed to sort properly # as they do not follow standard versioning conventions. -minecraft_version_range=[1.20.1,1.21) +minecraft_version_range=[1.20.2,1.21) # The Forge version must agree with the Minecraft version to get a valid artifact -forge_version=47.0.3 +forge_version=48.1.0 # The Forge version range can use any version of Forge as bounds or match the loader version range -forge_version_range=[47,) +forge_version_range=[48,) # The loader version range can only use the major version of Forge/FML as bounds -loader_version_range=[47,) +loader_version_range=[48,) # The mapping channel to use for mappings. # The default set of supported mapping channels are ["official", "snapshot", "snapshot_nodoc", "stable", "stable_nodoc"]. # Additional mapping channels can be registered through the "channelProviders" extension in a Gradle plugin. @@ -29,10 +29,10 @@ loader_version_range=[47,) # # Parchment is an unofficial project maintained by ParchmentMC, separate from Minecraft Forge. # Additional setup is needed to use their mappings, see https://parchmentmc.org/docs/getting-started -mapping_channel=official +mapping_channel=parchment # The mapping version to query from the mapping channel. # This must match the format required by the mapping channel. -mapping_version=1.20.1 +mapping_version=2023.10.22-1.20.2 ## Mod Properties # The unique mod identifier for the mod. Must be lowercase in English locale. Must fit the regex [a-z][a-z0-9_]{1,63} # Must match the String constant located in the main mod class annotated with @Mod. @@ -56,4 +56,4 @@ mod_issue_tracker=https://github.com/progwml6/ironchest/issues # The mod display URL mod_display_url=https://minecraft.curseforge.com/projects/iron-chests # Build dependencies -jei_version=15.0.0.17 +jei_version=16.0.0.28 diff --git a/settings.gradle b/settings.gradle index 17d608d5..2989e89b 100644 --- a/settings.gradle +++ b/settings.gradle @@ -16,11 +16,15 @@ pluginManagement { name = 'MinecraftForge' url = 'https://maven.minecraftforge.net/' } + maven { + name = 'ParchmentMC' + url = 'https://maven.parchmentmc.org' + } } } plugins { - id 'org.gradle.toolchains.foojay-resolver-convention' version '0.5.0' + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0' } rootProject.name = 'ironchest' diff --git a/src/main/java/com/progwml6/ironchest/client/model/inventory/IronChestItemStackRenderer.java b/src/main/java/com/progwml6/ironchest/client/model/inventory/IronChestItemStackRenderer.java index 7f7c5dc3..ea8b2a2f 100644 --- a/src/main/java/com/progwml6/ironchest/client/model/inventory/IronChestItemStackRenderer.java +++ b/src/main/java/com/progwml6/ironchest/client/model/inventory/IronChestItemStackRenderer.java @@ -2,8 +2,8 @@ import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.model.geom.EntityModelSet; -import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; +import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/com/progwml6/ironchest/client/model/inventory/ModelItem.java b/src/main/java/com/progwml6/ironchest/client/model/inventory/ModelItem.java index 5e14fda2..c6557c7d 100644 --- a/src/main/java/com/progwml6/ironchest/client/model/inventory/ModelItem.java +++ b/src/main/java/com/progwml6/ironchest/client/model/inventory/ModelItem.java @@ -1,15 +1,19 @@ package com.progwml6.ironchest.client.model.inventory; import org.joml.Vector3f; -import org.joml.Vector3fc; public class ModelItem { + private final Vector3f center; private final float size; - /** Item center location in percentages, lazy loaded */ + /** + * Item center location in percentages, lazy loaded + */ private Vector3f centerScaled; - /** Item size in percentages, lazy loaded */ + /** + * Item size in percentages, lazy loaded + */ private Float sizeScaled; public ModelItem(Vector3f center, float size) { @@ -19,6 +23,7 @@ public ModelItem(Vector3f center, float size) { /** * Gets the center for rendering this item, scaled for renderer + * * @return Scaled center */ public Vector3f getCenterScaled() { @@ -32,6 +37,7 @@ public Vector3f getCenterScaled() { /** * Gets the size to render this item, scaled for the renderer + * * @return Size scaled */ public float getSizeScaled() { @@ -44,6 +50,7 @@ public float getSizeScaled() { /** * Gets the center for rendering this item + * * @return Center */ public Vector3f getCenter() { @@ -52,6 +59,7 @@ public Vector3f getCenter() { /** * Gets the size to render this item + * * @return Size */ public float getSize() { diff --git a/src/main/java/com/progwml6/ironchest/client/render/IronChestRenderer.java b/src/main/java/com/progwml6/ironchest/client/render/IronChestRenderer.java index 1d7545a4..5d15cd43 100644 --- a/src/main/java/com/progwml6/ironchest/client/render/IronChestRenderer.java +++ b/src/main/java/com/progwml6/ironchest/client/render/IronChestRenderer.java @@ -6,40 +6,39 @@ import com.progwml6.ironchest.IronChestsClientEvents; import com.progwml6.ironchest.client.model.IronChestsModels; import com.progwml6.ironchest.client.model.inventory.ModelItem; -import com.progwml6.ironchest.common.block.regular.AbstractIronChestBlock; import com.progwml6.ironchest.common.block.IronChestsTypes; -import com.progwml6.ironchest.common.block.regular.entity.AbstractIronChestBlockEntity; import com.progwml6.ironchest.common.block.entity.ICrystalChest; +import com.progwml6.ironchest.common.block.regular.AbstractIronChestBlock; +import com.progwml6.ironchest.common.block.regular.entity.AbstractIronChestBlockEntity; import com.progwml6.ironchest.common.block.trapped.entity.AbstractTrappedIronChestBlockEntity; import it.unimi.dsi.fastutil.floats.Float2FloatFunction; import it.unimi.dsi.fastutil.ints.Int2IntFunction; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.model.geom.PartPose; import net.minecraft.client.model.geom.builders.CubeListBuilder; import net.minecraft.client.model.geom.builders.LayerDefinition; import net.minecraft.client.model.geom.builders.MeshDefinition; import net.minecraft.client.model.geom.builders.PartDefinition; -import net.minecraft.client.renderer.block.model.ItemTransforms; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.Sheets; import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.client.renderer.blockentity.BrightnessCombiner; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.Sheets; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.resources.model.Material; -import net.minecraft.client.renderer.blockentity.BrightnessCombiner; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.core.Direction; +import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.entity.LidBlockEntity; -import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.DoubleBlockCombiner; -import net.minecraft.core.Direction; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.LidBlockEntity; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; -import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import org.joml.Vector3f; diff --git a/src/main/java/com/progwml6/ironchest/client/screen/IronChestScreen.java b/src/main/java/com/progwml6/ironchest/client/screen/IronChestScreen.java index 4c47cd81..168d6042 100644 --- a/src/main/java/com/progwml6/ironchest/client/screen/IronChestScreen.java +++ b/src/main/java/com/progwml6/ironchest/client/screen/IronChestScreen.java @@ -4,11 +4,11 @@ import com.progwml6.ironchest.common.block.IronChestsTypes; import com.progwml6.ironchest.common.inventory.IronChestMenu; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.screens.inventory.MenuAccess; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.gui.screens.inventory.MenuAccess; import net.minecraft.client.renderer.GameRenderer; -import net.minecraft.world.entity.player.Inventory; import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.player.Inventory; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -33,7 +33,7 @@ public IronChestScreen(IronChestMenu container, Inventory playerInventory, Compo @Override public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { - this.renderBackground(guiGraphics); + this.renderBackground(guiGraphics, mouseX, mouseY, partialTicks); super.render(guiGraphics, mouseX, mouseY, partialTicks); this.renderTooltip(guiGraphics, mouseX, mouseY); } diff --git a/src/main/java/com/progwml6/ironchest/common/ai/IronChestCatSitOnBlockGoal.java b/src/main/java/com/progwml6/ironchest/common/ai/IronChestCatSitOnBlockGoal.java index a4c66b9e..a88d78ae 100644 --- a/src/main/java/com/progwml6/ironchest/common/ai/IronChestCatSitOnBlockGoal.java +++ b/src/main/java/com/progwml6/ironchest/common/ai/IronChestCatSitOnBlockGoal.java @@ -2,12 +2,12 @@ import com.progwml6.ironchest.common.block.regular.AbstractIronChestBlock; import com.progwml6.ironchest.common.block.regular.entity.AbstractIronChestBlockEntity; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.core.BlockPos; import net.minecraft.world.entity.ai.goal.CatSitOnBlockGoal; import net.minecraft.world.entity.animal.Cat; -import net.minecraft.core.BlockPos; import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; public class IronChestCatSitOnBlockGoal extends CatSitOnBlockGoal { diff --git a/src/main/java/com/progwml6/ironchest/common/block/IronChestsBlocks.java b/src/main/java/com/progwml6/ironchest/common/block/IronChestsBlocks.java index 6a5e75d5..33de40dc 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/IronChestsBlocks.java +++ b/src/main/java/com/progwml6/ironchest/common/block/IronChestsBlocks.java @@ -21,9 +21,9 @@ import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.material.MapColor; -import net.minecraftforge.registries.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; import java.util.concurrent.Callable; import java.util.function.Function; diff --git a/src/main/java/com/progwml6/ironchest/common/block/IronChestsTypes.java b/src/main/java/com/progwml6/ironchest/common/block/IronChestsTypes.java index 1c263dd9..6231df7e 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/IronChestsTypes.java +++ b/src/main/java/com/progwml6/ironchest/common/block/IronChestsTypes.java @@ -17,10 +17,10 @@ import com.progwml6.ironchest.common.block.trapped.entity.TrappedIronChestBlockEntity; import com.progwml6.ironchest.common.block.trapped.entity.TrappedObsidianChestBlockEntity; import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.StringRepresentable; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; -import net.minecraft.util.StringRepresentable; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.state.BlockState; import javax.annotation.Nullable; @@ -99,7 +99,7 @@ public static List get(IronChestsTypes type) { @Nullable public AbstractIronChestBlockEntity makeEntity(BlockPos blockPos, BlockState blockState, boolean trapped) { - if(trapped) { + if (trapped) { return switch (this) { case IRON -> new TrappedIronChestBlockEntity(blockPos, blockState); case GOLD -> new TrappedGoldChestBlockEntity(blockPos, blockState); diff --git a/src/main/java/com/progwml6/ironchest/common/block/entity/ICrystalChest.java b/src/main/java/com/progwml6/ironchest/common/block/entity/ICrystalChest.java index 04e9756e..0bb933f1 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/entity/ICrystalChest.java +++ b/src/main/java/com/progwml6/ironchest/common/block/entity/ICrystalChest.java @@ -1,14 +1,15 @@ package com.progwml6.ironchest.common.block.entity; import com.progwml6.ironchest.common.block.IronChestsTypes; -import com.progwml6.ironchest.common.network.InventoryTopStacksSyncPacket; import com.progwml6.ironchest.common.network.IronChestNetwork; +import com.progwml6.ironchest.common.network.PacketTopStacksSync; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.network.PacketDistributor; import javax.annotation.Nullable; @@ -42,7 +43,7 @@ default void sendTopStacksPacket() { NonNullList stacks = this.buildItemStackDataList(); if (this.getChestLevel() != null && this.getChestLevel() instanceof ServerLevel && !this.getChestLevel().isClientSide) { - IronChestNetwork.getInstance().sendToClientsAround(new InventoryTopStacksSyncPacket(stacks, this.getChestWorldPosition()), (ServerLevel) this.getChestLevel(), this.getChestWorldPosition()); + IronChestNetwork.INSTANCE.send(new PacketTopStacksSync(this.getChestWorldPosition(), stacks), PacketDistributor.TRACKING_CHUNK.with(this.getChestLevel().getChunkAt(this.getChestWorldPosition()))); } } diff --git a/src/main/java/com/progwml6/ironchest/common/block/entity/IronChestsBlockEntityTypes.java b/src/main/java/com/progwml6/ironchest/common/block/entity/IronChestsBlockEntityTypes.java index 7b0916a4..f7a115bd 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/entity/IronChestsBlockEntityTypes.java +++ b/src/main/java/com/progwml6/ironchest/common/block/entity/IronChestsBlockEntityTypes.java @@ -16,7 +16,6 @@ import com.progwml6.ironchest.common.block.trapped.entity.TrappedGoldChestBlockEntity; import com.progwml6.ironchest.common.block.trapped.entity.TrappedIronChestBlockEntity; import com.progwml6.ironchest.common.block.trapped.entity.TrappedObsidianChestBlockEntity; - import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -25,6 +24,7 @@ import net.minecraftforge.registries.RegistryObject; public class IronChestsBlockEntityTypes { + public static final DeferredRegister> BLOCK_ENTITIES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, IronChests.MOD_ID); public static final RegistryObject> IRON_CHEST = BLOCK_ENTITIES.register( diff --git a/src/main/java/com/progwml6/ironchest/common/block/regular/CopperChestBlock.java b/src/main/java/com/progwml6/ironchest/common/block/regular/CopperChestBlock.java index 48038154..63a375dc 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/regular/CopperChestBlock.java +++ b/src/main/java/com/progwml6/ironchest/common/block/regular/CopperChestBlock.java @@ -1,8 +1,8 @@ package com.progwml6.ironchest.common.block.regular; import com.progwml6.ironchest.common.block.IronChestsTypes; -import com.progwml6.ironchest.common.block.regular.entity.CopperChestBlockEntity; import com.progwml6.ironchest.common.block.entity.IronChestsBlockEntityTypes; +import com.progwml6.ironchest.common.block.regular.entity.CopperChestBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/progwml6/ironchest/common/block/regular/CrystalChestBlock.java b/src/main/java/com/progwml6/ironchest/common/block/regular/CrystalChestBlock.java index 37aa0418..1756f800 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/regular/CrystalChestBlock.java +++ b/src/main/java/com/progwml6/ironchest/common/block/regular/CrystalChestBlock.java @@ -1,9 +1,9 @@ package com.progwml6.ironchest.common.block.regular; import com.progwml6.ironchest.common.block.IronChestsTypes; +import com.progwml6.ironchest.common.block.entity.IronChestsBlockEntityTypes; import com.progwml6.ironchest.common.block.regular.entity.AbstractIronChestBlockEntity; import com.progwml6.ironchest.common.block.regular.entity.CrystalChestBlockEntity; -import com.progwml6.ironchest.common.block.entity.IronChestsBlockEntityTypes; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; diff --git a/src/main/java/com/progwml6/ironchest/common/block/regular/DiamondChestBlock.java b/src/main/java/com/progwml6/ironchest/common/block/regular/DiamondChestBlock.java index d2d13ea1..f63c1c37 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/regular/DiamondChestBlock.java +++ b/src/main/java/com/progwml6/ironchest/common/block/regular/DiamondChestBlock.java @@ -1,8 +1,8 @@ package com.progwml6.ironchest.common.block.regular; import com.progwml6.ironchest.common.block.IronChestsTypes; -import com.progwml6.ironchest.common.block.regular.entity.DiamondChestBlockEntity; import com.progwml6.ironchest.common.block.entity.IronChestsBlockEntityTypes; +import com.progwml6.ironchest.common.block.regular.entity.DiamondChestBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/progwml6/ironchest/common/block/regular/DirtChestBlock.java b/src/main/java/com/progwml6/ironchest/common/block/regular/DirtChestBlock.java index 4c8d0028..ba80f819 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/regular/DirtChestBlock.java +++ b/src/main/java/com/progwml6/ironchest/common/block/regular/DirtChestBlock.java @@ -1,8 +1,8 @@ package com.progwml6.ironchest.common.block.regular; import com.progwml6.ironchest.common.block.IronChestsTypes; -import com.progwml6.ironchest.common.block.regular.entity.DirtChestBlockEntity; import com.progwml6.ironchest.common.block.entity.IronChestsBlockEntityTypes; +import com.progwml6.ironchest.common.block.regular.entity.DirtChestBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/progwml6/ironchest/common/block/regular/GoldChestBlock.java b/src/main/java/com/progwml6/ironchest/common/block/regular/GoldChestBlock.java index 0bae0a0e..8df97161 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/regular/GoldChestBlock.java +++ b/src/main/java/com/progwml6/ironchest/common/block/regular/GoldChestBlock.java @@ -1,8 +1,8 @@ package com.progwml6.ironchest.common.block.regular; import com.progwml6.ironchest.common.block.IronChestsTypes; -import com.progwml6.ironchest.common.block.regular.entity.GoldChestBlockEntity; import com.progwml6.ironchest.common.block.entity.IronChestsBlockEntityTypes; +import com.progwml6.ironchest.common.block.regular.entity.GoldChestBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/progwml6/ironchest/common/block/regular/IronChestBlock.java b/src/main/java/com/progwml6/ironchest/common/block/regular/IronChestBlock.java index b74e9b3f..ceb79f38 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/regular/IronChestBlock.java +++ b/src/main/java/com/progwml6/ironchest/common/block/regular/IronChestBlock.java @@ -1,8 +1,8 @@ package com.progwml6.ironchest.common.block.regular; import com.progwml6.ironchest.common.block.IronChestsTypes; -import com.progwml6.ironchest.common.block.regular.entity.IronChestBlockEntity; import com.progwml6.ironchest.common.block.entity.IronChestsBlockEntityTypes; +import com.progwml6.ironchest.common.block.regular.entity.IronChestBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; diff --git a/src/main/java/com/progwml6/ironchest/common/block/regular/entity/AbstractIronChestBlockEntity.java b/src/main/java/com/progwml6/ironchest/common/block/regular/entity/AbstractIronChestBlockEntity.java index fa6bcbb1..6091433c 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/regular/entity/AbstractIronChestBlockEntity.java +++ b/src/main/java/com/progwml6/ironchest/common/block/regular/entity/AbstractIronChestBlockEntity.java @@ -1,8 +1,8 @@ package com.progwml6.ironchest.common.block.regular.entity; import com.progwml6.ironchest.IronChests; -import com.progwml6.ironchest.common.block.regular.AbstractIronChestBlock; import com.progwml6.ironchest.common.block.IronChestsTypes; +import com.progwml6.ironchest.common.block.regular.AbstractIronChestBlock; import com.progwml6.ironchest.common.inventory.IronChestMenu; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; diff --git a/src/main/java/com/progwml6/ironchest/common/block/trapped/AbstractTrappedIronChestBlock.java b/src/main/java/com/progwml6/ironchest/common/block/trapped/AbstractTrappedIronChestBlock.java index 9ad33597..5bb4f701 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/trapped/AbstractTrappedIronChestBlock.java +++ b/src/main/java/com/progwml6/ironchest/common/block/trapped/AbstractTrappedIronChestBlock.java @@ -1,7 +1,7 @@ package com.progwml6.ironchest.common.block.trapped; -import com.progwml6.ironchest.common.block.regular.AbstractIronChestBlock; import com.progwml6.ironchest.common.block.IronChestsTypes; +import com.progwml6.ironchest.common.block.regular.AbstractIronChestBlock; import com.progwml6.ironchest.common.block.regular.entity.AbstractIronChestBlockEntity; import com.progwml6.ironchest.common.block.trapped.entity.AbstractTrappedIronChestBlockEntity; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/progwml6/ironchest/common/block/trapped/TrappedCrystalChestBlock.java b/src/main/java/com/progwml6/ironchest/common/block/trapped/TrappedCrystalChestBlock.java index 6612c736..1aa99be9 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/trapped/TrappedCrystalChestBlock.java +++ b/src/main/java/com/progwml6/ironchest/common/block/trapped/TrappedCrystalChestBlock.java @@ -1,9 +1,9 @@ package com.progwml6.ironchest.common.block.trapped; import com.progwml6.ironchest.common.block.IronChestsTypes; +import com.progwml6.ironchest.common.block.entity.IronChestsBlockEntityTypes; import com.progwml6.ironchest.common.block.regular.entity.AbstractIronChestBlockEntity; import com.progwml6.ironchest.common.block.trapped.entity.TrappedCrystalChestBlockEntity; -import com.progwml6.ironchest.common.block.entity.IronChestsBlockEntityTypes; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; diff --git a/src/main/java/com/progwml6/ironchest/common/block/trapped/TrappedIronChestBlock.java b/src/main/java/com/progwml6/ironchest/common/block/trapped/TrappedIronChestBlock.java index e5571c55..4dfb06b6 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/trapped/TrappedIronChestBlock.java +++ b/src/main/java/com/progwml6/ironchest/common/block/trapped/TrappedIronChestBlock.java @@ -1,8 +1,6 @@ package com.progwml6.ironchest.common.block.trapped; -import com.progwml6.ironchest.common.block.regular.AbstractIronChestBlock; import com.progwml6.ironchest.common.block.IronChestsTypes; -import com.progwml6.ironchest.common.block.regular.entity.IronChestBlockEntity; import com.progwml6.ironchest.common.block.entity.IronChestsBlockEntityTypes; import com.progwml6.ironchest.common.block.trapped.entity.TrappedIronChestBlockEntity; import net.minecraft.core.BlockPos; diff --git a/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedCrystalChestBlockEntity.java b/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedCrystalChestBlockEntity.java index 64175597..88ef05d7 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedCrystalChestBlockEntity.java +++ b/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedCrystalChestBlockEntity.java @@ -2,9 +2,9 @@ import com.progwml6.ironchest.common.block.IronChestsBlocks; import com.progwml6.ironchest.common.block.IronChestsTypes; -import com.progwml6.ironchest.common.block.regular.entity.AbstractIronChestBlockEntity; import com.progwml6.ironchest.common.block.entity.ICrystalChest; import com.progwml6.ironchest.common.block.entity.IronChestsBlockEntityTypes; +import com.progwml6.ironchest.common.block.regular.entity.AbstractIronChestBlockEntity; import com.progwml6.ironchest.common.inventory.IronChestMenu; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; diff --git a/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedDiamondChestBlockEntity.java b/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedDiamondChestBlockEntity.java index 263503f1..2e473406 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedDiamondChestBlockEntity.java +++ b/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedDiamondChestBlockEntity.java @@ -3,7 +3,6 @@ import com.progwml6.ironchest.common.block.IronChestsBlocks; import com.progwml6.ironchest.common.block.IronChestsTypes; import com.progwml6.ironchest.common.block.entity.IronChestsBlockEntityTypes; -import com.progwml6.ironchest.common.block.regular.entity.AbstractIronChestBlockEntity; import com.progwml6.ironchest.common.inventory.IronChestMenu; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.player.Inventory; diff --git a/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedGoldChestBlockEntity.java b/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedGoldChestBlockEntity.java index 0b93670a..f1ebea07 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedGoldChestBlockEntity.java +++ b/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedGoldChestBlockEntity.java @@ -3,7 +3,6 @@ import com.progwml6.ironchest.common.block.IronChestsBlocks; import com.progwml6.ironchest.common.block.IronChestsTypes; import com.progwml6.ironchest.common.block.entity.IronChestsBlockEntityTypes; -import com.progwml6.ironchest.common.block.regular.entity.AbstractIronChestBlockEntity; import com.progwml6.ironchest.common.inventory.IronChestMenu; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.player.Inventory; diff --git a/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedObsidianChestBlockEntity.java b/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedObsidianChestBlockEntity.java index bb3b7190..f8d178ef 100644 --- a/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedObsidianChestBlockEntity.java +++ b/src/main/java/com/progwml6/ironchest/common/block/trapped/entity/TrappedObsidianChestBlockEntity.java @@ -3,7 +3,6 @@ import com.progwml6.ironchest.common.block.IronChestsBlocks; import com.progwml6.ironchest.common.block.IronChestsTypes; import com.progwml6.ironchest.common.block.entity.IronChestsBlockEntityTypes; -import com.progwml6.ironchest.common.block.regular.entity.AbstractIronChestBlockEntity; import com.progwml6.ironchest.common.inventory.IronChestMenu; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.player.Inventory; diff --git a/src/main/java/com/progwml6/ironchest/common/data/IronChestsRecipeProvider.java b/src/main/java/com/progwml6/ironchest/common/data/IronChestsRecipeProvider.java index 4fd15a18..9b2175e6 100644 --- a/src/main/java/com/progwml6/ironchest/common/data/IronChestsRecipeProvider.java +++ b/src/main/java/com/progwml6/ironchest/common/data/IronChestsRecipeProvider.java @@ -6,23 +6,22 @@ import com.progwml6.ironchest.common.item.IronChestsUpgradeType; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.RecipeCategory; -import net.minecraft.data.recipes.ShapelessRecipeBuilder; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.data.recipes.RecipeProvider; import net.minecraft.data.recipes.ShapedRecipeBuilder; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.data.recipes.ShapelessRecipeBuilder; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.ItemLike; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Blocks; import net.minecraftforge.common.Tags; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; import net.minecraftforge.registries.ForgeRegistries; import java.util.Objects; -import java.util.function.Consumer; public class IronChestsRecipeProvider extends RecipeProvider implements IConditionBuilder { @@ -31,12 +30,12 @@ public IronChestsRecipeProvider(PackOutput output) { } @Override - protected void buildRecipes(Consumer consumer) { - this.addChestsRecipes(consumer); - this.addUpgradesRecipes(consumer); + protected void buildRecipes(RecipeOutput recipeOutput) { + this.addChestsRecipes(recipeOutput); + this.addUpgradesRecipes(recipeOutput); } - private void addChestsRecipes(Consumer consumer) { + private void addChestsRecipes(RecipeOutput recipeOutput) { String folder = "chests/"; ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, IronChestsBlocks.COPPER_CHEST.get()) @@ -46,7 +45,7 @@ private void addChestsRecipes(Consumer consumer) { .pattern("MSM") .pattern("MMM") .unlockedBy("has_copper_ingot", has(Tags.Items.INGOTS_COPPER)) - .save(consumer, location(folder + "vanilla_copper_chest")); + .save(recipeOutput, location(folder + "vanilla_copper_chest")); ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, IronChestsBlocks.IRON_CHEST.get()) .define('M', Tags.Items.INGOTS_IRON) @@ -55,7 +54,7 @@ private void addChestsRecipes(Consumer consumer) { .pattern("MSM") .pattern("MMM") .unlockedBy("has_iron_ingot", has(Tags.Items.INGOTS_IRON)) - .save(consumer, location(folder + "vanilla_iron_chest")); + .save(recipeOutput, location(folder + "vanilla_iron_chest")); ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, IronChestsBlocks.IRON_CHEST.get()) .define('M', Tags.Items.INGOTS_IRON) @@ -65,7 +64,7 @@ private void addChestsRecipes(Consumer consumer) { .pattern("GSG") .pattern("MGM") .unlockedBy("has_iron_ingot", has(Tags.Items.INGOTS_IRON)) - .save(consumer, location(folder + "copper_iron_chest")); + .save(recipeOutput, location(folder + "copper_iron_chest")); ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, IronChestsBlocks.GOLD_CHEST.get()) .define('M', Tags.Items.INGOTS_GOLD) @@ -74,7 +73,7 @@ private void addChestsRecipes(Consumer consumer) { .pattern("MSM") .pattern("MMM") .unlockedBy("has_gold_ingot", has(Tags.Items.INGOTS_GOLD)) - .save(consumer, location(folder + "iron_gold_chest")); + .save(recipeOutput, location(folder + "iron_gold_chest")); ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, IronChestsBlocks.DIAMOND_CHEST.get()) .define('M', Tags.Items.GEMS_DIAMOND) @@ -84,7 +83,7 @@ private void addChestsRecipes(Consumer consumer) { .pattern("MSM") .pattern("GGG") .unlockedBy("has_diamonds", has(Tags.Items.GEMS_DIAMOND)) - .save(consumer, location(folder + "gold_diamond_chest")); + .save(recipeOutput, location(folder + "gold_diamond_chest")); ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, IronChestsBlocks.OBSIDIAN_CHEST.get()) .define('M', Blocks.OBSIDIAN) @@ -93,7 +92,7 @@ private void addChestsRecipes(Consumer consumer) { .pattern("MSM") .pattern("MMM") .unlockedBy("has_obsidian", has(Blocks.OBSIDIAN)) - .save(consumer, location(folder + "diamond_obsidian_chest")); + .save(recipeOutput, location(folder + "diamond_obsidian_chest")); ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, IronChestsBlocks.CRYSTAL_CHEST.get()) .define('G', Tags.Items.GLASS) @@ -102,7 +101,7 @@ private void addChestsRecipes(Consumer consumer) { .pattern("GSG") .pattern("GGG") .unlockedBy("has_glass", has(Tags.Items.GLASS)) - .save(consumer, location(folder + "diamond_crystal_chest")); + .save(recipeOutput, location(folder + "diamond_crystal_chest")); ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, IronChestsBlocks.DIRT_CHEST.get()) .define('M', Ingredient.of(Blocks.DIRT, Blocks.COARSE_DIRT, Blocks.PODZOL)) @@ -111,52 +110,52 @@ private void addChestsRecipes(Consumer consumer) { .pattern("MSM") .pattern("MMM") .unlockedBy("has_iron_ingot", has(Blocks.DIRT)) - .save(consumer, location(folder + "vanilla_dirt_chest")); + .save(recipeOutput, location(folder + "vanilla_dirt_chest")); ShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, IronChestsBlocks.TRAPPED_IRON_CHEST.get()) .requires(IronChestsBlocks.IRON_CHEST.get()) .requires(Blocks.TRIPWIRE_HOOK) .unlockedBy("has_tripwire_hook", has(Blocks.TRIPWIRE_HOOK)) - .save(consumer, location(folder + "trapped_iron_chest")); + .save(recipeOutput, location(folder + "trapped_iron_chest")); ShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, IronChestsBlocks.TRAPPED_GOLD_CHEST.get()) .requires(IronChestsBlocks.GOLD_CHEST.get()) .requires(Blocks.TRIPWIRE_HOOK) .unlockedBy("has_tripwire_hook", has(Blocks.TRIPWIRE_HOOK)) - .save(consumer, location(folder + "trapped_gold_chest")); + .save(recipeOutput, location(folder + "trapped_gold_chest")); ShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, IronChestsBlocks.TRAPPED_DIAMOND_CHEST.get()) .requires(IronChestsBlocks.DIAMOND_CHEST.get()) .requires(Blocks.TRIPWIRE_HOOK) .unlockedBy("has_tripwire_hook", has(Blocks.TRIPWIRE_HOOK)) - .save(consumer, location(folder + "trapped_diamond_chest")); + .save(recipeOutput, location(folder + "trapped_diamond_chest")); ShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, IronChestsBlocks.TRAPPED_COPPER_CHEST.get()) .requires(IronChestsBlocks.COPPER_CHEST.get()) .requires(Blocks.TRIPWIRE_HOOK) .unlockedBy("has_tripwire_hook", has(Blocks.TRIPWIRE_HOOK)) - .save(consumer, location(folder + "trapped_copper_chest")); + .save(recipeOutput, location(folder + "trapped_copper_chest")); ShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, IronChestsBlocks.TRAPPED_CRYSTAL_CHEST.get()) .requires(IronChestsBlocks.CRYSTAL_CHEST.get()) .requires(Blocks.TRIPWIRE_HOOK) .unlockedBy("has_tripwire_hook", has(Blocks.TRIPWIRE_HOOK)) - .save(consumer, location(folder + "trapped_crystal_chest")); + .save(recipeOutput, location(folder + "trapped_crystal_chest")); ShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, IronChestsBlocks.TRAPPED_OBSIDIAN_CHEST.get()) .requires(IronChestsBlocks.OBSIDIAN_CHEST.get()) .requires(Blocks.TRIPWIRE_HOOK) .unlockedBy("has_tripwire_hook", has(Blocks.TRIPWIRE_HOOK)) - .save(consumer, location(folder + "trapped_obsidian_chest")); + .save(recipeOutput, location(folder + "trapped_obsidian_chest")); ShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, IronChestsBlocks.TRAPPED_DIRT_CHEST.get()) .requires(IronChestsBlocks.DIRT_CHEST.get()) .requires(Blocks.TRIPWIRE_HOOK) .unlockedBy("has_tripwire_hook", has(Blocks.TRIPWIRE_HOOK)) - .save(consumer, location(folder + "trapped_dirt_chest")); + .save(recipeOutput, location(folder + "trapped_dirt_chest")); } - private void addUpgradesRecipes(Consumer consumer) { + private void addUpgradesRecipes(RecipeOutput recipeOutput) { String folder = "upgrades/"; ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, IronChestsItems.UPGRADES.get(IronChestsUpgradeType.WOOD_TO_COPPER).get()) @@ -166,7 +165,7 @@ private void addUpgradesRecipes(Consumer consumer) { .pattern("MPM") .pattern("MMM") .unlockedBy("has_copper_ingot", has(Tags.Items.INGOTS_COPPER)) - .save(consumer, prefix(IronChestsItems.UPGRADES.get(IronChestsUpgradeType.WOOD_TO_COPPER).get(), folder)); + .save(recipeOutput, prefix(IronChestsItems.UPGRADES.get(IronChestsUpgradeType.WOOD_TO_COPPER).get(), folder)); ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, IronChestsItems.UPGRADES.get(IronChestsUpgradeType.WOOD_TO_IRON).get()) .define('M', Tags.Items.INGOTS_IRON) @@ -175,7 +174,7 @@ private void addUpgradesRecipes(Consumer consumer) { .pattern("MPM") .pattern("MMM") .unlockedBy("has_iron_ingot", has(Tags.Items.INGOTS_IRON)) - .save(consumer, prefix(IronChestsItems.UPGRADES.get(IronChestsUpgradeType.WOOD_TO_IRON).get(), folder)); + .save(recipeOutput, prefix(IronChestsItems.UPGRADES.get(IronChestsUpgradeType.WOOD_TO_IRON).get(), folder)); ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, IronChestsItems.UPGRADES.get(IronChestsUpgradeType.COPPER_TO_IRON).get()) .define('I', Tags.Items.INGOTS_IRON) @@ -185,7 +184,7 @@ private void addUpgradesRecipes(Consumer consumer) { .pattern("GCG") .pattern("IGI") .unlockedBy("has_iron_ingot", has(Tags.Items.INGOTS_IRON)) - .save(consumer, prefix(IronChestsItems.UPGRADES.get(IronChestsUpgradeType.COPPER_TO_IRON).get(), folder)); + .save(recipeOutput, prefix(IronChestsItems.UPGRADES.get(IronChestsUpgradeType.COPPER_TO_IRON).get(), folder)); ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, IronChestsItems.UPGRADES.get(IronChestsUpgradeType.IRON_TO_GOLD).get()) .define('I', Tags.Items.INGOTS_IRON) @@ -194,7 +193,7 @@ private void addUpgradesRecipes(Consumer consumer) { .pattern("GIG") .pattern("GGG") .unlockedBy("has_iron_ingot", has(Tags.Items.INGOTS_IRON)) - .save(consumer, prefix(IronChestsItems.UPGRADES.get(IronChestsUpgradeType.IRON_TO_GOLD).get(), folder)); + .save(recipeOutput, prefix(IronChestsItems.UPGRADES.get(IronChestsUpgradeType.IRON_TO_GOLD).get(), folder)); ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, IronChestsItems.UPGRADES.get(IronChestsUpgradeType.GOLD_TO_DIAMOND).get()) .define('M', Tags.Items.GEMS_DIAMOND) @@ -204,7 +203,7 @@ private void addUpgradesRecipes(Consumer consumer) { .pattern("MSM") .pattern("GGG") .unlockedBy("has_glass", has(Tags.Items.GLASS)) - .save(consumer, prefix(IronChestsItems.UPGRADES.get(IronChestsUpgradeType.GOLD_TO_DIAMOND).get(), folder)); + .save(recipeOutput, prefix(IronChestsItems.UPGRADES.get(IronChestsUpgradeType.GOLD_TO_DIAMOND).get(), folder)); ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, IronChestsItems.UPGRADES.get(IronChestsUpgradeType.DIAMOND_TO_OBSIDIAN).get()) .define('M', Blocks.OBSIDIAN) @@ -213,7 +212,7 @@ private void addUpgradesRecipes(Consumer consumer) { .pattern("MGM") .pattern("MMM") .unlockedBy("has_glass", has(Tags.Items.GLASS)) - .save(consumer, prefix(IronChestsItems.UPGRADES.get(IronChestsUpgradeType.DIAMOND_TO_OBSIDIAN).get(), folder)); + .save(recipeOutput, prefix(IronChestsItems.UPGRADES.get(IronChestsUpgradeType.DIAMOND_TO_OBSIDIAN).get(), folder)); ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, IronChestsItems.UPGRADES.get(IronChestsUpgradeType.DIAMOND_TO_CRYSTAL).get()) .define('M', Blocks.OBSIDIAN) @@ -222,7 +221,7 @@ private void addUpgradesRecipes(Consumer consumer) { .pattern("GMG") .pattern("GGG") .unlockedBy("has_glass", has(Tags.Items.GLASS)) - .save(consumer, prefix(IronChestsItems.UPGRADES.get(IronChestsUpgradeType.DIAMOND_TO_CRYSTAL).get(), folder)); + .save(recipeOutput, prefix(IronChestsItems.UPGRADES.get(IronChestsUpgradeType.DIAMOND_TO_CRYSTAL).get(), folder)); } protected static ResourceLocation prefix(ItemLike item, String prefix) { diff --git a/src/main/java/com/progwml6/ironchest/common/inventory/DirtChestSlot.java b/src/main/java/com/progwml6/ironchest/common/inventory/DirtChestSlot.java index bc4294c4..dd05d4e6 100644 --- a/src/main/java/com/progwml6/ironchest/common/inventory/DirtChestSlot.java +++ b/src/main/java/com/progwml6/ironchest/common/inventory/DirtChestSlot.java @@ -1,10 +1,10 @@ package com.progwml6.ironchest.common.inventory; -import net.minecraft.world.level.block.Blocks; import net.minecraft.world.Container; import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.Blocks; public class DirtChestSlot extends Slot { @@ -16,4 +16,4 @@ public DirtChestSlot(Container inventoryIn, int slotIndex, int xPosition, int yP public boolean mayPlace(ItemStack stack) { return stack.isEmpty() || stack.getItem() == Item.byBlock(Blocks.DIRT); } -} \ No newline at end of file +} diff --git a/src/main/java/com/progwml6/ironchest/common/inventory/IronChestsContainerTypes.java b/src/main/java/com/progwml6/ironchest/common/inventory/IronChestsContainerTypes.java index cab8da0a..f224d75f 100644 --- a/src/main/java/com/progwml6/ironchest/common/inventory/IronChestsContainerTypes.java +++ b/src/main/java/com/progwml6/ironchest/common/inventory/IronChestsContainerTypes.java @@ -3,9 +3,9 @@ import com.progwml6.ironchest.IronChests; import net.minecraft.world.flag.FeatureFlags; import net.minecraft.world.inventory.MenuType; -import net.minecraftforge.registries.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; public class IronChestsContainerTypes { diff --git a/src/main/java/com/progwml6/ironchest/common/item/ChestUpgradeItem.java b/src/main/java/com/progwml6/ironchest/common/item/ChestUpgradeItem.java index 48e73f4e..bd6e4734 100644 --- a/src/main/java/com/progwml6/ironchest/common/item/ChestUpgradeItem.java +++ b/src/main/java/com/progwml6/ironchest/common/item/ChestUpgradeItem.java @@ -1,26 +1,26 @@ package com.progwml6.ironchest.common.item; import com.progwml6.ironchest.common.block.IronChestsBlocks; -import com.progwml6.ironchest.common.block.regular.AbstractIronChestBlock; import com.progwml6.ironchest.common.block.IronChestsTypes; +import com.progwml6.ironchest.common.block.regular.AbstractIronChestBlock; import com.progwml6.ironchest.common.block.regular.entity.AbstractIronChestBlockEntity; import com.progwml6.ironchest.common.block.trapped.entity.AbstractTrappedIronChestBlockEntity; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.TrappedChestBlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.ChestBlock; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.NonNullList; +import net.minecraft.network.chat.Component; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; -import net.minecraft.world.level.block.entity.ChestBlockEntity; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.InteractionResult; -import net.minecraft.core.Direction; -import net.minecraft.core.NonNullList; -import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.Component; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.ChestBlock; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.ChestBlockEntity; +import net.minecraft.world.level.block.entity.TrappedChestBlockEntity; +import net.minecraft.world.level.block.state.BlockState; public class ChestUpgradeItem extends Item { @@ -91,7 +91,7 @@ public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { boolean trapped = tileEntity instanceof AbstractTrappedIronChestBlockEntity; - if(trapped) { + if (trapped) { iBlockState = IronChestsTypes.get(this.type.target).get(1).defaultBlockState(); } else { iBlockState = IronChestsTypes.get(this.type.target).get(0).defaultBlockState(); @@ -129,7 +129,7 @@ public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { boolean trapped = tileEntity instanceof TrappedChestBlockEntity; - if(trapped) { + if (trapped) { iBlockState = IronChestsTypes.get(this.type.target).get(1).defaultBlockState(); } else { iBlockState = IronChestsTypes.get(this.type.target).get(0).defaultBlockState(); diff --git a/src/main/java/com/progwml6/ironchest/common/item/IronChestsItems.java b/src/main/java/com/progwml6/ironchest/common/item/IronChestsItems.java index d8aec69c..c2c5fb64 100644 --- a/src/main/java/com/progwml6/ironchest/common/item/IronChestsItems.java +++ b/src/main/java/com/progwml6/ironchest/common/item/IronChestsItems.java @@ -3,9 +3,9 @@ import com.google.common.collect.ImmutableMap; import com.progwml6.ironchest.IronChests; import net.minecraft.world.item.Item; -import net.minecraftforge.registries.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; import java.util.Arrays; import java.util.Locale; diff --git a/src/main/java/com/progwml6/ironchest/common/network/InventoryTopStacksSyncPacket.java b/src/main/java/com/progwml6/ironchest/common/network/InventoryTopStacksSyncPacket.java deleted file mode 100644 index 71d1a8fe..00000000 --- a/src/main/java/com/progwml6/ironchest/common/network/InventoryTopStacksSyncPacket.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.progwml6.ironchest.common.network; - -import com.progwml6.ironchest.common.block.entity.ICrystalChest; -import com.progwml6.ironchest.common.network.helper.IThreadsafePacket; -import net.minecraft.client.Minecraft; -import net.minecraft.world.item.ItemStack; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.core.NonNullList; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.Level; -import net.minecraftforge.network.NetworkEvent; - -public class InventoryTopStacksSyncPacket implements IThreadsafePacket { - - private final BlockPos pos; - private final NonNullList topStacks; - - public InventoryTopStacksSyncPacket(NonNullList topStacks, BlockPos pos) { - this.topStacks = topStacks; - this.pos = pos; - } - - public InventoryTopStacksSyncPacket(FriendlyByteBuf buffer) { - int size = buffer.readInt(); - NonNullList topStacks = NonNullList.withSize(size, ItemStack.EMPTY); - - for (int item = 0; item < size; item++) { - ItemStack itemStack = buffer.readItem(); - - topStacks.set(item, itemStack); - } - - this.topStacks = topStacks; - - this.pos = buffer.readBlockPos(); - } - - @Override - public void encode(FriendlyByteBuf packetBuffer) { - packetBuffer.writeInt(this.topStacks.size()); - - for (ItemStack stack : this.topStacks) { - packetBuffer.writeItem(stack); - } - - packetBuffer.writeBlockPos(this.pos); - } - - @Override - public void handleThreadsafe(NetworkEvent.Context context) { - HandleClient.handle(this); - } - - /** - * Safely runs client side only code in a method only called on client - */ - private static class HandleClient { - - private static void handle(InventoryTopStacksSyncPacket packet) { - Level world = Minecraft.getInstance().level; - - if (world != null) { - BlockEntity te = world.getBlockEntity(packet.pos); - - if (te != null) { - if (te instanceof ICrystalChest) { - ((ICrystalChest) te).receiveMessageFromServer(packet.topStacks); - - Minecraft.getInstance().levelRenderer.blockChanged(null, packet.pos, null, null, 0); - } - } - } - } - } -} diff --git a/src/main/java/com/progwml6/ironchest/common/network/IronChestNetwork.java b/src/main/java/com/progwml6/ironchest/common/network/IronChestNetwork.java index 135653b1..69784d8b 100644 --- a/src/main/java/com/progwml6/ironchest/common/network/IronChestNetwork.java +++ b/src/main/java/com/progwml6/ironchest/common/network/IronChestNetwork.java @@ -1,193 +1,28 @@ package com.progwml6.ironchest.common.network; import com.progwml6.ironchest.IronChests; -import com.progwml6.ironchest.common.network.helper.ISimplePacket; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.network.protocol.Packet; -import net.minecraft.network.FriendlyByteBuf; import net.minecraft.resources.ResourceLocation; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.level.chunk.LevelChunk; -import net.minecraft.server.level.ServerLevel; -import net.minecraftforge.common.util.FakePlayer; -import net.minecraftforge.network.NetworkDirection; -import net.minecraftforge.network.NetworkEvent; -import net.minecraftforge.network.NetworkRegistry; -import net.minecraftforge.network.PacketDistributor; -import net.minecraftforge.network.simple.SimpleChannel; - -import javax.annotation.Nullable; -import java.util.Optional; -import java.util.function.BiConsumer; -import java.util.function.Function; -import java.util.function.Supplier; +import net.minecraftforge.network.Channel; +import net.minecraftforge.network.ChannelBuilder; +import net.minecraftforge.network.SimpleChannel; public class IronChestNetwork { - private static IronChestNetwork instance = null; - - public final SimpleChannel network; - private int id = 0; - private static final String PROTOCOL_VERSION = Integer.toString(1); - - public IronChestNetwork() { - this.network = NetworkRegistry.ChannelBuilder.named(new ResourceLocation(IronChests.MOD_ID, "network")) - .clientAcceptedVersions(PROTOCOL_VERSION::equals) - .serverAcceptedVersions(PROTOCOL_VERSION::equals) - .networkProtocolVersion(() -> PROTOCOL_VERSION) - .simpleChannel(); - } - - /** - * Gets the instance of the network - */ - public static IronChestNetwork getInstance() { - if (instance == null) { - throw new IllegalStateException("Attempt to call network getInstance before network is setup"); - } + private static final int NPC_VERSION = 1; - return instance; - } + public static SimpleChannel INSTANCE; - /** - * Called during mod construction to setup the network - */ public static void setup() { - if (instance != null) { - return; - } - - instance = new IronChestNetwork(); - instance.registerPacket(InventoryTopStacksSyncPacket.class, InventoryTopStacksSyncPacket::new, NetworkDirection.PLAY_TO_CLIENT); - } - - /** - * Registers a new {@link ISimplePacket} - * - * @param clazz Packet class - * @param decoder Packet decoder, typically the constructor - * @param Packet class type - */ - public void registerPacket(Class clazz, Function decoder, @Nullable NetworkDirection direction) { - registerPacket(clazz, ISimplePacket::encode, decoder, ISimplePacket::handle, direction); - } - - /** - * Registers a new generic packet - * - * @param clazz Packet class - * @param encoder Encodes a packet to the buffer - * @param decoder Packet decoder, typically the constructor - * @param consumer Logic to handle a packet - * @param direction Network direction for validation. Pass null for no direction - * @param Packet class type - */ - public void registerPacket(Class clazz, BiConsumer encoder, Function decoder, BiConsumer> consumer, @Nullable NetworkDirection direction) { - this.network.registerMessage(this.id++, clazz, encoder, decoder, consumer, Optional.ofNullable(direction)); - } - - /* Sending packets */ - - /** - * Sends a packet to the server - * - * @param msg Packet to send - */ - public void sendToServer(Object msg) { - this.network.sendToServer(msg); - } - - /** - * Sends a packet to the given packet distributor - * - * @param target Packet target - * @param message Packet to send - */ - public void send(PacketDistributor.PacketTarget target, Object message) { - network.send(target, message); - } - - /** - * Sends a vanilla packet to the given entity - * - * @param player Player receiving the packet - * @param packet Packet - */ - public void sendVanillaPacket(Packet packet, Entity player) { - if (player instanceof ServerPlayer && ((ServerPlayer) player).connection != null) { - ((ServerPlayer) player).connection.send(packet); - } - } - - /** - * Sends a packet to a player - * - * @param msg Packet - * @param player Player to send - */ - public void sendTo(Object msg, Player player) { - if (player instanceof ServerPlayer) { - sendTo(msg, (ServerPlayer) player); - } - } - - /** - * Sends a packet to a player - * - * @param msg Packet - * @param player Player to send - */ - public void sendTo(Object msg, ServerPlayer player) { - if (!(player instanceof FakePlayer)) { - network.sendTo(msg, player.connection.connection, NetworkDirection.PLAY_TO_CLIENT); - } - } - - /** - * Sends a packet to players near a location - * - * @param msg Packet to send - * @param serverWorld World instance - * @param position Position within range - */ - public void sendToClientsAround(Object msg, ServerLevel serverWorld, BlockPos position) { - LevelChunk chunk = serverWorld.getChunkAt(position); - network.send(PacketDistributor.TRACKING_CHUNK.with(() -> chunk), msg); - } - - /** - * Sends a packet to all entities tracking the given entity - * - * @param msg Packet - * @param entity Entity to check - */ - public void sendToTrackingAndSelf(Object msg, Entity entity) { - this.network.send(PacketDistributor.TRACKING_ENTITY_AND_SELF.with(() -> entity), msg); - } - - /** - * Sends a packet to all entities tracking the given entity - * - * @param msg Packet - * @param entity Entity to check - */ - public void sendToTracking(Object msg, Entity entity) { - this.network.send(PacketDistributor.TRACKING_ENTITY.with(() -> entity), msg); - } + INSTANCE = ChannelBuilder.named(new ResourceLocation(IronChests.MOD_ID, "network")) + .networkProtocolVersion(NPC_VERSION) + .clientAcceptedVersions(Channel.VersionTest.exact(NPC_VERSION)) + .serverAcceptedVersions(Channel.VersionTest.exact(NPC_VERSION)) + .simpleChannel(); - /** - * Same as {@link #sendToClientsAround(Object, ServerLevel, BlockPos)}, but checks that the world is a level accessor - * - * @param msg Packet to send - * @param world World instance - * @param position Target position - */ - public void sendToClientsAround(Object msg, @Nullable LevelAccessor world, BlockPos position) { - if (world instanceof ServerLevel) { - sendToClientsAround(msg, (ServerLevel) world, position); - } + INSTANCE.messageBuilder(PacketTopStacksSync.class) + .encoder(PacketTopStacksSync::encode) + .decoder(PacketTopStacksSync::decode) + .consumerNetworkThread(PacketTopStacksSync::handle) + .add(); } } diff --git a/src/main/java/com/progwml6/ironchest/common/network/PacketTopStacksSync.java b/src/main/java/com/progwml6/ironchest/common/network/PacketTopStacksSync.java new file mode 100644 index 00000000..d4d2be62 --- /dev/null +++ b/src/main/java/com/progwml6/ironchest/common/network/PacketTopStacksSync.java @@ -0,0 +1,62 @@ +package com.progwml6.ironchest.common.network; + +import com.progwml6.ironchest.common.block.entity.ICrystalChest; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.BlockPos; +import net.minecraft.core.NonNullList; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraftforge.event.network.CustomPayloadEvent; + +import java.util.stream.IntStream; + +public class PacketTopStacksSync { + + private final BlockPos blockPos; + private final NonNullList topItemStacks; + + public PacketTopStacksSync(BlockPos blockPos, NonNullList topItemStacks) { + this.blockPos = blockPos; + this.topItemStacks = topItemStacks; + } + + public static void encode(PacketTopStacksSync msg, FriendlyByteBuf buf) { + buf.writeBlockPos(msg.blockPos); + buf.writeInt(msg.topItemStacks.size()); + msg.topItemStacks.forEach(buf::writeItem); + } + + public static PacketTopStacksSync decode(FriendlyByteBuf buf) { + BlockPos blockPos = buf.readBlockPos(); + int size = buf.readInt(); + NonNullList topItemStacks = NonNullList.withSize(size, ItemStack.EMPTY); + + IntStream.range(0, size).forEach(item -> { + ItemStack itemStack = buf.readItem(); + topItemStacks.set(item, itemStack); + }); + + return new PacketTopStacksSync(blockPos, topItemStacks); + } + + public static void handle(PacketTopStacksSync msg, CustomPayloadEvent.Context ctx) { + ctx.enqueueWork(() -> { + ClientLevel level = Minecraft.getInstance().level; + + if (level != null) { + BlockEntity blockEntity = level.getBlockEntity(msg.blockPos); + + if (blockEntity != null) { + if (blockEntity instanceof ICrystalChest) { + ((ICrystalChest) blockEntity).receiveMessageFromServer(msg.topItemStacks); + + Minecraft.getInstance().levelRenderer.blockChanged(null, msg.blockPos, null, null, 0); + } + } + } + }); + ctx.setPacketHandled(true); + } +} diff --git a/src/main/java/com/progwml6/ironchest/common/network/helper/ISimplePacket.java b/src/main/java/com/progwml6/ironchest/common/network/helper/ISimplePacket.java deleted file mode 100644 index 300d1dfd..00000000 --- a/src/main/java/com/progwml6/ironchest/common/network/helper/ISimplePacket.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.progwml6.ironchest.common.network.helper; - -import net.minecraft.network.FriendlyByteBuf; -import net.minecraftforge.network.NetworkEvent; - -import java.util.function.Supplier; - -/** - * Packet interface to add common methods for registration - */ -public interface ISimplePacket { - /** - * Encodes a packet for the buffer - * @param buf Buffer instance - */ - void encode(FriendlyByteBuf buf); - - /** - * Handles receiving the packet - * @param context Packet context - */ - void handle(Supplier context); -} diff --git a/src/main/java/com/progwml6/ironchest/common/network/helper/IThreadsafePacket.java b/src/main/java/com/progwml6/ironchest/common/network/helper/IThreadsafePacket.java deleted file mode 100644 index 12063f09..00000000 --- a/src/main/java/com/progwml6/ironchest/common/network/helper/IThreadsafePacket.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.progwml6.ironchest.common.network.helper; - -import net.minecraftforge.network.NetworkEvent; - -import java.util.function.Supplier; - -/** - * Packet instance that automatically wraps the logic in {@link NetworkEvent.Context#enqueueWork(Runnable)} for thread safety - */ -public interface IThreadsafePacket extends ISimplePacket { - - @Override - default void handle(Supplier supplier) { - NetworkEvent.Context context = supplier.get(); - context.enqueueWork(() -> handleThreadsafe(context)); - context.setPacketHandled(true); - } - - /** - * Handles receiving the packet on the correct thread - * Packet is automatically set to handled as well by the base logic - * - * @param context Packet context - */ - void handleThreadsafe(NetworkEvent.Context context); -} diff --git a/src/main/java/com/progwml6/ironchest/common/network/helper/package-info.java b/src/main/java/com/progwml6/ironchest/common/network/helper/package-info.java deleted file mode 100644 index 4aa5f077..00000000 --- a/src/main/java/com/progwml6/ironchest/common/network/helper/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -package com.progwml6.ironchest.common.network.helper; - -import net.minecraft.MethodsReturnNonnullByDefault; - -import javax.annotation.ParametersAreNonnullByDefault;