From b3af1b8e77663bd10804751b2746881c6c820705 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Sun, 10 Jan 2021 09:00:06 -0500 Subject: [PATCH] Added recipes to Shaped and Deforester charges. Also fixed bug with Living Armour that prevented it from upgrading under certain conditions. --- changelog.txt | 4 +- src/generated/resources/.cache/cache | 6 +- .../assets/bloodmagic/lang/en_us.json | 2 + .../alchemytable/flint_from_gravel.json | 3 +- .../recipes/soulforge/deforester_charge.json | 21 +++++++ .../recipes/soulforge/shaped_charge.json | 21 +++++++ .../common/data/GeneratorLanguage.java | 3 + .../common/item/ItemSentientScythe.java | 58 ++++++++++-------- .../recipe/AlchemyTableRecipeProvider.java | 2 +- .../recipe/TartaricForgeRecipeProvider.java | 3 + .../bloodmagic/core/living/LivingUtil.java | 11 +++- .../ritual/types/RitualArmourEvolve.java | 2 +- .../ritual/types/RitualUpgradeRemove.java | 2 +- .../structures/DungeonStructure.java | 1 - .../bloodmagic/tile/TileShapedExplosive.java | 2 +- .../structures/dungeon/pavilion/3x3_tnt.nbt | Bin 0 -> 15527 bytes .../structures/dungeon/pavilion/test.nbt | Bin 0 -> 289 bytes .../structures/dungeon/pavilion/test2.nbt | Bin 0 -> 287 bytes 18 files changed, 104 insertions(+), 37 deletions(-) create mode 100644 src/generated/resources/data/bloodmagic/recipes/soulforge/deforester_charge.json create mode 100644 src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge.json create mode 100644 src/main/resources/data/bloodmagic/structures/dungeon/pavilion/3x3_tnt.nbt create mode 100644 src/main/resources/data/bloodmagic/structures/dungeon/pavilion/test.nbt create mode 100644 src/main/resources/data/bloodmagic/structures/dungeon/pavilion/test2.nbt diff --git a/changelog.txt b/changelog.txt index 05b5acf3..a49f7dad 100644 --- a/changelog.txt +++ b/changelog.txt @@ -6,12 +6,14 @@ Version 3.0.4 - Experienced - Body Builder +- Fixed the two rituals involving Living Armour so that they are properly activatable using a Weak Activation Crystal. + - Fixed NPE in Blood Altar when trying to interact with the contained Fluids - Also fixed bug that prevented the Altar from accepting fluids piped in as inputs. - Fixed a client-side crash when right clicking the ground with a Lava Crystal when on a server - now properly makes a fire without consuming the client. - Added new alchemy arrays: - - Two arrays, which changes the current daylight cycle to day and night. + - Two arrays, which changes the current daylight cycle to day and night. Recipes are temp. - Fixed the JEI so that it no longer ouputs an error when loading Alchemy Array recipes without a crafting output. - Fixed crash with Actually Additions diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 124de597..acdfc8f0 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -58,7 +58,7 @@ e6d9cf699667aaa47efff37b2b033895dee29c15 assets/bloodmagic/blockstates/waterritu 42f26f715bddd16c069f9b51e3767b36477c8908 assets/bloodmagic/blockstates/woodtilepath.json 3c6ce233dae6c1307d9016406c324bbe844b4e1e assets/bloodmagic/blockstates/wornstonebrickpath.json d59655f12d1724b73b77c373fb6864fcff69db12 assets/bloodmagic/blockstates/wornstonetilepath.json -111dd088560215d453016de8c3324fa62d0f205a assets/bloodmagic/lang/en_us.json +62b19f0ba7a22f2a7b80588b82884013885dd74b assets/bloodmagic/lang/en_us.json 34445195b9f2459475cde53454bc8e37d32865d7 assets/bloodmagic/models/block/accelerationrune.json bcdbccc49d4509571be6988762ab87126275a4c8 assets/bloodmagic/models/block/airritualstone.json adf6c0b1e25451609486dc8c8cfbd9cf0f8c67f4 assets/bloodmagic/models/block/alchemicalreactionchamber.json @@ -521,7 +521,7 @@ a343604b5a75e1b3810df97d024813fb041cffb6 data/bloodmagic/recipes/alchemytable/ba f86432e8fef0d6e140e27f575063704b7e843d75 data/bloodmagic/recipes/alchemytable/bread.json e50009fa724173c2dcb4fab49b4f029039f69bf8 data/bloodmagic/recipes/alchemytable/clay_from_sand.json 96cc66cdb9c5f786eaa899e1fbdd38144e44a0fe data/bloodmagic/recipes/alchemytable/explosive_powder.json -ecd27b8222af8f0608e61cdc4278aeb6d88d14b4 data/bloodmagic/recipes/alchemytable/flint_from_gravel.json +1fa964af556af521d8eaf1a686befdd9d69c63af data/bloodmagic/recipes/alchemytable/flint_from_gravel.json aff95e4322f9e8daaffc2337964f95ab6f9d631c data/bloodmagic/recipes/alchemytable/grass_block.json 540edca1f507d366e55887b4429a9952c00f4060 data/bloodmagic/recipes/alchemytable/gunpowder.json 0657a60976678fdfbdf0b8ee2c178502520d194a data/bloodmagic/recipes/alchemytable/leather_from_flesh.json @@ -636,6 +636,7 @@ d699e777c72a5f61c4e6cdfea8705628e1c2b855 data/bloodmagic/recipes/soul_forge.json f4763a58a8f471ec1aaa997cbd36eac8c7d51a12 data/bloodmagic/recipes/soulforge/arcaneashes.json 8b64af8453c60b6b1ae55bd0dd1a68fe95e8ba19 data/bloodmagic/recipes/soulforge/commontartaricgem.json 659db62f8fb71c792b00d6409b1c9a2f1ca96048 data/bloodmagic/recipes/soulforge/corrosive_crystal_block.json +5ad148899ed46134ae0572b220736b9d38004980 data/bloodmagic/recipes/soulforge/deforester_charge.json 2c90f1da43a79e61d2b6b09c012d08f53b133264 data/bloodmagic/recipes/soulforge/demon_crucible.json bc4ad3b44720a3f7363ef53027b4aae35622e7c1 data/bloodmagic/recipes/soulforge/demon_crystallizer.json 759279a190f3bc74e162dedf0f5d311267e06fbc data/bloodmagic/recipes/soulforge/destructive_crystal_block.json @@ -660,6 +661,7 @@ a222d09abf1ea61feb684f2ac23d011c2034f526 data/bloodmagic/recipes/soulforge/reage 6b47831e5c2f3033b6706706d810fa96d8abebd6 data/bloodmagic/recipes/soulforge/sentientscythe.json 6dcced40126f950b85f868aa04c77e90b71b69f2 data/bloodmagic/recipes/soulforge/sentientshovel.json 7e281841a2953c1284d332c2bbf75097f8128241 data/bloodmagic/recipes/soulforge/sentientsword.json +dc977e9d98fcba66fbcce3f6c31a746db5ed60f5 data/bloodmagic/recipes/soulforge/shaped_charge.json c4102a1573e632d0b9f894353b0d522a51a7c65e data/bloodmagic/recipes/soulforge/steadfast_crystal_block.json 3aa852edda803a2225ebe53d2daa55bd46b0a1b9 data/bloodmagic/recipes/soulforge/vengeful_crystal_block.json d7d993bb729284a5201c164ea81fbe1d8e4e4750 data/bloodmagic/recipes/weak_activation_crystal.json diff --git a/src/generated/resources/assets/bloodmagic/lang/en_us.json b/src/generated/resources/assets/bloodmagic/lang/en_us.json index ddb3f633..831b959a 100644 --- a/src/generated/resources/assets/bloodmagic/lang/en_us.json +++ b/src/generated/resources/assets/bloodmagic/lang/en_us.json @@ -10,6 +10,7 @@ "block.bloodmagic.bloodstonebrick": "Bloodstone Brick", "block.bloodmagic.chargingrune": "Charging Rune", "block.bloodmagic.corrosivedemoncrystal": "Corrosive Crystal Cluster", + "block.bloodmagic.deforester_charge": "Deforester Charge", "block.bloodmagic.demoncrucible": "Demon Crucible", "block.bloodmagic.demoncrystallizer": "Demon Crystallizer", "block.bloodmagic.destructivedemoncrystal": "Destructive Crystal Cluster", @@ -48,6 +49,7 @@ "block.bloodmagic.ritualstone": "Ritual Stone", "block.bloodmagic.sacrificerune": "Rune of Sacrifice", "block.bloodmagic.selfsacrificerune": "Rune of Self Sacrifice", + "block.bloodmagic.shaped_charge": "Shaped Charge", "block.bloodmagic.soulforge": "Hellfire Forge", "block.bloodmagic.speedrune": "Speed Rune", "block.bloodmagic.steadfastdemoncrystal": "Steadfast Crystal Cluster", diff --git a/src/generated/resources/data/bloodmagic/recipes/alchemytable/flint_from_gravel.json b/src/generated/resources/data/bloodmagic/recipes/alchemytable/flint_from_gravel.json index cbbcce43..ffe0ce43 100644 --- a/src/generated/resources/data/bloodmagic/recipes/alchemytable/flint_from_gravel.json +++ b/src/generated/resources/data/bloodmagic/recipes/alchemytable/flint_from_gravel.json @@ -9,7 +9,8 @@ } ], "output": { - "item": "minecraft:flint" + "item": "minecraft:flint", + "count": 2 }, "syphon": 50, "ticks": 20, diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/deforester_charge.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/deforester_charge.json new file mode 100644 index 00000000..b8478f16 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/deforester_charge.json @@ -0,0 +1,21 @@ +{ + "type": "bloodmagic:soulforge", + "input0": { + "tag": "forge:cobblestone" + }, + "input1": { + "item": "minecraft:charcoal" + }, + "input2": { + "tag": "minecraft:logs" + }, + "input3": { + "tag": "minecraft:planks" + }, + "output": { + "item": "bloodmagic:deforester_charge", + "count": 8 + }, + "minimumDrain": 10.0, + "drain": 0.5 +} \ No newline at end of file diff --git a/src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge.json b/src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge.json new file mode 100644 index 00000000..b7c7fa04 --- /dev/null +++ b/src/generated/resources/data/bloodmagic/recipes/soulforge/shaped_charge.json @@ -0,0 +1,21 @@ +{ + "type": "bloodmagic:soulforge", + "input0": { + "tag": "forge:cobblestone" + }, + "input1": { + "item": "minecraft:charcoal" + }, + "input2": { + "tag": "forge:sand" + }, + "input3": { + "tag": "forge:stone" + }, + "output": { + "item": "bloodmagic:shaped_charge", + "count": 8 + }, + "minimumDrain": 10.0, + "drain": 0.5 +} \ No newline at end of file diff --git a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java index a5f6c71a..9eaf3d0c 100644 --- a/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java +++ b/src/main/java/wayoftime/bloodmagic/common/data/GeneratorLanguage.java @@ -422,6 +422,9 @@ public class GeneratorLanguage extends LanguageProvider addBlock(BloodMagicBlocks.DUNGEON_ORE, "Demonite"); + addBlock(BloodMagicBlocks.SHAPED_CHARGE, "Shaped Charge"); + addBlock(BloodMagicBlocks.DEFORESTER_CHARGE, "Deforester Charge"); + // Item names addItem(BloodMagicItems.WEAK_BLOOD_ORB, "Weak Blood Orb"); addItem(BloodMagicItems.APPRENTICE_BLOOD_ORB, "Apprentice Blood Orb"); diff --git a/src/main/java/wayoftime/bloodmagic/common/item/ItemSentientScythe.java b/src/main/java/wayoftime/bloodmagic/common/item/ItemSentientScythe.java index e6d3810d..e4775974 100644 --- a/src/main/java/wayoftime/bloodmagic/common/item/ItemSentientScythe.java +++ b/src/main/java/wayoftime/bloodmagic/common/item/ItemSentientScythe.java @@ -518,38 +518,42 @@ public class ItemSentientScythe extends HoeItem implements IDemonWillWeapon, IMu @Override public boolean hitEntity(ItemStack stack, LivingEntity target, LivingEntity attacker) { - if (super.hitEntity(stack, target, attacker)) + stack.damageItem(1, attacker, (entity) -> { + entity.sendBreakAnimation(EquipmentSlotType.MAINHAND); + }); + +// if (super.hitEntity(stack, target, attacker)) +// { + if (attacker instanceof PlayerEntity) { - if (attacker instanceof PlayerEntity) + UUID id = attacker.getUniqueID(); + + PlayerEntity attackerPlayer = (PlayerEntity) attacker; + +// System.out.println("Hit map: " + hitMap.containsKey(id)); + + if (hitMap.containsKey(id) && hitMap.get(id)) { - UUID id = attacker.getUniqueID(); - - PlayerEntity attackerPlayer = (PlayerEntity) attacker; - - System.out.println("Hit map: " + hitMap.containsKey(id)); - - if (hitMap.containsKey(id) && hitMap.get(id)) - { - EnumDemonWillType type = this.getCurrentType(stack); - double will = PlayerDemonWillHandler.getTotalDemonWill(type, attackerPlayer); - int willBracket = this.getLevel(stack, will); - applyEffectToEntity(type, willBracket, target, attackerPlayer); - } else - { - this.recalculatePowers(stack, attackerPlayer.getEntityWorld(), attackerPlayer); - EnumDemonWillType type = this.getCurrentType(stack); - double will = PlayerDemonWillHandler.getTotalDemonWill(type, attackerPlayer); - int willBracket = this.getLevel(stack, will); - hitMap.put(id, true); - this.attackEntitiesInAreaExcludingEntity(stack, attackerPlayer, type, willBracket, target); - hitMap.remove(id); - } + EnumDemonWillType type = this.getCurrentType(stack); + double will = PlayerDemonWillHandler.getTotalDemonWill(type, attackerPlayer); + int willBracket = this.getLevel(stack, will); + applyEffectToEntity(type, willBracket, target, attackerPlayer); + } else + { + this.recalculatePowers(stack, attackerPlayer.getEntityWorld(), attackerPlayer); + EnumDemonWillType type = this.getCurrentType(stack); + double will = PlayerDemonWillHandler.getTotalDemonWill(type, attackerPlayer); + int willBracket = this.getLevel(stack, will); + hitMap.put(id, true); + this.attackEntitiesInAreaExcludingEntity(stack, attackerPlayer, type, willBracket, target); + hitMap.remove(id); } - - return true; } - return false; + return true; +// } + +// return false; } @Override diff --git a/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyTableRecipeProvider.java b/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyTableRecipeProvider.java index 44e5d0f0..c9bea4bd 100644 --- a/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyTableRecipeProvider.java +++ b/src/main/java/wayoftime/bloodmagic/common/recipe/AlchemyTableRecipeProvider.java @@ -21,7 +21,7 @@ public class AlchemyTableRecipeProvider implements ISubRecipeProvider { String basePath = "alchemytable/"; AlchemyTableRecipeBuilder.alchemyTable(new ItemStack(Items.STRING, 4), 100, 100, 0).addIngredient(Ingredient.fromTag(ItemTags.WOOL)).addIngredient(Ingredient.fromItems(Items.FLINT)).build(consumer, BloodMagic.rl(basePath + "string")); - AlchemyTableRecipeBuilder.alchemyTable(new ItemStack(Items.FLINT), 50, 20, 0).addIngredient(Ingredient.fromItems(Items.GRAVEL)).addIngredient(Ingredient.fromItems(Items.FLINT)).build(consumer, BloodMagic.rl(basePath + "flint_from_gravel")); + AlchemyTableRecipeBuilder.alchemyTable(new ItemStack(Items.FLINT, 2), 50, 20, 0).addIngredient(Ingredient.fromItems(Items.GRAVEL)).addIngredient(Ingredient.fromItems(Items.FLINT)).build(consumer, BloodMagic.rl(basePath + "flint_from_gravel")); AlchemyTableRecipeBuilder.alchemyTable(new ItemStack(Items.LEATHER, 4), 100, 200, 1).addIngredient(Ingredient.fromItems(Items.ROTTEN_FLESH)).addIngredient(Ingredient.fromItems(Items.ROTTEN_FLESH)).addIngredient(Ingredient.fromItems(Items.ROTTEN_FLESH)).addIngredient(Ingredient.fromItems(Items.ROTTEN_FLESH)).addIngredient(Ingredient.fromItems(Items.FLINT)).addIngredient(Ingredient.fromItems(Items.WATER_BUCKET)).build(consumer, BloodMagic.rl(basePath + "leather_from_flesh")); AlchemyTableRecipeBuilder.alchemyTable(new ItemStack(BloodMagicItems.EXPLOSIVE_POWDER.get()), 500, 200, 1).addIngredient(Ingredient.fromTag(Tags.Items.GUNPOWDER)).addIngredient(Ingredient.fromTag(Tags.Items.GUNPOWDER)).addIngredient(Ingredient.fromTag(BloodMagicTags.DUST_COAL)).build(consumer, BloodMagic.rl(basePath + "explosive_powder")); AlchemyTableRecipeBuilder.alchemyTable(new ItemStack(Items.BREAD), 100, 200, 1).addIngredient(Ingredient.fromTag(Tags.Items.CROPS_WHEAT)).addIngredient(Ingredient.fromItems(Items.SUGAR)).build(consumer, BloodMagic.rl(basePath + "bread")); diff --git a/src/main/java/wayoftime/bloodmagic/common/recipe/TartaricForgeRecipeProvider.java b/src/main/java/wayoftime/bloodmagic/common/recipe/TartaricForgeRecipeProvider.java index d7f6c862..70868e4f 100644 --- a/src/main/java/wayoftime/bloodmagic/common/recipe/TartaricForgeRecipeProvider.java +++ b/src/main/java/wayoftime/bloodmagic/common/recipe/TartaricForgeRecipeProvider.java @@ -55,6 +55,9 @@ public class TartaricForgeRecipeProvider implements ISubRecipeProvider TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicBlocks.DESTRUCTIVE_CRYSTAL_BLOCK.get()), 1200, 100, Ingredient.fromItems(BloodMagicItems.DESTRUCTIVE_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.DESTRUCTIVE_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.DESTRUCTIVE_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.DESTRUCTIVE_CRYSTAL.get())).build(consumer, BloodMagic.rl(basePath + "destructive_crystal_block")); TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicBlocks.VENGEFUL_CRYSTAL_BLOCK.get()), 1200, 100, Ingredient.fromItems(BloodMagicItems.VENGEFUL_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.VENGEFUL_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.VENGEFUL_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.VENGEFUL_CRYSTAL.get())).build(consumer, BloodMagic.rl(basePath + "vengeful_crystal_block")); TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicBlocks.STEADFAST_CRYSTAL_BLOCK.get()), 1200, 100, Ingredient.fromItems(BloodMagicItems.STEADFAST_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.STEADFAST_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.STEADFAST_CRYSTAL.get()), Ingredient.fromItems(BloodMagicItems.STEADFAST_CRYSTAL.get())).build(consumer, BloodMagic.rl(basePath + "steadfast_crystal_block")); + + TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicBlocks.SHAPED_CHARGE.get(), 8), 10, 0.5, Ingredient.fromTag(Tags.Items.COBBLESTONE), Ingredient.fromItems(Items.CHARCOAL), Ingredient.fromTag(Tags.Items.SAND), Ingredient.fromTag(Tags.Items.STONE)).build(consumer, BloodMagic.rl(basePath + "shaped_charge")); + TartaricForgeRecipeBuilder.tartaricForge(new ItemStack(BloodMagicBlocks.DEFORESTER_CHARGE.get(), 8), 10, 0.5, Ingredient.fromTag(Tags.Items.COBBLESTONE), Ingredient.fromItems(Items.CHARCOAL), Ingredient.fromTag(ItemTags.LOGS), Ingredient.fromTag(ItemTags.PLANKS)).build(consumer, BloodMagic.rl(basePath + "deforester_charge")); } } diff --git a/src/main/java/wayoftime/bloodmagic/core/living/LivingUtil.java b/src/main/java/wayoftime/bloodmagic/core/living/LivingUtil.java index 9df87d2a..a9824c5a 100644 --- a/src/main/java/wayoftime/bloodmagic/core/living/LivingUtil.java +++ b/src/main/java/wayoftime/bloodmagic/core/living/LivingUtil.java @@ -50,14 +50,23 @@ public class LivingUtil if (currentPoints >= stats.getMaxPoints()) return stats; + int currentPointCost = upgrade.getLevelCost(upgrade.getLevel((int) currentExperience)); int nextPointCost = upgrade.getLevelCost(upgrade.getLevel((int) currentExperience) + 1); + +// System.out.println("Current point cost: " + currentPointCost + ", Next point cost: " + nextPointCost); // If there's no more levels in this upgrade, we don't want to add experience if (nextPointCost == -1) return stats; + int pointDif = nextPointCost - currentPointCost; + if (pointDif < 0) + { + return stats; + } + // If applying this new level will go over our cap, we don't want to add // experience - if (currentPoints + nextPointCost > stats.getMaxPoints()) + if (currentPoints + pointDif > stats.getMaxPoints()) return stats; } diff --git a/src/main/java/wayoftime/bloodmagic/ritual/types/RitualArmourEvolve.java b/src/main/java/wayoftime/bloodmagic/ritual/types/RitualArmourEvolve.java index c850b3d2..477f6704 100644 --- a/src/main/java/wayoftime/bloodmagic/ritual/types/RitualArmourEvolve.java +++ b/src/main/java/wayoftime/bloodmagic/ritual/types/RitualArmourEvolve.java @@ -27,7 +27,7 @@ public class RitualArmourEvolve extends Ritual public RitualArmourEvolve() { - super("ritualArmourEvolve", 2, 50000, "ritual." + BloodMagic.MODID + ".armourEvolveRitual"); + super("ritualArmourEvolve", 0, 50000, "ritual." + BloodMagic.MODID + ".armourEvolveRitual"); addBlockRange(CHECK_RANGE, new AreaDescriptor.Rectangle(new BlockPos(0, 1, 0), 1, 2, 1)); } diff --git a/src/main/java/wayoftime/bloodmagic/ritual/types/RitualUpgradeRemove.java b/src/main/java/wayoftime/bloodmagic/ritual/types/RitualUpgradeRemove.java index 3d283ead..a0b15e0a 100644 --- a/src/main/java/wayoftime/bloodmagic/ritual/types/RitualUpgradeRemove.java +++ b/src/main/java/wayoftime/bloodmagic/ritual/types/RitualUpgradeRemove.java @@ -33,7 +33,7 @@ public class RitualUpgradeRemove extends Ritual public RitualUpgradeRemove() { - super("ritualUpgradeRemove", 2, 25000, "ritual." + BloodMagic.MODID + ".upgradeRemoveRitual"); + super("ritualUpgradeRemove", 0, 25000, "ritual." + BloodMagic.MODID + ".upgradeRemoveRitual"); addBlockRange(CHECK_RANGE, new AreaDescriptor.Rectangle(new BlockPos(0, 1, 0), 1, 2, 1)); } diff --git a/src/main/java/wayoftime/bloodmagic/structures/DungeonStructure.java b/src/main/java/wayoftime/bloodmagic/structures/DungeonStructure.java index d041243c..4ecb12d4 100644 --- a/src/main/java/wayoftime/bloodmagic/structures/DungeonStructure.java +++ b/src/main/java/wayoftime/bloodmagic/structures/DungeonStructure.java @@ -22,7 +22,6 @@ public class DungeonStructure public boolean placeStructureAtPosition(Random rand, PlacementSettings settings, ServerWorld world, BlockPos pos) { - if (pos == null) return false; diff --git a/src/main/java/wayoftime/bloodmagic/tile/TileShapedExplosive.java b/src/main/java/wayoftime/bloodmagic/tile/TileShapedExplosive.java index 5f9809a9..b11a1524 100644 --- a/src/main/java/wayoftime/bloodmagic/tile/TileShapedExplosive.java +++ b/src/main/java/wayoftime/bloodmagic/tile/TileShapedExplosive.java @@ -122,7 +122,7 @@ public class TileShapedExplosive extends TileTicking BlockState blockstate = this.world.getBlockState(blockpos); Block block = blockstate.getBlock(); - if (!blockstate.isAir(this.world, blockpos)) + if (!blockstate.isAir(this.world, blockpos) && blockstate.getBlockHardness(world, blockpos) != -1.0F) { BlockPos blockpos1 = blockpos.toImmutable(); // this.world.getProfiler().startSection("explosion_blocks"); diff --git a/src/main/resources/data/bloodmagic/structures/dungeon/pavilion/3x3_tnt.nbt b/src/main/resources/data/bloodmagic/structures/dungeon/pavilion/3x3_tnt.nbt new file mode 100644 index 0000000000000000000000000000000000000000..b3d28725d983135673bad1e3ed752b85201bed78 GIT binary patch literal 15527 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/bloodmagic/structures/dungeon/pavilion/test.nbt b/src/main/resources/data/bloodmagic/structures/dungeon/pavilion/test.nbt new file mode 100644 index 0000000000000000000000000000000000000000..2883b7ac602c0bfcfde66d7db387a397b0184cbe GIT binary patch literal 289 zcmV++0p9)}iwFP!000000F6??P69CyeaixNmza1k@!&@oube#_PhQEe49j4*ZQ4N- zzus`Q#En-=m=`7C*bRWsPdzQDGm;wL*l`W83 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/bloodmagic/structures/dungeon/pavilion/test2.nbt b/src/main/resources/data/bloodmagic/structures/dungeon/pavilion/test2.nbt new file mode 100644 index 0000000000000000000000000000000000000000..609315523a5ca7fdd7698d9a59f9028ad7ce2554 GIT binary patch literal 287 zcmV+)0pR{0iwFP!000000F9DQPs1<_#b4KLq@9ouLgI74ac9nm6W7V@yyB51RpJSW zPfsG~HncxlBp(w0{PG;91}coBd~*pP$7qNOhMkHEN90vu+F0Ly#yV|Gg|hc?DB7(O zlc=QpS8<9dE-=LvI>i+_7`OwbIKvbdnBt^PjnXx0Fj;$X3KP7w)L1qcJK8YrHsZJq zw9