From 1fc86ca42d105fc1f86f814c3307aed0a21c99cf Mon Sep 17 00:00:00 2001 From: Christian Mesh Date: Thu, 21 Dec 2023 21:01:56 -0500 Subject: [PATCH 1/3] Re-implement Block Entity Collision interfaces --- .../java/cam72cam/mod/block/BlockType.java | 7 ++++++- .../cam72cam/mod/block/IBlockTypeBlock.java | 5 +++++ .../mod/world/IBlockEntityCollision.java | 8 ++++++++ .../mod/world/IConditionalCollision.java | 3 ++- src/main/java/cam72cam/mod/world/World.java | 19 +++++++++++++++---- 5 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 src/main/java/cam72cam/mod/block/IBlockTypeBlock.java create mode 100644 src/main/java/cam72cam/mod/world/IBlockEntityCollision.java diff --git a/src/main/java/cam72cam/mod/block/BlockType.java b/src/main/java/cam72cam/mod/block/BlockType.java index 14a1809a..cfd4a4cd 100644 --- a/src/main/java/cam72cam/mod/block/BlockType.java +++ b/src/main/java/cam72cam/mod/block/BlockType.java @@ -11,6 +11,7 @@ import cam72cam.mod.util.Facing; import cam72cam.mod.util.SingleCache; import cam72cam.mod.world.World; +import net.minecraft.block.Block; import net.minecraft.block.state.BlockFaceShape; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; @@ -140,7 +141,11 @@ public int getWeakPower(World world, Vec3i vec3i, Facing from) { * BlockInternal is an internal class that should only be extended when you need to implement * an interface. */ - protected class BlockInternal extends net.minecraft.block.Block { + protected class BlockInternal extends net.minecraft.block.Block implements IBlockTypeBlock { + public BlockType getType() { + return BlockType.this; + } + public BlockInternal() { super(BlockType.this.getMaterial().internal); BlockType type = BlockType.this; diff --git a/src/main/java/cam72cam/mod/block/IBlockTypeBlock.java b/src/main/java/cam72cam/mod/block/IBlockTypeBlock.java new file mode 100644 index 00000000..f53fcaa1 --- /dev/null +++ b/src/main/java/cam72cam/mod/block/IBlockTypeBlock.java @@ -0,0 +1,5 @@ +package cam72cam.mod.block; + +public interface IBlockTypeBlock { + BlockType getType(); +} diff --git a/src/main/java/cam72cam/mod/world/IBlockEntityCollision.java b/src/main/java/cam72cam/mod/world/IBlockEntityCollision.java new file mode 100644 index 00000000..8536ab83 --- /dev/null +++ b/src/main/java/cam72cam/mod/world/IBlockEntityCollision.java @@ -0,0 +1,8 @@ +package cam72cam.mod.world; + +import cam72cam.mod.entity.Entity; +import cam72cam.mod.math.Vec3i; + +public interface IBlockEntityCollision { + boolean canCollide(World world, Vec3i pos, Entity entity); +} diff --git a/src/main/java/cam72cam/mod/world/IConditionalCollision.java b/src/main/java/cam72cam/mod/world/IConditionalCollision.java index d4fb6f24..4890023d 100644 --- a/src/main/java/cam72cam/mod/world/IConditionalCollision.java +++ b/src/main/java/cam72cam/mod/world/IConditionalCollision.java @@ -1,6 +1,7 @@ package cam72cam.mod.world; import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.Entity; import net.minecraft.util.DamageSource; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -21,6 +22,6 @@ public interface IConditionalCollision { * @param damageSource Damage source that would be used to collide with the block. * @return Whether or not to calculate actual collision. */ - boolean canCollide(World world, BlockPos pos, IBlockState state, DamageSource damageSource); + boolean canCollide(World world, BlockPos pos, IBlockState state, Entity entity); } diff --git a/src/main/java/cam72cam/mod/world/World.java b/src/main/java/cam72cam/mod/world/World.java index 97e20f16..f6bcb1d0 100644 --- a/src/main/java/cam72cam/mod/world/World.java +++ b/src/main/java/cam72cam/mod/world/World.java @@ -4,6 +4,7 @@ import cam72cam.mod.ModCore; import cam72cam.mod.block.BlockEntity; import cam72cam.mod.block.BlockType; +import cam72cam.mod.block.IBlockTypeBlock; import cam72cam.mod.block.tile.TileEntity; import cam72cam.mod.entity.*; import cam72cam.mod.entity.boundingbox.BoundingBox; @@ -628,10 +629,20 @@ public void setBlock(Vec3i pos, BlockInfo info) { } /** Opt in collision overriding */ - public boolean canEntityCollideWith(Vec3i bp, String damageType) { - Block block = internal.getBlockState(bp.internal()).getBlock(); - return ! (block instanceof IConditionalCollision) || - ((IConditionalCollision) block).canCollide(internal, bp.internal(), internal.getBlockState(bp.internal()), new DamageSource(damageType)); + public boolean canEntityCollideWith(Vec3i bp, Entity entity) { + IBlockState state = internal.getBlockState(bp.internal()); + Block block = state.getBlock(); + + if (block instanceof IConditionalCollision && ((IConditionalCollision) block).canCollide(internal, bp.internal(), state, entity.internal)) + return true; + + if (block instanceof IBlockTypeBlock) { + BlockType type = ((IBlockTypeBlock) block).getType(); + if (type instanceof IBlockEntityCollision) { + return ((IBlockEntityCollision) type).canCollide(this, bp, entity); + } + } + return false; } /** Spawn a particle */ From f1573ee845f43f3d619ca6f2a1a873541efd028b Mon Sep 17 00:00:00 2001 From: Christian Mesh Date: Thu, 21 Dec 2023 21:06:52 -0500 Subject: [PATCH 2/3] Add 1.12.2 mcmod.info --- src/main/resources/mcmod.info | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/main/resources/mcmod.info diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info new file mode 100644 index 00000000..38bc48f5 --- /dev/null +++ b/src/main/resources/mcmod.info @@ -0,0 +1,16 @@ +[ +{ + "modid": "universalmodcore", + "name": "UniversalModCore", + "description": "Universal Mod Core", + "version": "1.2.0", + "mcversion": "1.12.2", + "url": "", + "updateUrl": "", + "authorList": [], + "credits": "", + "logoFile": "", + "screenshots": [], + "dependencies": [] +} +] From 3fc7f9dc531eedadb686b77c5a31c3e6424b7a0a Mon Sep 17 00:00:00 2001 From: Christian Mesh Date: Thu, 21 Dec 2023 21:09:10 -0500 Subject: [PATCH 3/3] Release 1.2.1 --- build.gradle | 2 +- src/main/java/cam72cam/mod/ModCore.java | 2 +- src/main/resources/mcmod.info | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 94bb9450..0f5ba26a 100644 --- a/build.gradle +++ b/build.gradle @@ -21,7 +21,7 @@ repositories { } } -String umcVersion = "1.2.0" +String umcVersion = "1.2.1" if (!"release".equalsIgnoreCase(System.getProperty("target"))) { try { umcVersion += "-" + 'git rev-parse --verify --short=7 HEAD'.execute().text.trim() diff --git a/src/main/java/cam72cam/mod/ModCore.java b/src/main/java/cam72cam/mod/ModCore.java index 2c570b1c..c9d47846 100644 --- a/src/main/java/cam72cam/mod/ModCore.java +++ b/src/main/java/cam72cam/mod/ModCore.java @@ -49,7 +49,7 @@ public class ModCore { public static final String MODID = "universalmodcore"; public static final String NAME = "UniversalModCore"; - public static final String VERSION = "1.2.0"; + public static final String VERSION = "1.2.1"; public static ModCore instance; private List mods = new ArrayList<>(); diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 38bc48f5..bbd1cc99 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "universalmodcore", "name": "UniversalModCore", "description": "Universal Mod Core", - "version": "1.2.0", + "version": "1.2.1", "mcversion": "1.12.2", "url": "", "updateUrl": "",