diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java index 1f252b397..c49967a9e 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/DoorBlockBehavior.java @@ -267,18 +267,23 @@ public class DoorBlockBehavior extends AbstractCanSurviveBlockBehavior { @Override public boolean canSurvive(Object thisBlock, Object state, Object world, Object blockPos) throws Exception { - ImmutableBlockState immutableBlockState = BukkitBlockManager.instance().getImmutableBlockState(BlockStateUtils.blockStateToId(state)); - if (immutableBlockState == null || immutableBlockState.isEmpty()) return false; - if (immutableBlockState.get(this.halfProperty) == DoubleBlockHalf.UPPER) return true; + ImmutableBlockState customBlockState = BukkitBlockManager.instance().getImmutableBlockState(BlockStateUtils.blockStateToId(state)); + if (customBlockState == null || customBlockState.isEmpty()) return false; int x = FastNMS.INSTANCE.field$Vec3i$x(blockPos); int y = FastNMS.INSTANCE.field$Vec3i$y(blockPos) - 1; int z = FastNMS.INSTANCE.field$Vec3i$z(blockPos); - Object targetPos = FastNMS.INSTANCE.constructor$BlockPos(x, y, z); - Object blockState = FastNMS.INSTANCE.method$BlockGetter$getBlockState(world, targetPos); - return (boolean) CoreReflections.method$BlockStateBase$isFaceSturdy.invoke( - blockState, world, targetPos, CoreReflections.instance$Direction$UP, - CoreReflections.instance$SupportType$FULL - ); + Object belowPos = FastNMS.INSTANCE.constructor$BlockPos(x, y, z); + Object belowState = FastNMS.INSTANCE.method$BlockGetter$getBlockState(world, belowPos); + if (customBlockState.get(this.halfProperty) == DoubleBlockHalf.UPPER) { + ImmutableBlockState belowCustomState = BukkitBlockManager.instance().getImmutableBlockState(BlockStateUtils.blockStateToId(belowState)); + if (belowCustomState == null || belowCustomState.isEmpty()) return false; + return belowCustomState.owner().value() == super.customBlock; + } else { + return (boolean) CoreReflections.method$BlockStateBase$isFaceSturdy.invoke( + belowState, world, belowPos, CoreReflections.instance$Direction$UP, + CoreReflections.instance$SupportType$FULL + ); + } } @SuppressWarnings("unchecked") diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureManager.java index e154d1e17..8042863ac 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurnitureManager.java @@ -266,12 +266,6 @@ public class BukkitFurnitureManager extends AbstractFurnitureManager { } public void handleCollisionEntityLoadOnEntitiesLoad(Entity collisionEntity) { - // faster - if (FastNMS.INSTANCE.method$CraftEntity$getHandle(collisionEntity) instanceof CollisionEntity) { - collisionEntity.remove(); - return; - } - // not a collision entity Byte flag = collisionEntity.getPersistentDataContainer().get(FURNITURE_COLLISION, PersistentDataType.BYTE); if (flag == null || flag != 1) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BlockGenerator.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BlockGenerator.java index 75c694fc3..b4dcf6a51 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BlockGenerator.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/BlockGenerator.java @@ -197,6 +197,7 @@ public final class BlockGenerator { public Object intercept(@This Object thisObj, @AllArguments Object[] args, @SuperCall Callable superMethod) { ObjectHolder holder = ((BehaviorHolder) thisObj).getBehaviorHolder(); ChainUpdateBlockIndicator indicator = (ChainUpdateBlockIndicator) thisObj; + // todo chain updater if (indicator.isNoteBlock()) { if (CoreReflections.clazz$ServerLevel.isInstance(args[levelIndex])) { startNoteBlockChain(args); diff --git a/common-files/src/main/resources/resources/default/configuration/palm_tree.yml b/common-files/src/main/resources/resources/default/configuration/palm_tree.yml index 5f4d0b5cf..ee0da60be 100644 --- a/common-files/src/main/resources/resources/default/configuration/palm_tree.yml +++ b/common-files/src/main/resources/resources/default/configuration/palm_tree.yml @@ -363,17 +363,13 @@ items: resistance: 3.0 burnable: true tags: + - minecraft:wooden_doors - minecraft:doors - minecraft:mineable/axe - - minecraft:mob_interactable_doors states: template: default:block_state/door arguments: base_block: oak_door - internal_id: - type: self_increase_int - from: 0 - to: 63 model_top_left_path: minecraft:block/custom/palm_door_top_left model_top_left_generation: parent: minecraft:block/door_top_left diff --git a/common-files/src/main/resources/resources/default/configuration/templates.yml b/common-files/src/main/resources/resources/default/configuration/templates.yml index 898d068d0..260246f60 100644 --- a/common-files/src/main/resources/resources/default/configuration/templates.yml +++ b/common-files/src/main/resources/resources/default/configuration/templates.yml @@ -1641,196 +1641,196 @@ templates#block_states: variants: facing=east,half=lower,hinge=left,open=false,powered=true: appearance: facing=east,half=lower,hinge=left,open=false - id: ${internal_id} + id: 0 facing=east,half=lower,hinge=left,open=false,powered=false: appearance: facing=east,half=lower,hinge=left,open=false - id: ${internal_id} + id: 1 facing=east,half=lower,hinge=right,open=false,powered=true: appearance: facing=east,half=lower,hinge=right,open=false - id: ${internal_id} + id: 2 facing=east,half=lower,hinge=right,open=false,powered=false: appearance: facing=east,half=lower,hinge=right,open=false - id: ${internal_id} + id: 3 facing=east,half=upper,hinge=left,open=false,powered=true: appearance: facing=east,half=upper,hinge=left,open=false - id: ${internal_id} + id: 4 facing=east,half=upper,hinge=left,open=false,powered=false: appearance: facing=east,half=upper,hinge=left,open=false - id: ${internal_id} + id: 5 facing=east,half=upper,hinge=right,open=false,powered=true: appearance: facing=east,half=upper,hinge=right,open=false - id: ${internal_id} + id: 6 facing=east,half=upper,hinge=right,open=false,powered=false: appearance: facing=east,half=upper,hinge=right,open=false - id: ${internal_id} + id: 7 facing=north,half=lower,hinge=left,open=false,powered=true: appearance: facing=north,half=lower,hinge=left,open=false - id: ${internal_id} + id: 8 facing=north,half=lower,hinge=left,open=false,powered=false: appearance: facing=north,half=lower,hinge=left,open=false - id: ${internal_id} + id: 9 facing=north,half=lower,hinge=right,open=false,powered=true: appearance: facing=north,half=lower,hinge=right,open=false - id: ${internal_id} + id: 10 facing=north,half=lower,hinge=right,open=false,powered=false: appearance: facing=north,half=lower,hinge=right,open=false - id: ${internal_id} + id: 11 facing=north,half=upper,hinge=left,open=false,powered=true: appearance: facing=north,half=upper,hinge=left,open=false - id: ${internal_id} + id: 12 facing=north,half=upper,hinge=left,open=false,powered=false: appearance: facing=north,half=upper,hinge=left,open=false - id: ${internal_id} + id: 13 facing=north,half=upper,hinge=right,open=false,powered=true: appearance: facing=north,half=upper,hinge=right,open=false - id: ${internal_id} + id: 14 facing=north,half=upper,hinge=right,open=false,powered=false: appearance: facing=north,half=upper,hinge=right,open=false - id: ${internal_id} + id: 15 facing=south,half=lower,hinge=left,open=false,powered=true: appearance: facing=south,half=lower,hinge=left,open=false - id: ${internal_id} + id: 16 facing=south,half=lower,hinge=left,open=false,powered=false: appearance: facing=south,half=lower,hinge=left,open=false - id: ${internal_id} + id: 17 facing=south,half=lower,hinge=right,open=false,powered=true: appearance: facing=south,half=lower,hinge=right,open=false - id: ${internal_id} + id: 18 facing=south,half=lower,hinge=right,open=false,powered=false: appearance: facing=south,half=lower,hinge=right,open=false - id: ${internal_id} + id: 19 facing=south,half=upper,hinge=left,open=false,powered=true: appearance: facing=south,half=upper,hinge=left,open=false - id: ${internal_id} + id: 20 facing=south,half=upper,hinge=left,open=false,powered=false: appearance: facing=south,half=upper,hinge=left,open=false - id: ${internal_id} + id: 21 facing=south,half=upper,hinge=right,open=false,powered=true: appearance: facing=south,half=upper,hinge=right,open=false - id: ${internal_id} + id: 22 facing=south,half=upper,hinge=right,open=false,powered=false: appearance: facing=south,half=upper,hinge=right,open=false - id: ${internal_id} + id: 23 facing=west,half=lower,hinge=left,open=false,powered=true: appearance: facing=west,half=lower,hinge=left,open=false - id: ${internal_id} + id: 24 facing=west,half=lower,hinge=left,open=false,powered=false: appearance: facing=west,half=lower,hinge=left,open=false - id: ${internal_id} + id: 25 facing=west,half=lower,hinge=right,open=false,powered=true: appearance: facing=west,half=lower,hinge=right,open=false - id: ${internal_id} + id: 26 facing=west,half=lower,hinge=right,open=false,powered=false: appearance: facing=west,half=lower,hinge=right,open=false - id: ${internal_id} + id: 27 facing=west,half=upper,hinge=left,open=false,powered=true: appearance: facing=west,half=upper,hinge=left,open=false - id: ${internal_id} + id: 28 facing=west,half=upper,hinge=left,open=false,powered=false: appearance: facing=west,half=upper,hinge=left,open=false - id: ${internal_id} + id: 29 facing=west,half=upper,hinge=right,open=false,powered=true: appearance: facing=west,half=upper,hinge=right,open=false - id: ${internal_id} + id: 30 facing=west,half=upper,hinge=right,open=false,powered=false: appearance: facing=west,half=upper,hinge=right,open=false - id: ${internal_id} + id: 31 facing=east,half=lower,hinge=left,open=true,powered=true: appearance: facing=east,half=lower,hinge=left,open=true - id: ${internal_id} + id: 32 facing=east,half=lower,hinge=left,open=true,powered=false: appearance: facing=east,half=lower,hinge=left,open=true - id: ${internal_id} + id: 33 facing=east,half=lower,hinge=right,open=true,powered=true: appearance: facing=east,half=lower,hinge=right,open=true - id: ${internal_id} + id: 34 facing=east,half=lower,hinge=right,open=true,powered=false: appearance: facing=east,half=lower,hinge=right,open=true - id: ${internal_id} + id: 35 facing=east,half=upper,hinge=left,open=true,powered=true: appearance: facing=east,half=upper,hinge=left,open=true - id: ${internal_id} + id: 36 facing=east,half=upper,hinge=left,open=true,powered=false: appearance: facing=east,half=upper,hinge=left,open=true - id: ${internal_id} + id: 37 facing=east,half=upper,hinge=right,open=true,powered=true: appearance: facing=east,half=upper,hinge=right,open=true - id: ${internal_id} + id: 38 facing=east,half=upper,hinge=right,open=true,powered=false: appearance: facing=east,half=upper,hinge=right,open=true - id: ${internal_id} + id: 39 facing=north,half=lower,hinge=left,open=true,powered=true: appearance: facing=north,half=lower,hinge=left,open=true - id: ${internal_id} + id: 40 facing=north,half=lower,hinge=left,open=true,powered=false: appearance: facing=north,half=lower,hinge=left,open=true - id: ${internal_id} + id: 41 facing=north,half=lower,hinge=right,open=true,powered=true: appearance: facing=north,half=lower,hinge=right,open=true - id: ${internal_id} + id: 42 facing=north,half=lower,hinge=right,open=true,powered=false: appearance: facing=north,half=lower,hinge=right,open=true - id: ${internal_id} + id: 43 facing=north,half=upper,hinge=left,open=true,powered=true: appearance: facing=north,half=upper,hinge=left,open=true - id: ${internal_id} + id: 44 facing=north,half=upper,hinge=left,open=true,powered=false: appearance: facing=north,half=upper,hinge=left,open=true - id: ${internal_id} + id: 45 facing=north,half=upper,hinge=right,open=true,powered=true: appearance: facing=north,half=upper,hinge=right,open=true - id: ${internal_id} + id: 46 facing=north,half=upper,hinge=right,open=true,powered=false: appearance: facing=north,half=upper,hinge=right,open=true - id: ${internal_id} + id: 47 facing=south,half=lower,hinge=left,open=true,powered=true: appearance: facing=south,half=lower,hinge=left,open=true - id: ${internal_id} + id: 48 facing=south,half=lower,hinge=left,open=true,powered=false: appearance: facing=south,half=lower,hinge=left,open=true - id: ${internal_id} + id: 49 facing=south,half=lower,hinge=right,open=true,powered=true: appearance: facing=south,half=lower,hinge=right,open=true - id: ${internal_id} + id: 50 facing=south,half=lower,hinge=right,open=true,powered=false: appearance: facing=south,half=lower,hinge=right,open=true - id: ${internal_id} + id: 51 facing=south,half=upper,hinge=left,open=true,powered=true: appearance: facing=south,half=upper,hinge=left,open=true - id: ${internal_id} + id: 52 facing=south,half=upper,hinge=left,open=true,powered=false: appearance: facing=south,half=upper,hinge=left,open=true - id: ${internal_id} + id: 53 facing=south,half=upper,hinge=right,open=true,powered=true: appearance: facing=south,half=upper,hinge=right,open=true - id: ${internal_id} + id: 54 facing=south,half=upper,hinge=right,open=true,powered=false: appearance: facing=south,half=upper,hinge=right,open=true - id: ${internal_id} + id: 55 facing=west,half=lower,hinge=left,open=true,powered=true: appearance: facing=west,half=lower,hinge=left,open=true - id: ${internal_id} + id: 56 facing=west,half=lower,hinge=left,open=true,powered=false: appearance: facing=west,half=lower,hinge=left,open=true - id: ${internal_id} + id: 57 facing=west,half=lower,hinge=right,open=true,powered=true: appearance: facing=west,half=lower,hinge=right,open=true - id: ${internal_id} + id: 58 facing=west,half=lower,hinge=right,open=true,powered=false: appearance: facing=west,half=lower,hinge=right,open=true - id: ${internal_id} + id: 59 facing=west,half=upper,hinge=left,open=true,powered=true: appearance: facing=west,half=upper,hinge=left,open=true - id: ${internal_id} + id: 60 facing=west,half=upper,hinge=left,open=true,powered=false: appearance: facing=west,half=upper,hinge=left,open=true - id: ${internal_id} + id: 61 facing=west,half=upper,hinge=right,open=true,powered=true: appearance: facing=west,half=upper,hinge=right,open=true - id: ${internal_id} + id: 62 facing=west,half=upper,hinge=right,open=true,powered=false: appearance: facing=west,half=upper,hinge=right,open=true - id: ${internal_id} + id: 63 # recipes templates#recipes: diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java index 14aefaab7..e03292536 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java @@ -662,7 +662,7 @@ public abstract class AbstractPackManager implements PackManager { JsonObject fontJson; try { fontJson = GsonHelper.readJsonFile(file).getAsJsonObject(); - } catch (IOException | JsonSyntaxException e) { + } catch (IOException | JsonParseException e) { TranslationManager.instance().log("warning.config.resource_pack.generation.malformatted_json", file.toAbsolutePath().toString()); return FileVisitResult.CONTINUE; } @@ -698,7 +698,7 @@ public abstract class AbstractPackManager implements PackManager { JsonObject itemJson; try { itemJson = GsonHelper.readJsonFile(file).getAsJsonObject(); - } catch (IOException | JsonSyntaxException e) { + } catch (IOException | JsonParseException e) { TranslationManager.instance().log("warning.config.resource_pack.generation.malformatted_json", file.toAbsolutePath().toString()); return FileVisitResult.CONTINUE; } @@ -723,7 +723,7 @@ public abstract class AbstractPackManager implements PackManager { JsonObject blockStateJson; try { blockStateJson = GsonHelper.readJsonFile(file).getAsJsonObject(); - } catch (IOException | JsonSyntaxException e) { + } catch (IOException | JsonParseException e) { TranslationManager.instance().log("warning.config.resource_pack.generation.malformatted_json", file.toAbsolutePath().toString()); return FileVisitResult.CONTINUE; } @@ -764,7 +764,7 @@ public abstract class AbstractPackManager implements PackManager { JsonObject jsonObject; try { jsonObject = GsonHelper.readJsonFile(modelJsonPath).getAsJsonObject(); - } catch (IOException | JsonSyntaxException e) { + } catch (IOException | JsonParseException e) { TranslationManager.instance().log("warning.config.resource_pack.generation.malformatted_json", modelJsonPath.toAbsolutePath().toString()); continue; } @@ -785,7 +785,7 @@ public abstract class AbstractPackManager implements PackManager { JsonObject jsonObject; try { jsonObject = GsonHelper.readJsonFile(modelJsonPath).getAsJsonObject(); - } catch (IOException | JsonSyntaxException e) { + } catch (IOException | JsonParseException e) { TranslationManager.instance().log("warning.config.resource_pack.generation.malformatted_json", modelJsonPath.toAbsolutePath().toString()); continue; } @@ -821,7 +821,7 @@ public abstract class AbstractPackManager implements PackManager { JsonObject jsonObject; try { jsonObject = GsonHelper.readJsonFile(modelJsonPath).getAsJsonObject(); - } catch (IOException | JsonSyntaxException e) { + } catch (IOException | JsonParseException e) { TranslationManager.instance().log("warning.config.resource_pack.generation.malformatted_json", modelJsonPath.toAbsolutePath().toString()); break label; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/GsonHelper.java b/core/src/main/java/net/momirealms/craftengine/core/util/GsonHelper.java index 6245e85d6..975fcfee0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/GsonHelper.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/GsonHelper.java @@ -38,7 +38,7 @@ public class GsonHelper { } } - public static JsonElement readJsonFile(Path path) throws IOException, JsonSyntaxException { + public static JsonElement readJsonFile(Path path) throws IOException, JsonParseException { try (BufferedReader reader = Files.newBufferedReader(path)) { return JsonParser.parseReader(reader); }