From cf268a933e1b7fae809d66809616d712e57a26af Mon Sep 17 00:00:00 2001 From: PssbleTrngle Date: Wed, 18 Nov 2020 02:28:25 +0100 Subject: [PATCH 1/5] Working on spawn powder - Fixed living torch particles - Added slimes & magma cubes to blacklist because they do not extends `MonsterEntity` - Created `spawn_powder`, a placeable powder bypassing braziers (WIP) --- .../possible_triangle/brazier/Content.java | 3 ++ .../brazier/block/BrazierBlock.java | 10 +++++ .../brazier/block/LazyWallTorchBlock.java | 8 ++-- .../brazier/block/SpawnPowder.java | 24 ++++++++++++ .../brazier/config/BrazierServerConfig.java | 7 ++++ .../brazier/data/Blocks.java | 11 ++++++ .../possible_triangle/brazier/data/Items.java | 5 +++ .../resources/assets/brazier/Brazier.cubik | Bin 0 -> 3821 bytes .../brazier/blockstates/spawn_powder.json | 7 ++++ .../resources/assets/brazier/lang/en_us.json | 1 + .../brazier/models/block/spawn_powder.json | 36 ++++++++++++++++++ .../brazier/models/item/spawn_powder.json | 6 +++ .../brazier/textures/block/spawn_powder.png | Bin 0 -> 1111 bytes .../brazier/textures/item/spawn_powder.png | Bin 0 -> 1339 bytes .../tags/entity_types/brazier_blacklist.json | 3 ++ .../tags/entity_types/brazier_whitelist.json | 3 +- 16 files changed, 119 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/possible_triangle/brazier/block/SpawnPowder.java create mode 100644 src/main/resources/assets/brazier/Brazier.cubik create mode 100644 src/main/resources/assets/brazier/blockstates/spawn_powder.json create mode 100644 src/main/resources/assets/brazier/models/block/spawn_powder.json create mode 100644 src/main/resources/assets/brazier/models/item/spawn_powder.json create mode 100644 src/main/resources/assets/brazier/textures/block/spawn_powder.png create mode 100644 src/main/resources/assets/brazier/textures/item/spawn_powder.png diff --git a/src/main/java/com/possible_triangle/brazier/Content.java b/src/main/java/com/possible_triangle/brazier/Content.java index b0ac020..bd53aef 100644 --- a/src/main/java/com/possible_triangle/brazier/Content.java +++ b/src/main/java/com/possible_triangle/brazier/Content.java @@ -3,6 +3,7 @@ import com.possible_triangle.brazier.block.BrazierBlock; import com.possible_triangle.brazier.block.LazyTorchBlock; import com.possible_triangle.brazier.block.LazyWallTorchBlock; +import com.possible_triangle.brazier.block.SpawnPowder; import com.possible_triangle.brazier.block.tile.BrazierTile; import com.possible_triangle.brazier.block.tile.render.BrazierRenderer; import com.possible_triangle.brazier.entity.Crazed; @@ -76,6 +77,8 @@ public class Content { public static final RegistryObject LIVING_FLAME = ITEMS.register("living_flame", Flame::new); public static final RegistryObject LIVING_TORCH = ITEMS.register("living_torch", LivingTorch::new); + public static final RegistryObject SPAWN_POWDER = registerBlock("spawn_powder", SpawnPowder::new, p -> p.group(ItemGroup.MATERIALS)); + public static final RegistryObject> CRAZED = ENTITIES.register("crazed", () -> EntityType.Builder.create(Crazed::new, EntityClassification.MONSTER) .setCustomClientFactory((s, w) -> new Crazed(w)) .immuneToFire().build("crazed")); diff --git a/src/main/java/com/possible_triangle/brazier/block/BrazierBlock.java b/src/main/java/com/possible_triangle/brazier/block/BrazierBlock.java index f16fd8a..5bf3bc9 100644 --- a/src/main/java/com/possible_triangle/brazier/block/BrazierBlock.java +++ b/src/main/java/com/possible_triangle/brazier/block/BrazierBlock.java @@ -2,6 +2,7 @@ import com.possible_triangle.brazier.Content; import com.possible_triangle.brazier.block.tile.BrazierTile; +import com.possible_triangle.brazier.config.BrazierConfig; import net.minecraft.block.Block; import net.minecraft.block.BlockRenderType; import net.minecraft.block.BlockState; @@ -81,6 +82,15 @@ public static boolean prevents(SpawnReason reason) { @SubscribeEvent public static void mobSpawn(LivingSpawnEvent.CheckSpawn event) { BlockPos pos = new BlockPos(event.getX(), event.getY(), event.getZ()); + + // Check for spawn powder + if(BrazierConfig.SERVER.SPAWN_POWDER.get()) { + Block block = event.getWorld().getBlockState(pos).getBlock(); + if(Content.SPAWN_POWDER.map(block::equals).isPresent()) { + return; + } + } + if (prevents(event.getSpawnReason()) && prevents(event.getEntity()) && BrazierTile.inRange(pos)) event.setResult(Event.Result.DENY); } diff --git a/src/main/java/com/possible_triangle/brazier/block/LazyWallTorchBlock.java b/src/main/java/com/possible_triangle/brazier/block/LazyWallTorchBlock.java index c233b92..e98a674 100644 --- a/src/main/java/com/possible_triangle/brazier/block/LazyWallTorchBlock.java +++ b/src/main/java/com/possible_triangle/brazier/block/LazyWallTorchBlock.java @@ -2,10 +2,10 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; -import net.minecraft.block.TorchBlock; import net.minecraft.block.WallTorchBlock; import net.minecraft.particles.IParticleData; import net.minecraft.particles.ParticleTypes; +import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; @@ -26,11 +26,13 @@ public LazyWallTorchBlock(Supplier particle) { @OnlyIn(Dist.CLIENT) @Override public void animateTick(BlockState state, World world, BlockPos pos, Random rand) { + Direction direction = state.get(HORIZONTAL_FACING); double d0 = (double)pos.getX() + 0.5D; double d1 = (double)pos.getY() + 0.7D; double d2 = (double)pos.getZ() + 0.5D; - world.addParticle(ParticleTypes.SMOKE, d0, d1, d2, 0.0D, 0.0D, 0.0D); - world.addParticle(this.particle.get(), d0, d1, d2, 0.0D, 0.0D, 0.0D); + Direction direction1 = direction.getOpposite(); + world.addParticle(ParticleTypes.SMOKE, d0 + 0.27D * (double)direction1.getXOffset(), d1 + 0.22D, d2 + 0.27D * (double)direction1.getZOffset(), 0.0D, 0.0D, 0.0D); + world.addParticle(this.particle.get(), d0 + 0.27D * (double)direction1.getXOffset(), d1 + 0.22D, d2 + 0.27D * (double)direction1.getZOffset(), 0.0D, 0.0D, 0.0D); } } diff --git a/src/main/java/com/possible_triangle/brazier/block/SpawnPowder.java b/src/main/java/com/possible_triangle/brazier/block/SpawnPowder.java new file mode 100644 index 0000000..321667d --- /dev/null +++ b/src/main/java/com/possible_triangle/brazier/block/SpawnPowder.java @@ -0,0 +1,24 @@ +package com.possible_triangle.brazier.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.material.Material; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; + +public class SpawnPowder extends Block { + + private static final VoxelShape SHAPE = Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 1.0D, 13.0D); + + public SpawnPowder() { + super(Properties.create(Material.MISCELLANEOUS).doesNotBlockMovement().zeroHardnessAndResistance()); + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext context) { + return SHAPE; + } + +} diff --git a/src/main/java/com/possible_triangle/brazier/config/BrazierServerConfig.java b/src/main/java/com/possible_triangle/brazier/config/BrazierServerConfig.java index aa25464..4b528da 100644 --- a/src/main/java/com/possible_triangle/brazier/config/BrazierServerConfig.java +++ b/src/main/java/com/possible_triangle/brazier/config/BrazierServerConfig.java @@ -12,6 +12,8 @@ public class BrazierServerConfig { public final ForgeConfigSpec.IntValue RANGE_PER_LEVEL; public final ForgeConfigSpec.IntValue BASE_RANGE; + public final ForgeConfigSpec.BooleanValue SPAWN_POWDER; + public final ForgeConfigSpec.EnumValue DISTANCE_CALC; public BrazierServerConfig(ForgeConfigSpec.Builder builder) { @@ -39,6 +41,11 @@ public BrazierServerConfig(ForgeConfigSpec.Builder builder) { .translation("config.brazier.distanceCalc") .defineEnum("distanceCalc", DistanceHandler.Type.CYLINDER); + SPAWN_POWDER = builder + .comment("Enable to spawn powder block?") + .translation("config.brazier.spawnPowder") + .define("spawnPowder", true); + builder.pop().comment("Options related to the acquisition of the living flame").push("acquisition"); JUNGLE_LOOT = builder diff --git a/src/main/java/com/possible_triangle/brazier/data/Blocks.java b/src/main/java/com/possible_triangle/brazier/data/Blocks.java index 08e78ec..3b92ffe 100644 --- a/src/main/java/com/possible_triangle/brazier/data/Blocks.java +++ b/src/main/java/com/possible_triangle/brazier/data/Blocks.java @@ -57,5 +57,16 @@ protected void registerStatesAndModels() { } ); + Content.SPAWN_POWDER.ifPresent(b -> simpleBlock(b, + models().getBuilder(b.getRegistryName().getPath()) + .texture("particle", blockTexture(b)) + .texture("texture", blockTexture(b)) + .element().from(0, 0.25F, 0).to(16, 0.25F, 16) + .shade(false) + .face(Direction.UP).texture("#texture").uvs(0, 0, 16, 16).end() + .face(Direction.DOWN).texture("#texture").uvs(0, 16, 16, 0).end() + .end().ao(false) + )); + } } diff --git a/src/main/java/com/possible_triangle/brazier/data/Items.java b/src/main/java/com/possible_triangle/brazier/data/Items.java index 521ffd8..06b8dc6 100644 --- a/src/main/java/com/possible_triangle/brazier/data/Items.java +++ b/src/main/java/com/possible_triangle/brazier/data/Items.java @@ -39,5 +39,10 @@ protected void registerModels() { .map(ResourceLocation::getPath) .ifPresent(i -> withExistingParent(i, mcLoc("item/template_spawn_egg"))); + Content.SPAWN_POWDER + .map(ForgeRegistryEntry::getRegistryName) + .map(ResourceLocation::getPath) + .ifPresent(i -> singleTexture(i, mcLoc("item/generated"), "layer0", modLoc("item/" + i))); + } } diff --git a/src/main/resources/assets/brazier/Brazier.cubik b/src/main/resources/assets/brazier/Brazier.cubik new file mode 100644 index 0000000000000000000000000000000000000000..f60025c30c71a4d1770eff67b1a4f0a0e4d9e0b4 GIT binary patch literal 3821 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/brazier/textures/item/spawn_powder.png b/src/main/resources/assets/brazier/textures/item/spawn_powder.png new file mode 100644 index 0000000000000000000000000000000000000000..96048b89e780c41f9e459bcbbcdd03a6eb5c5c13 GIT binary patch literal 1339 zcmV-B1;qM^P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-|clItcA{bvp zn|!1yVk}y%esN9*sl0*eyKi&3S{N za+uxiG91f3Loas+^-Eu#^+xN86IUQQ1JA>a%tKywaRqXG)6=>(Y58UUu$=Ydy27sD z*K4l;qY2_UHheg87UwXsxZ5v7NAnzEWS8u5=3(~^J9CN`@J{K1oy|+{o}n-{EQ4^t zXz58VdUvMbD{DLR(~Y8MiWls9Z?X5|wz}*CkP2okYAOO1u?`H%ggIh?*_K;~B6RO9H+goj6YGt=JsPBK1pq|IEhq-v?a2mmLV>I@D-m#v z;3uPUcAg6uAQ5h4I=FEzfE+vx$PFK*Y0JVlHMSNIAuc!tHOXa=<-MSP)JODC7AM|_ zND!4MNpf((2MHl)7<*J!r(Q*aszyzkql-RD3{hi@DdxnG&vYFccm<%15i(%}y|!l6ez(vdrQ zt-J2K^w71(o_ao6TdY2_Mi=J3W{nnWgE2qt^v)X8syhUY?L-D=V2nM1aUBexp?Pp- zBYDq*xxtxDjE6!PtdR_I8V$z4pg)ME)5+bPxi5J$;=jcke`3xI>i!Al%%E;D_sZKF z)>@u#6gLSPPvOASx{i$v21m>s^LQuycs9Qq;Qv5B4Rpk-$>@Y%3TA%0nw8u@Ogm}Q zJe6p-@b6c2Uw%7w-fSmELqz*;X_v*=d_4Z}EtUT%);?76ScI7(pB`;P(%tteGvBSm zUglky`G8N`RmkQqx1qpytnj;-=8GhVclJZk{6fnKNIgbHQ`hb&J>6b`;~8aF!)^=d zRy#JfwTSCX?Uc%1Rq$Jt`%voEz3cXF z{9V%`};_-;hhT=<% zK4NzEncsq#>#dhYv6qJV&@aY+Y^0A3rr`~c=27vq=x@&Er;h*iK#I>8{L^dx2G|~& za&{huCjbBd24YJ`L;wH)0002_L%V+f000SaNLh0L04^f{04^f|c%?sf00007bV*G` z2jmM901g}2C%IDq007%bL_t(I%iWQ&iiI!`MUP8FBBZcNCsXDR`~^SRPf3|Jg;)r& zh~QSr>dSj z{L0{jMT8InF-FF5L~C6%sY>vVHz5SP_q1(GN{MaTSl6|BNpRjQA^^k~nWhO5q3b$Q zN;v0GO5KuF&+RcrthKijmSq7brnnN!^Njbt2s`JlGIP%FJ21u^T5Fth7kq97$T_p` x`>lhQzdi3$N>SJK4Fqm*(co!x>IwcGeFMaee_3HIFFpVO002ovPDHLkV1feRZ+HLz literal 0 HcmV?d00001 diff --git a/src/main/resources/data/brazier/tags/entity_types/brazier_blacklist.json b/src/main/resources/data/brazier/tags/entity_types/brazier_blacklist.json index a22514f..56f95e1 100644 --- a/src/main/resources/data/brazier/tags/entity_types/brazier_blacklist.json +++ b/src/main/resources/data/brazier/tags/entity_types/brazier_blacklist.json @@ -1,5 +1,8 @@ { "replace": false, "values": [ + "minecraft:slime", + "minecraft:magma_cube", + "minecraft:hoglin" ] } \ No newline at end of file diff --git a/src/main/resources/data/brazier/tags/entity_types/brazier_whitelist.json b/src/main/resources/data/brazier/tags/entity_types/brazier_whitelist.json index a22514f..5e8aecc 100644 --- a/src/main/resources/data/brazier/tags/entity_types/brazier_whitelist.json +++ b/src/main/resources/data/brazier/tags/entity_types/brazier_whitelist.json @@ -1,5 +1,4 @@ { "replace": false, - "values": [ - ] + "values": [] } \ No newline at end of file From fab51172ceadfbb80ffb7ac059004d20752fdebc Mon Sep 17 00:00:00 2001 From: PssbleTrngle Date: Thu, 19 Nov 2020 19:59:20 +0100 Subject: [PATCH 2/5] - Completed Spawn Powder Logic - Made border particles less clustered - Allow protection only below the brazier --- src/main/java/com/possible_triangle/brazier/Content.java | 2 ++ .../com/possible_triangle/brazier/block/BrazierBlock.java | 2 +- .../possible_triangle/brazier/block/tile/BrazierTile.java | 2 +- .../brazier/config/BrazierServerConfig.java | 6 ++++++ .../possible_triangle/brazier/item/BrazierIndicator.java | 8 ++++---- 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/possible_triangle/brazier/Content.java b/src/main/java/com/possible_triangle/brazier/Content.java index bd53aef..15fe8c5 100644 --- a/src/main/java/com/possible_triangle/brazier/Content.java +++ b/src/main/java/com/possible_triangle/brazier/Content.java @@ -145,5 +145,7 @@ public static void clientSetup(Minecraft mc) { .forEach(b -> RenderTypeLookup.setRenderLayer(b, RenderType.getCutout())); BRAZIER_TILE.ifPresent(tile -> ClientRegistry.bindTileEntityRenderer(tile, BrazierRenderer::new)); + + SPAWN_POWDER.ifPresent(b -> RenderTypeLookup.setRenderLayer(b, RenderType.getCutout())); } } \ No newline at end of file diff --git a/src/main/java/com/possible_triangle/brazier/block/BrazierBlock.java b/src/main/java/com/possible_triangle/brazier/block/BrazierBlock.java index 5bf3bc9..fb4dc1f 100644 --- a/src/main/java/com/possible_triangle/brazier/block/BrazierBlock.java +++ b/src/main/java/com/possible_triangle/brazier/block/BrazierBlock.java @@ -86,7 +86,7 @@ public static void mobSpawn(LivingSpawnEvent.CheckSpawn event) { // Check for spawn powder if(BrazierConfig.SERVER.SPAWN_POWDER.get()) { Block block = event.getWorld().getBlockState(pos).getBlock(); - if(Content.SPAWN_POWDER.map(block::equals).isPresent()) { + if(Content.SPAWN_POWDER.filter(block::equals).isPresent()) { return; } } diff --git a/src/main/java/com/possible_triangle/brazier/block/tile/BrazierTile.java b/src/main/java/com/possible_triangle/brazier/block/tile/BrazierTile.java index 9967ee9..247deb0 100644 --- a/src/main/java/com/possible_triangle/brazier/block/tile/BrazierTile.java +++ b/src/main/java/com/possible_triangle/brazier/block/tile/BrazierTile.java @@ -14,7 +14,6 @@ import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; import net.minecraft.world.server.ServerWorld; import java.util.HashMap; @@ -41,6 +40,7 @@ public static boolean isBorder(Vector3d pos) { public static boolean inRange(BlockPos pos) { synchronized (BRAZIERS) { return BRAZIERS.entrySet().stream().anyMatch(e -> { + if(!BrazierConfig.SERVER.PROTECT_ABOVE.get() && e.getKey().getY() < pos.getY()) return false; double dist = DistanceHandler.getDistance(pos, e.getKey()); int maxDist = e.getValue() * e.getValue(); return dist <= maxDist; diff --git a/src/main/java/com/possible_triangle/brazier/config/BrazierServerConfig.java b/src/main/java/com/possible_triangle/brazier/config/BrazierServerConfig.java index 4b528da..4e18076 100644 --- a/src/main/java/com/possible_triangle/brazier/config/BrazierServerConfig.java +++ b/src/main/java/com/possible_triangle/brazier/config/BrazierServerConfig.java @@ -11,6 +11,7 @@ public class BrazierServerConfig { public final ForgeConfigSpec.IntValue MAX_HEIGHT; public final ForgeConfigSpec.IntValue RANGE_PER_LEVEL; public final ForgeConfigSpec.IntValue BASE_RANGE; + public final ForgeConfigSpec.BooleanValue PROTECT_ABOVE; public final ForgeConfigSpec.BooleanValue SPAWN_POWDER; @@ -41,6 +42,11 @@ public BrazierServerConfig(ForgeConfigSpec.Builder builder) { .translation("config.brazier.distanceCalc") .defineEnum("distanceCalc", DistanceHandler.Type.CYLINDER); + PROTECT_ABOVE = builder + .comment("Should the brazier protect blocks above it too?") + .translation("config.brazier.protectAbove") + .define("protectAbove", false); + SPAWN_POWDER = builder .comment("Enable to spawn powder block?") .translation("config.brazier.spawnPowder") diff --git a/src/main/java/com/possible_triangle/brazier/item/BrazierIndicator.java b/src/main/java/com/possible_triangle/brazier/item/BrazierIndicator.java index 9c1d33b..5dc2d4e 100644 --- a/src/main/java/com/possible_triangle/brazier/item/BrazierIndicator.java +++ b/src/main/java/com/possible_triangle/brazier/item/BrazierIndicator.java @@ -19,19 +19,19 @@ static void playerTick(TickEvent.PlayerTickEvent event) { Stream items = Stream.of(event.player.getHeldItemOffhand(), event.player.getHeldItemMainhand()); if (items.map(ItemStack::getItem).anyMatch(BrazierIndicator.class::isInstance)) { - int step = 4; + int step = 3; float radius = 5F; for (int i = -step; i <= step; i++) { float ry = i / (float) step; double y = event.player.prevPosY + ry * (radius / 2) + 1; - for (float r = 0; r < radius; r += 0.1F) { - int degSteps = (int) (1 - r / radius) * 78 + 12; + for (float r = 0; r < radius; r += 0.2F) { + int degSteps = (int) (1 - r / radius) * 33 + 12; for (int deg = 0; deg < 360; deg += degSteps) { float rad = (float) ((deg + i + event.player.ticksExisted) / 180F * Math.PI); double x = event.player.prevPosX + MathHelper.sin(rad) * r; double z = event.player.prevPosZ + MathHelper.cos(rad) * r; if (BrazierTile.isBorder(new Vector3d(x, y, z))) { - world.spawnParticle(Content.FLAME_PARTICLE.get(), x, y, z, 1, 0, 0.1, 0, 0.01); + world.spawnParticle(Content.FLAME_PARTICLE.get(), x, y, z, 1, 0, 0.2, 0, 0.01); } } } From c7e3f7f9c04204a99ed9220861e1bf31bd8a5054 Mon Sep 17 00:00:00 2001 From: PssbleTrngle Date: Thu, 19 Nov 2020 21:27:36 +0100 Subject: [PATCH 3/5] Added way to obtain spawn powder (now "Cursed Ash") - Crafted using warped netherwarts, ash and charcoal - Warped netherwarts have a chance to drop when harvesting netherwarts - Can be crafted into warped netherwart blocks - Ash drops from Witherskeletons --- .../possible_triangle/brazier/Content.java | 27 ++++++----- .../possible_triangle/brazier/data/Loot.java | 28 ++++++++++- .../brazier/data/Recipes.java | 44 +++++++++++++----- .../possible_triangle/brazier/item/Flame.java | 13 ------ .../brazier/particle/FlameParticle.java | 3 -- .../resources/assets/brazier/lang/en_us.json | 4 +- .../brazier/textures/block/spawn_powder.png | Bin 1111 -> 1481 bytes .../assets/brazier/textures/item/ash.png | Bin 0 -> 1339 bytes .../brazier/textures/item/spawn_powder.png | Bin 1339 -> 1850 bytes .../textures/item/warped_nether_wart.png | Bin 0 -> 1496 bytes .../loot_tables/blocks/spawn_powder.json | 19 ++++++++ .../data/brazier/tags/items/ash.json | 6 +++ 12 files changed, 103 insertions(+), 41 deletions(-) delete mode 100644 src/main/java/com/possible_triangle/brazier/item/Flame.java create mode 100644 src/main/resources/assets/brazier/textures/item/ash.png create mode 100644 src/main/resources/assets/brazier/textures/item/warped_nether_wart.png create mode 100644 src/main/resources/data/brazier/loot_tables/blocks/spawn_powder.json create mode 100644 src/main/resources/data/brazier/tags/items/ash.json diff --git a/src/main/java/com/possible_triangle/brazier/Content.java b/src/main/java/com/possible_triangle/brazier/Content.java index 15fe8c5..0947f7e 100644 --- a/src/main/java/com/possible_triangle/brazier/Content.java +++ b/src/main/java/com/possible_triangle/brazier/Content.java @@ -10,7 +10,6 @@ import com.possible_triangle.brazier.entity.CrazedFlame; import com.possible_triangle.brazier.entity.render.CrazedFlameRenderer; import com.possible_triangle.brazier.entity.render.CrazedRender; -import com.possible_triangle.brazier.item.Flame; import com.possible_triangle.brazier.item.LazySpawnEgg; import com.possible_triangle.brazier.item.LivingTorch; import com.possible_triangle.brazier.particle.FlameParticle; @@ -24,6 +23,7 @@ import net.minecraft.item.BlockItem; import net.minecraft.item.Item; import net.minecraft.item.ItemGroup; +import net.minecraft.item.Rarity; import net.minecraft.particles.BasicParticleType; import net.minecraft.particles.ParticleType; import net.minecraft.tags.BlockTags; @@ -50,19 +50,22 @@ import java.util.function.Supplier; import java.util.stream.Stream; +import static com.possible_triangle.brazier.Brazier.MODID; + @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) public class Content { - public static final ITag BRAZIER_BASE_BLOCKS = BlockTags.makeWrapperTag(new ResourceLocation(Brazier.MODID, "brazier_base_blocks").toString()); - public static final ITag> BRAZIER_WHITELIST = EntityTypeTags.func_232896_a_(new ResourceLocation(Brazier.MODID, "brazier_whitelist").toString()); - public static final ITag> BRAZIER_BLACKLIST = EntityTypeTags.func_232896_a_(new ResourceLocation(Brazier.MODID, "brazier_blacklist").toString()); - public static final ITag TORCHES = ItemTags.makeWrapperTag(new ResourceLocation(Brazier.MODID, "torches").toString()); + public static final ITag BRAZIER_BASE_BLOCKS = BlockTags.makeWrapperTag(new ResourceLocation(MODID, "brazier_base_blocks").toString()); + public static final ITag> BRAZIER_WHITELIST = EntityTypeTags.func_232896_a_(new ResourceLocation(MODID, "brazier_whitelist").toString()); + public static final ITag> BRAZIER_BLACKLIST = EntityTypeTags.func_232896_a_(new ResourceLocation(MODID, "brazier_blacklist").toString()); + public static final ITag TORCHES = ItemTags.makeWrapperTag(new ResourceLocation(MODID, "torches").toString()); + public static final ITag ASH_TAG = ItemTags.makeWrapperTag(new ResourceLocation(MODID, "ash").toString()); - public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Brazier.MODID); - public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, Brazier.MODID); - public static final DeferredRegister> TILES = DeferredRegister.create(ForgeRegistries.TILE_ENTITIES, Brazier.MODID); - public static final DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES, Brazier.MODID); - public static final DeferredRegister> PARTICLES = DeferredRegister.create(ForgeRegistries.PARTICLE_TYPES, Brazier.MODID); + public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MODID); + public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, MODID); + public static final DeferredRegister> TILES = DeferredRegister.create(ForgeRegistries.TILE_ENTITIES, MODID); + public static final DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES, MODID); + public static final DeferredRegister> PARTICLES = DeferredRegister.create(ForgeRegistries.PARTICLE_TYPES, MODID); public static final RegistryObject FLAME_PARTICLE = PARTICLES.register("flame", () -> new BasicParticleType(false)); @@ -74,9 +77,11 @@ public class Content { public static final RegistryObject LIVING_TORCH_BLOCK = BLOCKS.register("living_torch", () -> new LazyTorchBlock(FLAME_PARTICLE)); public static final RegistryObject LIVING_TORCH_BLOCK_WALL = BLOCKS.register("living_wall_torch", () -> new LazyWallTorchBlock(FLAME_PARTICLE)); - public static final RegistryObject LIVING_FLAME = ITEMS.register("living_flame", Flame::new); + public static final RegistryObject LIVING_FLAME = ITEMS.register("living_flame", () -> new Item(new Item.Properties().group(ItemGroup.MATERIALS).rarity(Rarity.UNCOMMON))); public static final RegistryObject LIVING_TORCH = ITEMS.register("living_torch", LivingTorch::new); + public static final RegistryObject ASH = ITEMS.register("ash", () -> new Item(new Item.Properties().group(ItemGroup.MATERIALS))); + public static final RegistryObject WARPED_NETHERWART = ITEMS.register("warped_nether_wart", () -> new Item(new Item.Properties().group(ItemGroup.MATERIALS))); public static final RegistryObject SPAWN_POWDER = registerBlock("spawn_powder", SpawnPowder::new, p -> p.group(ItemGroup.MATERIALS)); public static final RegistryObject> CRAZED = ENTITIES.register("crazed", () -> EntityType.Builder.create(Crazed::new, EntityClassification.MONSTER) diff --git a/src/main/java/com/possible_triangle/brazier/data/Loot.java b/src/main/java/com/possible_triangle/brazier/data/Loot.java index 4ef41b9..2a49a7c 100644 --- a/src/main/java/com/possible_triangle/brazier/data/Loot.java +++ b/src/main/java/com/possible_triangle/brazier/data/Loot.java @@ -1,12 +1,21 @@ package com.possible_triangle.brazier.data; import com.possible_triangle.brazier.Content; +import net.minecraft.advancements.criterion.StatePropertiesPredicate; +import net.minecraft.block.Blocks; +import net.minecraft.block.NetherWartBlock; import net.minecraft.data.DataGenerator; +import net.minecraft.entity.EntityType; import net.minecraft.item.Items; import net.minecraft.loot.*; +import net.minecraft.loot.conditions.BlockStateProperty; +import net.minecraft.loot.conditions.RandomChance; import net.minecraft.loot.conditions.SurvivesExplosion; +import net.minecraft.loot.functions.LootingEnchantBonus; +import net.minecraft.loot.functions.SetCount; import net.minecraftforge.event.LootTableLoadEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; @@ -28,6 +37,23 @@ public static void onLootLoaded(LootTableLoadEvent event) { .addEntry(EmptyLootEntry.func_216167_a().weight(1)) .build()) ); + } else if (event.getName().equals(EntityType.WITHER_SKELETON.getLootTable()) && !ModList.get().isLoaded("nether_extension")) { + Content.ASH.ifPresent(ash -> event.getTable().addPool(LootPool.builder() + .addEntry(ItemLootEntry.builder(ash) + .acceptFunction(SetCount.builder(RandomValueRange.of(-1, 1))) + .acceptFunction(LootingEnchantBonus.builder(RandomValueRange.of(0, 1))) + ) + .build()) + ); + } else if (event.getName().equals(Blocks.NETHER_WART.getLootTable())) { + Content.WARPED_NETHERWART.ifPresent(wart -> event.getTable().addPool(LootPool.builder() + .addEntry(ItemLootEntry.builder(wart).acceptFunction(SetCount.builder(RandomValueRange.of(-1, 1)) + .acceptCondition(RandomChance.builder(0.02F)) + .acceptCondition(BlockStateProperty.builder(Blocks.NETHER_WART) + .fromProperties(StatePropertiesPredicate.Builder.newBuilder().withIntProp(NetherWartBlock.AGE, 3))) + )) + .build()) + ); } } @@ -39,7 +65,7 @@ protected void addTables() { ).setParameterSet(LootParameterSets.ENTITY) )); - Stream.of(Content.BRAZIER, Content.LIVING_TORCH_BLOCK, Content.LIVING_TORCH_BLOCK_WALL) + Stream.of(Content.BRAZIER, Content.LIVING_TORCH_BLOCK, Content.LIVING_TORCH_BLOCK_WALL, Content.SPAWN_POWDER) .filter(RegistryObject::isPresent).map(RegistryObject::get) .forEach(block -> lootTables.put(block.getLootTable(), LootTable.builder() .addLootPool(LootPool.builder().rolls(ConstantRange.of(1)) diff --git a/src/main/java/com/possible_triangle/brazier/data/Recipes.java b/src/main/java/com/possible_triangle/brazier/data/Recipes.java index 6355294..a43f03a 100644 --- a/src/main/java/com/possible_triangle/brazier/data/Recipes.java +++ b/src/main/java/com/possible_triangle/brazier/data/Recipes.java @@ -17,24 +17,44 @@ public Recipes(DataGenerator generator) { @Override protected void registerRecipes(Consumer consumer) { - Content.BRAZIER.ifPresent(brazier -> { - Item flame = Content.LIVING_FLAME.orElse(Items.BLAZE_POWDER); - ShapedRecipeBuilder.shapedRecipe(brazier) - .patternLine("BFB") - .patternLine("SSS") - .key('B', Blocks.IRON_BARS) - .key('S', Blocks.field_235406_np_) - .key('F', flame) - .addCriterion("collected_flame", hasItem(flame)) - .build(consumer); - }); + Item flame = Content.LIVING_FLAME.orElse(Items.BLAZE_POWDER); + + Content.BRAZIER.ifPresent(brazier -> + ShapedRecipeBuilder.shapedRecipe(brazier) + .patternLine("BFB") + .patternLine("SSS") + .key('B', Blocks.IRON_BARS) + .key('S', Blocks.field_235406_np_) + .key('F', flame) + .addCriterion("collected_flame", hasItem(flame)) + .build(consumer) + ); Content.LIVING_TORCH.ifPresent(torch -> ShapelessRecipeBuilder.shapelessRecipe(torch, 2) .addIngredient(torch) .addIngredient(Ingredient.fromTag(Content.TORCHES)) - .addCriterion("collected_flame", hasItem(torch)) + .addCriterion("collected_torch", hasItem(torch)) .build(consumer) ); + + Content.SPAWN_POWDER.ifPresent(powder -> + ShapelessRecipeBuilder.shapelessRecipe(powder, 6) + .addIngredient(Ingredient.fromTag(Content.ASH_TAG), 4) + .addIngredient(Items.CHARCOAL, 1) + .addIngredient(Content.WARPED_NETHERWART.orElse(Items.NETHER_WART)) + .addCriterion("collected_flame", hasItem(flame)) + .addCriterion("collected_ash", hasItem(Content.ASH_TAG)) + ); + + Content.WARPED_NETHERWART.ifPresent(wart -> + ShapedRecipeBuilder.shapedRecipe(Blocks.field_235374_mn_) + .patternLine("xxx") + .patternLine("xxx") + .patternLine("xxx") + .key('x', wart) + .addCriterion("collected_wart", hasItem(wart)) + ); + } } diff --git a/src/main/java/com/possible_triangle/brazier/item/Flame.java b/src/main/java/com/possible_triangle/brazier/item/Flame.java deleted file mode 100644 index 5ff89c8..0000000 --- a/src/main/java/com/possible_triangle/brazier/item/Flame.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.possible_triangle.brazier.item; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.Rarity; - -public class Flame extends Item { - - public Flame() { - super((new Item.Properties()).group(ItemGroup.MATERIALS).rarity(Rarity.UNCOMMON)); - } - -} diff --git a/src/main/java/com/possible_triangle/brazier/particle/FlameParticle.java b/src/main/java/com/possible_triangle/brazier/particle/FlameParticle.java index 69ab868..09fd957 100644 --- a/src/main/java/com/possible_triangle/brazier/particle/FlameParticle.java +++ b/src/main/java/com/possible_triangle/brazier/particle/FlameParticle.java @@ -1,11 +1,8 @@ package com.possible_triangle.brazier.particle; -import com.possible_triangle.brazier.item.Flame; import net.minecraft.client.particle.*; import net.minecraft.client.world.ClientWorld; import net.minecraft.particles.BasicParticleType; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ParticleTypes; import net.minecraft.util.math.MathHelper; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; diff --git a/src/main/resources/assets/brazier/lang/en_us.json b/src/main/resources/assets/brazier/lang/en_us.json index 450df73..69d3339 100644 --- a/src/main/resources/assets/brazier/lang/en_us.json +++ b/src/main/resources/assets/brazier/lang/en_us.json @@ -1,10 +1,12 @@ { "block.brazier.brazier": "Brazier", "block.brazier.living_torch": "Living Torch", - "block.brazier.spawn_powder": "Ash", + "block.brazier.spawn_powder": "Cursed Ash", "item.brazier.living_flame": "Living Flame", "entity.brazier.crazed_flame": "Crazed Flame", "item.brazier.crazed_spawn_egg": "Crazed Spawn Egg", + "item.brazier.ash": "Ash", + "item.brazier.warped_nether_wart": "Warped Netherwart", "entity.brazier.crazed": "Crazed", "advancements.brazier.place_brazier.title": "Begone, demon!", "advancements.brazier.place_brazier.description": "Place a brazier down and drive away the monsters of the night", diff --git a/src/main/resources/assets/brazier/textures/block/spawn_powder.png b/src/main/resources/assets/brazier/textures/block/spawn_powder.png index 95699e7af22f54afa6f6c0e562a3d2433fe4f2de..00455c63c84de411881c4766137be1f7483fa698 100644 GIT binary patch delta 1418 zcmV;51$Fw@2+0eOBYy-ddQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+T~YUwks(J z{dW{S1OZVTj?cC340`yDkE$e<$GPX+{_2h^r6Pjv4Wwe)-@m%~OFw8CjpHCbdT;gP zqKlYxAa;FL57y1+p4emXAUEd%s))3wHT7-lCzbPULvUN3AAjX0lx;`0p~LbvNW(Mg zVC%^?M7ZRz=O*rb$=zLNe|y2X%y}(c=PoE1mDL`h!A3wKN4lm%HqYHL6Z8<$cVXWT@{({k#1HZ;@B6MNx@cgjQ>gnPcyI!UDwr-c4SERhz zmpZO8N2;iBI)9qmytbfU)^V6EY7@O;QO2sWnY9%I5m3?Y;GjZ+4sG@YiXPEn!=OE4 zL7Fn5fDwy=4&+9Ij)5XoL!xXHWsOvf=UHI-jniKNQO^}r6G4rE?s#hEmGCF+G}QYD zT>vX5R(dWRF|EfK%#EjNDIw4|rabYT&D_O}y(5;CL4Tewi(W9T9gPTPeG}Pl$0#zSmP%+(HKfh> z5+^KPf`5oaNf9Gy3FGKvFi~QRDXG(>rjzbYs*zI0Oxb15K8Gwh=2SF%iYr`v2}MdQ zsbZz7>0f;frb>-9HE0@2%{6Ymg(fYw)HT*Rb=SH39=i0{)5+Rq^^rBWF!z}?*sKl4 z+|&y<)>ItAVFE@u;lY_Qh7OeRFc{E)#=)5taDNU5bAvM*QIkT8zn+o@ITZ$D%Ajk2 z+~MTz#@t8V47+dfhVPg&gSvl%IWwr+%sun=g0-6FFA7b9MivfCEp;tys?a2%r16{d zwnPissG4$x|s5Wlex8Ee-R$<=mRklzw12MAqSpErgx5uyk6qtwxLyt6?bZ?(RyL$^ ztaE=u#g*p|tbJhd4ETH;jLqQ@<%I4ibFHm_>rT38)eoN%&OE2nSN$y|%Mra4ym{@t zq;wy1;p=QR_~Y|D8a0o#q1JaupGWA-ukyw0!@o_|FS)GMuUtD&!3R`w{ldV>vOQfX zV`i!bgy&fNUavopfj?*e@Ac-sOnh(aV{aad#8dew{WqPMKRLyJ+>rh~=~e&dntuQ- zn!bMQQ~hF-lLIn;6B9HFG2%Ux0003WNkl)P`H5it=N z_uhN+-v7v3H-gplpss7H>)KS6LI_wlVxyXKGbjLj4#OOO5M!hmBQdkNuC=Xws~>M1 zR28aPlnnre*Ei6zEbqNJ=a6$oRaIc-5+VQwfI0rIbijQB@TV8=fj#flOPO z0rJBmiHP-m4*=Mn9AIXo`?~^}t?S=LR4!dTJ%gFycl%lCXDbj913)Py$~nXD_HfP- z0OXv_b*-I2axgV!`8ce!GBr+B?XY2dyac)kST|y~?>cjR(mTZ%aS>2PS>h?BKmMV< Y0I!mNHEuzOP5=M^07*qoM6N<$f;h^z!~g&Q delta 1054 zcmV+(1mXM13)cvcBYy*CdQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+U=KHcH}4w zhTmDmECC^eU^!gR=^f1S=ZB)G)TPs>l75;K6B}6;lF)~7#q@uF4f78UO2HW~8bb=f z;_%5Qmmx%ZIW9d}zpnenUWGfoIS(9EjGiyIp>O*Pz1#+<-+%gYuQyt^pST^-al8(m zk*B=v;&#ODqNjat(jJ%nhw1Fo)$MjWf4ujKVl;t2cE)ukwz!5Fg)e7@j@C88$Zpx= z>N&oyojKw|@s9LRJDazj?@M89*aqRDMq5wvpyw0DJyN?yzI%}Pgm|jm7%h&`FSE-& zpi;r?NnNM1B!3tdl#r#^(nVI6TwMVCY&4v5;$}F4Qw24K+MQfz#Z4<-rHIIlVCe|X2qT`Fd8PbHJC4Sf zOP9#TQ!C`<=9)$tlia+*3P5P=n#!v0YUabbu^+%P2!F~dbHoI*Ef*I>=(e_aac0%?8u*jfNWIIsdu;tW{c3)YYNh&7aj#TyX`q7o%Z4jg=t5Q2ueM`dO8DjHNZYSJ7z z`Y16(jejwwn3GG4Elg5KYEn!o<&2;it}{kwSmaz>;o^&wP_)F7O0HNw)mN#ZYK=A3 z++5>^*T03Prp1<8?$oiAy6@6M*B*Q7d0?##9)8FOLq{BGCgGb&@|h##rgf44;M_2%h;YS~htQ-f>d6Hx3aR9i-HRIm2-JH7d! zpw`=#;&p=Is7^d;XFw^ZBIb)FdFsvY9;m0!l6uma?^Wj3|Jl)t=&x+e-^k|2(f`vC ze(5*-uWJ4SDCcznw~@R200006VoOIv0Fz+^DSr|G4lx6qaD@N>0CGu0K~y-)?UBI= zz%UF0l@4G}5YQr-J{x3$KqgQYNM9*^q)=M=>wOHy5<&)kz9XeH<|H|;?zYu(3P=t~ zh%p|9w+w2nK@!XirIa8El9ndnDt>DXW(IeMB)B_r&f!*q$rSb8pA|`RoXdRuk)Jg? YnG=OEuu!CY6aWAK07*qoM6N<$f~9f;$p8QV diff --git a/src/main/resources/assets/brazier/textures/item/ash.png b/src/main/resources/assets/brazier/textures/item/ash.png new file mode 100644 index 0000000000000000000000000000000000000000..96048b89e780c41f9e459bcbbcdd03a6eb5c5c13 GIT binary patch literal 1339 zcmV-B1;qM^P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-|clItcA{bvp zn|!1yVk}y%esN9*sl0*eyKi&3S{N za+uxiG91f3Loas+^-Eu#^+xN86IUQQ1JA>a%tKywaRqXG)6=>(Y58UUu$=Ydy27sD z*K4l;qY2_UHheg87UwXsxZ5v7NAnzEWS8u5=3(~^J9CN`@J{K1oy|+{o}n-{EQ4^t zXz58VdUvMbD{DLR(~Y8MiWls9Z?X5|wz}*CkP2okYAOO1u?`H%ggIh?*_K;~B6RO9H+goj6YGt=JsPBK1pq|IEhq-v?a2mmLV>I@D-m#v z;3uPUcAg6uAQ5h4I=FEzfE+vx$PFK*Y0JVlHMSNIAuc!tHOXa=<-MSP)JODC7AM|_ zND!4MNpf((2MHl)7<*J!r(Q*aszyzkql-RD3{hi@DdxnG&vYFccm<%15i(%}y|!l6ez(vdrQ zt-J2K^w71(o_ao6TdY2_Mi=J3W{nnWgE2qt^v)X8syhUY?L-D=V2nM1aUBexp?Pp- zBYDq*xxtxDjE6!PtdR_I8V$z4pg)ME)5+bPxi5J$;=jcke`3xI>i!Al%%E;D_sZKF z)>@u#6gLSPPvOASx{i$v21m>s^LQuycs9Qq;Qv5B4Rpk-$>@Y%3TA%0nw8u@Ogm}Q zJe6p-@b6c2Uw%7w-fSmELqz*;X_v*=d_4Z}EtUT%);?76ScI7(pB`;P(%tteGvBSm zUglky`G8N`RmkQqx1qpytnj;-=8GhVclJZk{6fnKNIgbHQ`hb&J>6b`;~8aF!)^=d zRy#JfwTSCX?Uc%1Rq$Jt`%voEz3cXF z{9V%`};_-;hhT=<% zK4NzEncsq#>#dhYv6qJV&@aY+Y^0A3rr`~c=27vq=x@&Er;h*iK#I>8{L^dx2G|~& za&{huCjbBd24YJ`L;wH)0002_L%V+f000SaNLh0L04^f{04^f|c%?sf00007bV*G` z2jmM901g}2C%IDq007%bL_t(I%iWQ&iiI!`MUP8FBBZcNCsXDR`~^SRPf3|Jg;)r& zh~QSr>dSj z{L0{jMT8InF-FF5L~C6%sY>vVHz5SP_q1(GN{MaTSl6|BNpRjQA^^k~nWhO5q3b$Q zN;v0GO5KuF&+RcrthKijmSq7brnnN!^Njbt2s`JlGIP%FJ21u^T5Fth7kq97$T_p` x`>lhQzdi3$N>SJK4Fqm*(co!x>IwcGeFMaee_3HIFFpVO002ovPDHLkV1feRZ+HLz literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/brazier/textures/item/spawn_powder.png b/src/main/resources/assets/brazier/textures/item/spawn_powder.png index 96048b89e780c41f9e459bcbbcdd03a6eb5c5c13..539dfe39ebc9016739e6733a621d4b37712fd903 100644 GIT binary patch delta 1790 zcmVaB^>EX>4U6ba`-PAZ2)IW&i+q+TB-MlH@21 z{O1&V1dtGjykA2<<1^ajF(LZXUVlEen^=z>J%%pJ#~{y@ z36(QWk0GYr?#{bOXI}PC+d02cX?084U9ayx0*ofG$7HCpV~b~)tMLA1w7K<6bhUVn zcoNHd?95$#0q?H8U}y7b=Z{br8_t06g3)Pr@*cZ|&3_yP5zAmu7R-tbW?Qz2BJQCr zUOY3#iS@?r&~ULG1Aqu?3!H(vy|clwxZrFgip~K?1wR>{6MHIPz==?EW`G;!0CJS( z+L#mF8cRaE8L0(C2nPg-f}squycg&vdWD9vuy`XPL87Q6$$^6p5<-Y!=BOMw`Y18P z7&WGtm4DT%XwaytNpqsaNMVvfiY94FDQ7I2VLD@W#)zB?6)wI=2_+USspJazR9~fr z8mrb+bEC!$;om}wrfEwpch@1M?z{BRW7nQ~9?;t0;fIVc;?R*szF9l0eq_zPF!w!c z?yxo)^J`puu!iOsFB5L26PcWWG4c+K$H@Q$O@EU!tIm6x%uUX0A_RpHSaUMTX>KwG z27PxV!`<9HnERGDBmTE|qpz4Vle+(cIWws{%zftV4Qnm06NMK+GYTiBmIo3W26WA& zd7epsT$;BXBg(8$X~f;tKDUbZ>W8;IoEIHluL*hJ$aY?k0ehf(aQ)9bx=H}GYRL6$ zi+@{-;)uN+_hCDp>oBP?U|p|{o8_AKT;$%Kf5Rp7dwUq-_o4+HA?efYf)T2+e6BcQ z)_BWl*NWv9uEw8AbI;DNT@2m4pTv3hl*l!K+Ubb#S~%(LA#;(KVy6;@whF;vb+4r{)#ee@Gv=`R8K5E+&WP;EZ3SOI?QF#2@^kvAN zDQrRN+>tD`%}=>qMj5My2u>t>qsfKHdjPUj4(@4=d7gY5@sC>Ea>iATXqw}Wkm9g> z8?2+?v@>S|#QDT&M!u-5N9{>Rw#)agTtB7x2}MfoZ4n>ZdUo4Uc+NE=?L3>$O8yC;0$|JHVz3^ujM$d%Ci&wunx6*zYWY7ggg;56;g7rd7pi#S>jq-Do|6s)GJg{jFB*ko=4t={0jNnt zK~y-)&62@N+)x;Wzr@5$VguvAI1S=>hp9NbDK5J&xG59_H*M(?6#5ADEed^+u3NE1 zRO-Tobm46x#Aw4%$K08wqqmC^HChX^>semzIeh2vPcVk&-o3?Xw=gFiCgUAc@ z2^hsO=igHRrhi{N!*nYcjH&wTS7hrOn4SlK`LEAH2rY!r*WU&^UjR7!@DX?E;oSs6 z2<(_l<($LMhbN_U#IVS+1^d z5XU50hF*S*J3EW-`?|naTiXET3PK3oY&HSVjzcR5IDd#^_M-@II7BJMU@)K{DUB$E z(Am=`G#|9lj>B;n@_us@xw^vi)D%i7I-L%7aQ~77xVnRCwfd%guK6k@CoiA#$S|>g z=H#C~(~BYilx6Y5^DxttJkQrk1ZkSGzq`v!t;TR~k8jZ-Ns`dZG8VhtKLJNaR8CJz zo0T^3eM?`vuFGP#%W)XeGYr&BoeQP7cb4%hNf?brr44S~LDA2$ENt6`TJ6#Zl+1q( gxEWOFrt$yLZ~rW@omw9iX8-^I07*qoM6N<$g0?b%YXATM delta 1287 zcmV+i1^D{94!a7FBYy+odQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+U-|clItcA z{bvpn|!1yVk}y%esN9*sl0*eyKi&3S{Na+uxiG91f3Loas+^?yrWp7loSiW65LIs?zc zjm$${c5wxAeACmqHfi}~|FE3(vbftXLr3!*VPu!= zapqz74m)#-7w}H$f}PDv@1CJBHY|g1!D#78E_!#S;VWx9^V5x@XNni>dT+7!l& z1CR=4Eov`iN`EjcfYMF3fH8s!WSt{nL@cp_u?98^Mm3a(fp#ZPjWTsQ=3J?wM9&8+ zX6DLn>Y`IlTqgm34C<^dxn^7h6BVpEsQIjgX5KXORf@>m2$oC;M(}tU=AH5<;|$dM zXk8*3PpnWEkDf*ugSl~r6$qieFqMh#9Oj{K>;th541damIbwm?mRpD-bnh)Ud3LZ9 z>y5oV8l-In07S?wC$z_n`y`X>8NAyq@C*Fui5S1uNa&W;12_a}0dsJ4ZUPXhdMopTd zi#|#WQGa8MDdxnG&vYFccm<%15i(%}y|!l6ez(vdrQt-J2K^w71(o_ao6TdY2_Mi=J3W{nnW zgE2qt^v)X8syhUY?L-D=V2nM1aUBexp?Pp-BY%0%gSo+(O^k;^7_5;DavBZBz@R^f zrPImXow+Z0GvdF+8-HTX4C?*~=FFgOG55;b8`fH$ZxlBP8c*TC)Vhw14F*Td9P@Z5 z{dhLN8{q#yKMi!mtI6nuUkYY^yPB2UKukMn(>#@ExA5;*bYFfucHV3!MngpVZ)ums z*nfOH{_ri8|0&i!RPk7ZnIfMaZ9~%C_bM~rt;AmDU77iSPuo?<<}bIQz;~?hyO`#S zB#3wRL(%*~%Lzz5MnzNC?kGLoUV-BoWmm&)3+YxnHnz2h>rCyG%3f9QTb27#sh=7_ zAa(u4E^SxZz~o&)ZX3PLVa5xD%%k;nmVdUr>-KK`wcy%u*W3!&u0iF+qn37AG@U{_ zJIwsz6IRNuGQCp3XG5L@z3HDFDsD*P@rcca;!BJ^Vs`eK--4Lyt(QizmxlS!FUEgt zq>l}z;SG@HQSr3sZ_ehYj{o&Qiq9DQ(`)_)*dCg4b{>W&00006VoOIv000000FzAx zC4UkC4jb4fxl;fD0NY7KK~y-)-I1}1g)k6Bk4r=%q_9dSQ|1r+1wYwONtrf z%HV`Wgb)HTM#gbOYh5&{O7M?2Aq2elw0vz#N{MaTSl6|BNpRjQA^^k~nWhO5q3b$Q zN;v0GO5KuF&+RcrthKijmSq7brnnN!^Njbt2s`JlGIP%FJ21u^T5Fth7kq97$T_p` x`>lhQzdi3$N>SJK4Fqm*(co!x>IwcGeFMaee_3HIFFpVO002ovPDHLkV1h&^X> zaB^>EX>4U6ba`-PAZ2)IW&i+q+U-|cawI7X{O1&V1cVS0$Ke^VH`wEELeXWrZI5R> z^Rp3KL>C}L0!m3#yYbK8)BS}fcug*fTFNPTJTb={3L56G=c>ua{XQN4XuOfTdmuo> zsQK!qar6u1@-ji=k=M6!r|sa_0iqjtKfG36?W1Q0h{GkP(|7sIEAiEF&M&kBd%&Oj zQDKZOz~kV;U}BGVTC4E&E0EEC=kSn3)P-f~ePla#H=m4mx1Mb0%aQY2Q#hZFLVB{% zk&`^h`CcYGv-Vi|%>Wot|N41lyE(hfIj+-{m|&^o&Y>Ph*)1qmn3DIjgrfKf+PX_d zF&wdhu?{vXN^_Jcz}k}{bt*Jz?7C6I7GoGeQHRh1Z<(=%92(3|Fh2^-pq#loHn7pa z8ZTb%z0h7a@AVoPR_+ANKma4mcvsvz~bu#QH5T7i#N{O*^0f33HwqP^x?npin3nlUz zf)c@w27U^59yo>y21q1yaueJzCy--dt&KTKTQ^9!#7He50>QxwYBCp)6{Em^G#Y%U z2upM#l0?NMOG%t!l9ZCBm7|KXMiot}YMQkeTQsp`YG&C=4w;d{B&Vz{Th6%@ELs3v zFuOpblo~46Sf!?_)oQM#!F^h6(o)lAEw|D`=Z^62sjKVOb1#DiTxrB1BMluk@+cF& zHhIP=GfkZ~^DH-Oht;>N(Gzn&W{nPOi?O)%^o2EuRUZ(v(upk2z*vX`#&t0OhYpJ~ zZxmx#%q`A*4hRYfV2xyv(`hjV2IHV0lWy)_nEN4bPU0`|7CvLnE$aRRb8b<0n0wFL z2dwq7Zxr4HttebJ^*oW-pfIciE9*}BcI|!_;D4b14A4|rjZk~wL2bZ+-4e7oBU0zq z!UczWH0H~-X0qATMk>48Y(}$dXm}nS{(DUu&KS4HhPU6U*N!~*2X5mb?Qwv&du()0 zBRp|`)J{<-TBW>damX`M+KTekMVOgw4Ot&!zfijm22|z)H3!kXkxWUYUgD-XDlU%Q ziCQAEk~nk}Nf@a^cn^UA9eSh2tD#nOw4gb!9!Wu}%+GCJ zXa;Vn_1$rjY2GB#Ye*U_H zA`80R#FrfVdRYS>(69|q!yk1YHpcmD!gch;bbU3uaF000JJOGiWi000000Qp0^e*gdg z32;bRa{vG?BLDy{BLR4&KXw2B00(qQO+^Rf3lkG6Ia+gLT>t<8_DMuRR5;6HU>F5h zf$Z!V|3wRO|1VQDU=S_H{m)}(`#(lh3aeTsY=S?oUWK#2pS!^D@7p(qPk;VkHGmPD zAdj8x|9{`UF>u>hF?>IFfg#}fUB;c!!T%W;7#JpQJIfr*O? z#dZ#DZHDjXE--BS@Cv^RxJ-=yGjVY-FfcGM2*yS;{J46R;rls=jsL!VV{p0qm~qql zSNOdkT9Ety>ycv&FoPHv7#ISs-(_6#`WbP72(!`Y@=ZogBLloK#)wNov>^9C0|NuY y*CWRm7#J8ZoK6t%*xCN)GBN(|Cnz@DlRW^lE?#MxOWWfB0000 Date: Thu, 19 Nov 2020 22:23:50 +0100 Subject: [PATCH 4/5] - Fixed cursed ash only being placeable on solid surfaces - Added missing recipes --- .../brazier/block/SpawnPowder.java | 15 +++++++-- .../brazier/data/Blocks.java | 21 +++++++++--- .../possible_triangle/brazier/data/Items.java | 7 +--- .../brazier/data/Recipes.java | 2 ++ .../brazier/models/block/spawn_powder.json | 30 +++++++++++++++++- .../assets/brazier/models/item/ash.json | 6 ++++ .../models/item/warped_nether_wart.json | 6 ++++ .../brazier/textures/block/spawn_powder.png | Bin 1481 -> 1308 bytes .../textures/block/spawn_powder_overlay.png | Bin 0 -> 1089 bytes .../data/brazier/recipes/spawn_powder.json | 27 ++++++++++++++++ 10 files changed, 100 insertions(+), 14 deletions(-) create mode 100644 src/main/resources/assets/brazier/models/item/ash.json create mode 100644 src/main/resources/assets/brazier/models/item/warped_nether_wart.json create mode 100644 src/main/resources/assets/brazier/textures/block/spawn_powder_overlay.png create mode 100644 src/main/resources/data/brazier/recipes/spawn_powder.json diff --git a/src/main/java/com/possible_triangle/brazier/block/SpawnPowder.java b/src/main/java/com/possible_triangle/brazier/block/SpawnPowder.java index 321667d..a2f7eb4 100644 --- a/src/main/java/com/possible_triangle/brazier/block/SpawnPowder.java +++ b/src/main/java/com/possible_triangle/brazier/block/SpawnPowder.java @@ -3,17 +3,23 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.material.Material; +import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; public class SpawnPowder extends Block { - private static final VoxelShape SHAPE = Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 1.0D, 13.0D); + private static final VoxelShape SHAPE = Block.makeCuboidShape(2.0D, 0.0D, 2.0D, 14.0D, 1.0D, 14.0D); public SpawnPowder() { - super(Properties.create(Material.MISCELLANEOUS).doesNotBlockMovement().zeroHardnessAndResistance()); + super(Properties.create(Material.MISCELLANEOUS) + .doesNotBlockMovement() + .zeroHardnessAndResistance() + .func_235838_a_($ -> 1) + ); } @Override @@ -21,4 +27,9 @@ public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, I return SHAPE; } + @Override + public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { + BlockState below = world.getBlockState(pos.down()); + return below.isSolidSide(world, pos.down(), Direction.UP); + } } diff --git a/src/main/java/com/possible_triangle/brazier/data/Blocks.java b/src/main/java/com/possible_triangle/brazier/data/Blocks.java index 3b92ffe..631204e 100644 --- a/src/main/java/com/possible_triangle/brazier/data/Blocks.java +++ b/src/main/java/com/possible_triangle/brazier/data/Blocks.java @@ -18,13 +18,17 @@ public Blocks(DataGenerator generator, ExistingFileHelper fileHelper) { super(generator, Brazier.MODID, fileHelper); } + private ResourceLocation extend(ResourceLocation in, String with) { + return new ResourceLocation(in.getNamespace(), in.getPath() + with); + } + @Override protected void registerStatesAndModels() { Content.BRAZIER.ifPresent(b -> getVariantBuilder(b).forAllStates(s -> { boolean lit = s.get(BrazierBlock.LIT); ResourceLocation r = blockTexture(b); - ResourceLocation model = lit ? new ResourceLocation(r.getNamespace(), r.getPath() + "_lit") : r; + ResourceLocation model = lit ? extend(r, "_lit") : r; return ConfiguredModel.builder() .modelFile(this.models().getExistingFile(model)) .build(); @@ -61,11 +65,18 @@ protected void registerStatesAndModels() { models().getBuilder(b.getRegistryName().getPath()) .texture("particle", blockTexture(b)) .texture("texture", blockTexture(b)) + .texture("overlay", extend(blockTexture(b), "_overlay")) + .element().from(0, 0.25F, 0).to(16, 0.25F, 16) + .shade(false) + .face(Direction.UP).texture("#texture").uvs(0, 0, 16, 16).end() + .face(Direction.DOWN).texture("#texture").uvs(0, 16, 16, 0).end() + .end() .element().from(0, 0.25F, 0).to(16, 0.25F, 16) - .shade(false) - .face(Direction.UP).texture("#texture").uvs(0, 0, 16, 16).end() - .face(Direction.DOWN).texture("#texture").uvs(0, 16, 16, 0).end() - .end().ao(false) + .shade(false) + .face(Direction.UP).texture("#overlay").uvs(0, 0, 16, 16).end() + .face(Direction.DOWN).texture("#overlay").uvs(0, 16, 16, 0).end() + .end() + .ao(false) )); } diff --git a/src/main/java/com/possible_triangle/brazier/data/Items.java b/src/main/java/com/possible_triangle/brazier/data/Items.java index 06b8dc6..4f91422 100644 --- a/src/main/java/com/possible_triangle/brazier/data/Items.java +++ b/src/main/java/com/possible_triangle/brazier/data/Items.java @@ -23,7 +23,7 @@ protected void registerModels() { .map(ResourceLocation::getPath) .ifPresent(b -> this.withExistingParent(b, modLoc("block/" + b))); - Stream.of(Content.LIVING_FLAME).forEach(c -> c + Stream.of(Content.LIVING_FLAME, Content.SPAWN_POWDER, Content.WARPED_NETHERWART, Content.ASH).forEach(c -> c .map(ForgeRegistryEntry::getRegistryName) .map(ResourceLocation::getPath) .ifPresent(i -> singleTexture(i, mcLoc("item/generated"), "layer0", modLoc("item/" + i))) @@ -39,10 +39,5 @@ protected void registerModels() { .map(ResourceLocation::getPath) .ifPresent(i -> withExistingParent(i, mcLoc("item/template_spawn_egg"))); - Content.SPAWN_POWDER - .map(ForgeRegistryEntry::getRegistryName) - .map(ResourceLocation::getPath) - .ifPresent(i -> singleTexture(i, mcLoc("item/generated"), "layer0", modLoc("item/" + i))); - } } diff --git a/src/main/java/com/possible_triangle/brazier/data/Recipes.java b/src/main/java/com/possible_triangle/brazier/data/Recipes.java index a43f03a..772cec3 100644 --- a/src/main/java/com/possible_triangle/brazier/data/Recipes.java +++ b/src/main/java/com/possible_triangle/brazier/data/Recipes.java @@ -45,6 +45,7 @@ protected void registerRecipes(Consumer consumer) { .addIngredient(Content.WARPED_NETHERWART.orElse(Items.NETHER_WART)) .addCriterion("collected_flame", hasItem(flame)) .addCriterion("collected_ash", hasItem(Content.ASH_TAG)) + .build(consumer) ); Content.WARPED_NETHERWART.ifPresent(wart -> @@ -54,6 +55,7 @@ protected void registerRecipes(Consumer consumer) { .patternLine("xxx") .key('x', wart) .addCriterion("collected_wart", hasItem(wart)) + .build(consumer) ); } diff --git a/src/main/resources/assets/brazier/models/block/spawn_powder.json b/src/main/resources/assets/brazier/models/block/spawn_powder.json index b1c6165..47b7d18 100644 --- a/src/main/resources/assets/brazier/models/block/spawn_powder.json +++ b/src/main/resources/assets/brazier/models/block/spawn_powder.json @@ -2,7 +2,8 @@ "ambientocclusion": false, "textures": { "particle": "brazier:block/spawn_powder", - "texture": "brazier:block/spawn_powder" + "texture": "brazier:block/spawn_powder", + "overlay": "brazier:block/spawn_powder_overlay" }, "elements": [ { @@ -31,6 +32,33 @@ "texture": "#texture" } } + }, + { + "from": [ + 0, + 0.25, + 0 + ], + "to": [ + 16, + 0.25, + 16 + ], + "shade": false, + "faces": { + "down": { + "texture": "#overlay", + "uv": [ + 0.0, + 16.0, + 16.0, + 0.0 + ] + }, + "up": { + "texture": "#overlay" + } + } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/brazier/models/item/ash.json b/src/main/resources/assets/brazier/models/item/ash.json new file mode 100644 index 0000000..2961aaa --- /dev/null +++ b/src/main/resources/assets/brazier/models/item/ash.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "brazier:item/ash" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/brazier/models/item/warped_nether_wart.json b/src/main/resources/assets/brazier/models/item/warped_nether_wart.json new file mode 100644 index 0000000..7443384 --- /dev/null +++ b/src/main/resources/assets/brazier/models/item/warped_nether_wart.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "brazier:item/warped_nether_wart" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/brazier/textures/block/spawn_powder.png b/src/main/resources/assets/brazier/textures/block/spawn_powder.png index 00455c63c84de411881c4766137be1f7483fa698..ce2eb2dacd95f75889530cf3f50dca2cb1af0702 100644 GIT binary patch delta 1242 zcmV<01SR{)3!Dm&BYy+YdQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+U1v9mgFW3 zhTmC5mVgjKupG?goY_H^pC3%Qs_k-jPiLMIb8N5>66h1S%Cx_Kb@LZ4O34~88bb=f z;_}HSm(hrJzxJA}pU?GTAB_)kb96X}7&Y&&p)LIkxjYA`Uw`uLqugj&cH%Phu)GZN z@a)i7dT|+Ix65h0o3zGd|FWEQ_u^)^Y<|XHkp)fWqg>Z_|l9RlT-HgzQ+QajQj@%Cy*Vy$MdvE*d zvJZ$y6#F25DUe5F+>%Oa|HQ$p&JfKvtboBE&I*PsYq0d$)lAiMUFpgAH>4oalyc zj8U4pPTVfW(E<>{ffZ;HXTb7akU#1pawrRnHzE>5B}$SUIQSqT1P$Yi%F60hG^lFS zq&af*QGa5H8e>c`CzlvUn52-@q?l658BQ}yXN=C!$a!-cZ+??4Y`VoQZMh(QiZ4<^ z(Gp84xw^^~+rNgYrpB6TZq$%U%{OVGX^Snj+>vXYyYJFN*B*Q7`JlF_exybxa-UP9 zMQsrCQ%|4NAXa^tpmChYUv02g%-1md3=+8 zT$_Ju;D2kVtBi)*s^dnb+q}P)%B{UOXI=!Yhm%UP`7DWNGb2|{hAt}Go))!q=bPWf z#ea6W8r!nDGvdQt&taz4xnO*H=Zw(c=w3vxHDkBT=mai>Q`}#OE1xyZW$0G#j9vn^ zRWIaa{Mr&T8;UQ&A^K6R#y^^&)!DQZWr?J%$+*7ytlZUR4K5^KseWD?s`^b;($5YF z^FHsss-L-A7I1_0Up(eV+@#+Sybz7XePUDfnjX(|7@28qQl-|5&(B?&-A@&cfgJ;OqOtrO}^? z(SN{@cKmF?zgF`Pi(!*fy2XARlUM{Ze-tVP=~`Ij0002YNkl%c*naV{B+6VzyA?Jun@xbR#j8g zX72tM81{{6nhYT4?B;nsZWA#PaWTfN_j*2YX9@rZSV{@NdG8Hqh#LY`H4!1DY=rlo zaUA!v1{_p$6;vxbP$g6jo3Ve5m2Kx7IDnLr zscN0M&fxPBfXg{|uP~g2m~-C1J@1zUYlzj(rPA-$8&b_&7;?C8E&u=k07*qoM6N<$ Ef@~>n9smFU delta 1417 zcmV;41$O$J3dswQBYy-ddQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+T~YUwks(J z{dW{S1OZVTj?cC340`yDkE$e<$GPX+{_2h^r6Pjv4Wwe)-@m%~OFw8CjpHCbdT;gP zqKlYxAa;FL57y1+p4emXAUEd%s))3wHT7-lCzbPULvUN3AAjX0lx;`0p~LbvNW(Mg zVC%^?M7ZRz=O*rb$=zLNe|y2X%y}(c=PoE1mDL`h!A3wKN4lm%HqYHL6Z8<$cVXWT@{({k#1HZ;@B6MNx@cgjQ>gnPcyI!UDwr-c4SERhz zmpZO8N2;iBI)9qmytbfU)^V6EY7@O;QO2sWnY9%I5m3?Y;GjZ+4sG@YiXPEn!=OE4 zL7Fn5fDwy=4&+9Ij)5XoL!xXHWsOvf=UHI-jniKNQO^}r6G4rE?s#hEmGCF+G}QYD zT>vX5R(dWRF|EfK%#EjNDIw4|rabYT&D_O}y(5;CL4Tewi(W9T9gPTPeG}Pl$0#zSmP%+(HKfh> z5+^KPf`5oaNf9Gy3FGKvFi~QRDXG(>rjzbYs*zI0Oxb15K8Gwh=2SF%iYr`v2}MdQ zsbZz7>0f;frb>-9HE0@2%{6Ymg(fYw)HT*Rb=SH39=i0{)5+Rq^^rBWF!z}?*sKl4 z+|&y<)>ItAVFE@u;lY_Qh7OeRFc{E)#=)5taDNU5bAvM*QIkT8zn+o@ITZ$D%Ajk2 z+~MTz#@t8V47+dfhVPg&gSvl%IWwr+%sun=g0-6FFA7b9MivfCEp;tys?a2%r16{d zwnPissG4$x|s5Wlex8Ee-R$<=mRklzw12MAqSpErgx5uyk6qtwxLyt6?bZ?(RyL$^ ztaE=u#g*p|tbJhd4ETH;jLqQ@<%I4ibFHm_>rT38)eoN%&OE2nSN$y|%Mra4ym{@t zq;wy1;p=QR_~Y|D8a0o#q1JaupGWA-ukyw0!@o_|FS)GMuUtD&!3R`w{ldV>vOQfX zV`i!bgy&fNUavopfj?*e@Ac-sOnh(aV{aad#8dew{WqPMKRLyJ+>rh~=~e&dntuQ- zn!bMQQ~hF-{sS|A6Eq4j;ysiA00AFKL_t(I%hi)HPQ)+}MgJ_6tIS@&$l?Hz_5hQM zAkiUl5hRWfDcwqY5!^!K1FS5$-GYfwN```Ul!Rq#aA(i>{h2>D@UNHa+VcSsF%cQ} z-h1=j|HxZ6g4Oh(u4}97+EkT72v|2_qndLwC;)s8!yFKQW26`(F|)a@wXJ=tA8#B~ z6{=d44FHDMH_);y@4Y$akaI>=Rbb{4A^-+}LI`92YGI0{lt@)kRTT~!o+?{`Ok0@& z^1~yEi1mFB0N9=!U}mKIy8@Z5>)%FHE?qr6gPGxX`&sE{D-aO_Kq)24Im7SvaLy3` z1iA=VH)6N%I&*!}JH;4r5l}{1;why+{-M4A XuabW?Zb67n00000NkvXXu0mjfL>IT? diff --git a/src/main/resources/assets/brazier/textures/block/spawn_powder_overlay.png b/src/main/resources/assets/brazier/textures/block/spawn_powder_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..8325a357ae4abb2b1aaa70dd16c377c1d2c5cf1d GIT binary patch literal 1089 zcmV-H1it%;P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=KVk|QY$h5vJkIRcUp%W+sE`UZXcc`SC7U3Pc5 zx+Y>GW|DA13U~;8%EhMt{4va5IM}i`PDAv`dyB&*mpG#l?LKx*)~)lou$RV--CR2u zCP6Lx()Tky!>(@=f;;wdYd4`Dop^*U%12P<%8bSt7mtwew$r&b>CDUS-FD7zR9@X$ zcGvy23kXJ2=m{I{LSk|Da~0XY3>&R;nuAu`t+Psc96NJu-UaX4x{IC7$1b;_FxH;| z{w_wxPWm`@D?)eFE-T-3G`TMEF?OTHG5X$Jb{>)P=4|S+mDR#Pgwx5I=1~HEigs8f zp+s!4f>;C1f>I47Vnln8qehtq^;K7@aM5w+fSS1?;?ou-aN-Iegz%%#;2=qwkq9ak z)C6X}`a)~nwAQN>v2r7fWP%uB#)o1a8NX7lLSxL-C9?4vEBM7Tr{TsVH_sRaAT&-) zb;WlT^Db}fJFo(Ry22c>!EDQxC`xa+C5y9QoLXn>zBMScBY+TLZG|()Zb#OWD0#Ah zIS?U^5qvT{XK`FWfK<7W8DJyg0VncY8*>7!v8=q!c(ee7ikAR1NitwLr^uh+B629J zs57eSHE7hN*^75xz4yV-XH*UnT+rY{2r;CPqeK@q`WRx2DdxmU@Cei7Q!pu}lyb(R z8PXZEGe+cGxJYqDi!Y(Xl1i>fpX#bsUqg*G)!evA!|mUE3#P@ETJF@5O5JtszK0%r z>Ukj7h731!_z^}NY2+)lL-m##-I4n>H9FKLF}KErH)=44aFL+-IMK-r#Mlvthe-el z&6AmpD*VcW$toe@ke2380U$Y&?yMOfzaiieX#j6)z!k@0q zZb)l>E4esgz}IPhC;S;Xvt;tv{y_on&D~$1?qBxkV)(kGdDelsdv_g})eb&EjdA4i zV3K(;rcdktgF5>0gs*S zf3h{p&Ytlfmq8R6Oth_3w+Y>F+G(QLKzxdb3KQBz(VztYA3hfUe!t5}00000NkvXX Hu0mjf#(Mny literal 0 HcmV?d00001 diff --git a/src/main/resources/data/brazier/recipes/spawn_powder.json b/src/main/resources/data/brazier/recipes/spawn_powder.json new file mode 100644 index 0000000..a828b08 --- /dev/null +++ b/src/main/resources/data/brazier/recipes/spawn_powder.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "brazier:ash" + }, + { + "tag": "brazier:ash" + }, + { + "tag": "brazier:ash" + }, + { + "tag": "brazier:ash" + }, + { + "item": "minecraft:charcoal" + }, + { + "item": "brazier:warped_nether_wart" + } + ], + "result": { + "item": "brazier:spawn_powder", + "count": 6 + } +} \ No newline at end of file From f2c15f395d8d41632a5711b8c725d9fe9ef5c20c Mon Sep 17 00:00:00 2001 From: PssbleTrngle Date: Fri, 20 Nov 2020 21:26:21 +0100 Subject: [PATCH 5/5] - Created warped_wart -> warped_warp_block recipe - Added glow to cursed ash texture - Drop cursed ash if block below is broken --- .../possible_triangle/brazier/Content.java | 2 ++ .../brazier/block/SpawnPowder.java | 7 ++++ .../brazier/data/Blocks.java | 15 +++------ .../possible_triangle/brazier/data/Loot.java | 4 ++- .../brazier/data/Recipes.java | 19 +++++------ .../brazier/models/block/spawn_powder.json | 30 +----------------- .../brazier/textures/block/spawn_powder.png | Bin 1308 -> 1630 bytes .../brazier/textures/block/spawn_powder.xcf | Bin 0 -> 3635 bytes .../textures/block/spawn_powder_overlay.png | Bin 1089 -> 0 bytes .../brazier/recipes/warped_warp_block.json | 16 ++++++++++ .../data/brazier/tags/items/warped_wart.json | 6 ++++ 11 files changed, 49 insertions(+), 50 deletions(-) create mode 100644 src/main/resources/assets/brazier/textures/block/spawn_powder.xcf delete mode 100644 src/main/resources/assets/brazier/textures/block/spawn_powder_overlay.png create mode 100644 src/main/resources/data/brazier/recipes/warped_warp_block.json create mode 100644 src/main/resources/data/brazier/tags/items/warped_wart.json diff --git a/src/main/java/com/possible_triangle/brazier/Content.java b/src/main/java/com/possible_triangle/brazier/Content.java index 0947f7e..355b718 100644 --- a/src/main/java/com/possible_triangle/brazier/Content.java +++ b/src/main/java/com/possible_triangle/brazier/Content.java @@ -59,7 +59,9 @@ public class Content { public static final ITag> BRAZIER_WHITELIST = EntityTypeTags.func_232896_a_(new ResourceLocation(MODID, "brazier_whitelist").toString()); public static final ITag> BRAZIER_BLACKLIST = EntityTypeTags.func_232896_a_(new ResourceLocation(MODID, "brazier_blacklist").toString()); public static final ITag TORCHES = ItemTags.makeWrapperTag(new ResourceLocation(MODID, "torches").toString()); + public static final ITag ASH_TAG = ItemTags.makeWrapperTag(new ResourceLocation(MODID, "ash").toString()); + public static final ITag WARPED_WART_TAG = ItemTags.makeWrapperTag(new ResourceLocation(MODID, "warped_wart").toString()); public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MODID); public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, MODID); diff --git a/src/main/java/com/possible_triangle/brazier/block/SpawnPowder.java b/src/main/java/com/possible_triangle/brazier/block/SpawnPowder.java index a2f7eb4..b737a1e 100644 --- a/src/main/java/com/possible_triangle/brazier/block/SpawnPowder.java +++ b/src/main/java/com/possible_triangle/brazier/block/SpawnPowder.java @@ -2,12 +2,14 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; import net.minecraft.block.material.Material; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; public class SpawnPowder extends Block { @@ -32,4 +34,9 @@ public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos po BlockState below = world.getBlockState(pos.down()); return below.isSolidSide(world, pos.down(), Direction.UP); } + + public BlockState updatePostPlacement(BlockState state, Direction facing, BlockState neighbor, IWorld world, BlockPos block, BlockPos facingPos) { + return !state.isValidPosition(world, block) ? Blocks.AIR.getDefaultState() : super.updatePostPlacement(state, facing, neighbor, world, block, facingPos); + } + } diff --git a/src/main/java/com/possible_triangle/brazier/data/Blocks.java b/src/main/java/com/possible_triangle/brazier/data/Blocks.java index 631204e..81392e4 100644 --- a/src/main/java/com/possible_triangle/brazier/data/Blocks.java +++ b/src/main/java/com/possible_triangle/brazier/data/Blocks.java @@ -65,18 +65,11 @@ protected void registerStatesAndModels() { models().getBuilder(b.getRegistryName().getPath()) .texture("particle", blockTexture(b)) .texture("texture", blockTexture(b)) - .texture("overlay", extend(blockTexture(b), "_overlay")) .element().from(0, 0.25F, 0).to(16, 0.25F, 16) - .shade(false) - .face(Direction.UP).texture("#texture").uvs(0, 0, 16, 16).end() - .face(Direction.DOWN).texture("#texture").uvs(0, 16, 16, 0).end() - .end() - .element().from(0, 0.25F, 0).to(16, 0.25F, 16) - .shade(false) - .face(Direction.UP).texture("#overlay").uvs(0, 0, 16, 16).end() - .face(Direction.DOWN).texture("#overlay").uvs(0, 16, 16, 0).end() - .end() - .ao(false) + .shade(false) + .face(Direction.UP).texture("#texture").uvs(0, 0, 16, 16).end() + .face(Direction.DOWN).texture("#texture").uvs(0, 16, 16, 0).end() + .end().ao(false) )); } diff --git a/src/main/java/com/possible_triangle/brazier/data/Loot.java b/src/main/java/com/possible_triangle/brazier/data/Loot.java index 2a49a7c..27dd3c6 100644 --- a/src/main/java/com/possible_triangle/brazier/data/Loot.java +++ b/src/main/java/com/possible_triangle/brazier/data/Loot.java @@ -30,6 +30,8 @@ public Loot(DataGenerator generator) { @SubscribeEvent public static void onLootLoaded(LootTableLoadEvent event) { + boolean noNetherEx = !ModList.get().isLoaded("nether_extension"); + if (event.getName().equals(LootTables.CHESTS_JUNGLE_TEMPLE)) { Content.LIVING_FLAME.ifPresent(flame -> event.getTable().addPool(LootPool.builder() @@ -37,7 +39,7 @@ public static void onLootLoaded(LootTableLoadEvent event) { .addEntry(EmptyLootEntry.func_216167_a().weight(1)) .build()) ); - } else if (event.getName().equals(EntityType.WITHER_SKELETON.getLootTable()) && !ModList.get().isLoaded("nether_extension")) { + } else if (event.getName().equals(EntityType.WITHER_SKELETON.getLootTable()) && !noNetherEx) { Content.ASH.ifPresent(ash -> event.getTable().addPool(LootPool.builder() .addEntry(ItemLootEntry.builder(ash) .acceptFunction(SetCount.builder(RandomValueRange.of(-1, 1))) diff --git a/src/main/java/com/possible_triangle/brazier/data/Recipes.java b/src/main/java/com/possible_triangle/brazier/data/Recipes.java index 772cec3..7303708 100644 --- a/src/main/java/com/possible_triangle/brazier/data/Recipes.java +++ b/src/main/java/com/possible_triangle/brazier/data/Recipes.java @@ -6,9 +6,12 @@ import net.minecraft.item.Item; import net.minecraft.item.Items; import net.minecraft.item.crafting.Ingredient; +import net.minecraft.util.ResourceLocation; import java.util.function.Consumer; +import static com.possible_triangle.brazier.Brazier.MODID; + public class Recipes extends RecipeProvider { public Recipes(DataGenerator generator) { @@ -48,15 +51,13 @@ protected void registerRecipes(Consumer consumer) { .build(consumer) ); - Content.WARPED_NETHERWART.ifPresent(wart -> - ShapedRecipeBuilder.shapedRecipe(Blocks.field_235374_mn_) - .patternLine("xxx") - .patternLine("xxx") - .patternLine("xxx") - .key('x', wart) - .addCriterion("collected_wart", hasItem(wart)) - .build(consumer) - ); + ShapedRecipeBuilder.shapedRecipe(Blocks.field_235374_mn_) + .patternLine("xxx") + .patternLine("xxx") + .patternLine("xxx") + .key('x', Content.WARPED_WART_TAG) + .addCriterion("collected_wart", hasItem(Content.WARPED_WART_TAG)) + .build(consumer, new ResourceLocation(MODID, "warped_warp_block")); } } diff --git a/src/main/resources/assets/brazier/models/block/spawn_powder.json b/src/main/resources/assets/brazier/models/block/spawn_powder.json index 47b7d18..b1c6165 100644 --- a/src/main/resources/assets/brazier/models/block/spawn_powder.json +++ b/src/main/resources/assets/brazier/models/block/spawn_powder.json @@ -2,8 +2,7 @@ "ambientocclusion": false, "textures": { "particle": "brazier:block/spawn_powder", - "texture": "brazier:block/spawn_powder", - "overlay": "brazier:block/spawn_powder_overlay" + "texture": "brazier:block/spawn_powder" }, "elements": [ { @@ -32,33 +31,6 @@ "texture": "#texture" } } - }, - { - "from": [ - 0, - 0.25, - 0 - ], - "to": [ - 16, - 0.25, - 16 - ], - "shade": false, - "faces": { - "down": { - "texture": "#overlay", - "uv": [ - 0.0, - 16.0, - 16.0, - 0.0 - ] - }, - "up": { - "texture": "#overlay" - } - } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/brazier/textures/block/spawn_powder.png b/src/main/resources/assets/brazier/textures/block/spawn_powder.png index ce2eb2dacd95f75889530cf3f50dca2cb1af0702..8fb2050c5323c05b435c1816ce9a7acfe6ac6379 100644 GIT binary patch delta 1586 zcmV-22F>}L3f>HmBYy;pdQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+T~YUk|ZY# z{O1%t0ul&`<4`;z_69z_lY;8$>BmgWuD|Rex&Rdj$V>t4`rp5X`wI_yV;4m&<&-?0 zm}BOGg8B8VoP0dryW+3HC%e0SV3-2(u&Sx=_62tN=%8`ikAKg0r*-?W?dbBn9fmnF zqp;iAb`*HoY1due{Yt!B&i;+c=Vv+Ar^k9!fYAj00z2-3g2y|}QNsEa*a&Zw`Lb|G zc>7?lv2(ZL19-R619rY_d-x26^JzCo4;XDb$!qLRgdSMCM*j4{A71_abC2CN(4c4~DJ4yFk1858s%TPG z)2zjUMSl}Zre>C{WX=IwnB3jI5G8MU}HmrZiTJP zGwHW;_ooj2w~mI&Eb!4dbgILbRjn=b{@R_pGxU)jnsi?tE%xYUYURPvQUo_+BA#it_`8;jnhdE{(qWR0XF|L8IT>wh#C z-BUP-+O@hL!{nZDJK9_9!{U;QRcmz{x5V7N#>#>RQCqd_@N69i*aM83+xp09cbOOV zUHC57qqO^&HQBCH9=Lq#4%+t);!Bl=ycTpoLg_5JAK-Zdt&HVGL%kvsXaDD|;$58O za%nU!5hBXNysTV9xF5~sd2Tlv;W21DD|xhUmHf4`{~-UbIKrQshX32{ANdQ^MZh5S zqW}N^24YJ`L;(K){{a7>y{D6t5CkB96cZW>r!ouy0003~NklA0Err8Y$)?akTk#nLA1RVfuoU0HYqeRhHgc8{-NT%E0msG*UJTYc-OSE> z`*|wN?S?cDwSBKCpUmNi-LT z6a&)NT%%4~n+N+96*A^=XnK4iC9E9WGpctYyj&&nE1=f0x~7WwY*-8^v$OE_CeAs2 k1(d6#-{-5HKmMUU0i^tpoY5l*qW}N^07*qoM6N<$g4Fd3V*mgE delta 1272 zcmVaB^>EX>4U6ba`-PAZ2)IW&i+q+U1v9mgFW3 zhTmC5mVgjKupG?goY_H^pC3%Qs_k-jPiLMIb8N5>66h1S%Cx_Kb@LZ4O34~88bb=f z;_}HSm(hrJzxJA}pU?GTAB_)kb96X}7&Y&&p)LIkxjYA`Uw`uLqugj&cH%Phu)GZN z@a)i7dT|+Ix65h0o3zGd|FWEQ_u^)^Y<|XHkp)fWqg>Z_|l9RlT-HgzQ+QajQj@%Cy*Vy$MdvE*d zvJZ$y6#F25DUe5F+>%Oa|HQ$p&JfKvtboBE&I*PsYq0d$)lAiMUFpgAH>4oalyc zj8U4pPTVfW(E<>{ffZ;HXTb7akU#1pawrRnHzE>5B}$SUIQSqT1P$Yi%F60hG^lFS zq&af*QGa5H8e>c`CzlvUn52-@q?l658BQ}yXN=C!$a!-cZ+??4Y`VoQZMh(QiZ4<^ z(Gp84xw^^~+rNgYrpB6TZq$%U%{OVGX^Snj+>vXYyYJFN*B*Q7`JlF_exybxa-UP9 zMQsrCQ%|4NAXa^tpmChYUv02g%-1md3=+8 zT$_Ju;D2kVtBi)*s^dnb+q}P)%B{UOXI=!Yhm%UP`7DWNGb2|{hAt}Go))!q=bPWf z#ea6W8r!nDGvdQt&taz4xnO*H=Zw(c=w3vxHDkBT=mai>Q`}#OE1xyZW$0G#j9vn^ zRWIaa{Mr&T8;UQ&A^K6R#y^^&)!DQZWr?J%$+*7ytlZUR4K5^KseWD?s`^b;($5YF z^FHsss-L-A7I1_0Up(eV+@#+Sybz7XeScH+njX(|7@28qQl-|5&(B?&-A@&cfgJ;OqOtrO}^? z(SN{@cKmF?zgF`Pi(!*fy2XAR00006VoOIv00000008+zyMF)x010qNS#tmYE|b;- z6@L>HDhBCVSmgi!0L)25K~y-))seBS!!Qg)p8}VGJOKet;0^TW{6NOh2A;rxCXkAh zVH(S@BiU^bcA|L4yCeK`$>YEO5kjyK!uD2GQ`Khf{udbbjcJ+;Am{Anc|L9vF%fYw z#;x~yK5=IX00&q~3BY;p4QPlP0#!8;A#J6E_nvVa_p=5ZRCEgLE_i diff --git a/src/main/resources/assets/brazier/textures/block/spawn_powder.xcf b/src/main/resources/assets/brazier/textures/block/spawn_powder.xcf new file mode 100644 index 0000000000000000000000000000000000000000..05f81082b97b49294abcfee8c250e4d93d21d850 GIT binary patch literal 3635 zcmdUxU2hvj7=_2X>)3H!`Uw&emWBXIQYl+IO-mbPU5SsPN+4CV6(Av1ZnANW{1Mr1 zlUyKig#`DYl~zK)kKmGj0l$K~N+1$9!}HGWrdx1HFM88i&(1q%=FHihIWy~ar?;hd z);INodZVF8C(|tP_vBOLLV?>Ea{1lw%pa18&yqcIk^D*;JCrXgV@OhMr+&xR*Y5nZSCq#ud5$~!%=6@59S+weO`zC^}$A`-wx()-@3MRdH!m%vX&8> z6|L9Ct+wvBdSNj4{!VApzb-@j?{vna8{zO~tGCq+=bD!_*V=iyKArMjYaHI{^ys}@ zU#_n<8mo;fdbzQ>(pbHCMa?E0@n-X&j;R+5d3X&OcruS=^Jk zMQ;x~8`*-Zh0%Do8*1LLv$0rN*le#4x`Ux!u*K4_eYd6Se%+=i0sgRQ5$fG3)T~`U zJrL^7Xsfl3!!$FM4p>>(od%}Z(tTD!clzu1!jbR?o13F>eE5JsyZ?m}@bLumVO&!yQ%!yBQgy5?rNLEy zB~IpEvMu|zKASomkPcXRnwvccLOQ3A!_5;ch<#0rT;^uvfW(~AfE-bB!35j4HRNm= zBNr>$r+FGV+D&Zb@bm;DVqy~^mw6gFAhD=4AV-v3Fv0e14LMsz$VH0wY0gHDb`y!5 zF~`*eM;b=Ot_8D~xEVPh@v1Z+cj$GPVEeX?oGlGD z-2#)7 z8{t_EAcMRp-|}>E<&h;-`$=i<*+is$s^3m&6VBoH-)D6_RR{{IpxLOn z!139vI*`?>c*+S1y5N`8Lo?kWi>-~ z^t?hP&Z%IXoXW~`REcsbyg^Ro!t+vD!FbG#J>gtVx#ZyDm@2EHIgp~j-!MnQ8IVVG Y<^O~&%j!=#*XV1z|LfqJg}9*p0hZ$SNB{r; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/brazier/textures/block/spawn_powder_overlay.png b/src/main/resources/assets/brazier/textures/block/spawn_powder_overlay.png deleted file mode 100644 index 8325a357ae4abb2b1aaa70dd16c377c1d2c5cf1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1089 zcmV-H1it%;P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=KVk|QY$h5vJkIRcUp%W+sE`UZXcc`SC7U3Pc5 zx+Y>GW|DA13U~;8%EhMt{4va5IM}i`PDAv`dyB&*mpG#l?LKx*)~)lou$RV--CR2u zCP6Lx()Tky!>(@=f;;wdYd4`Dop^*U%12P<%8bSt7mtwew$r&b>CDUS-FD7zR9@X$ zcGvy23kXJ2=m{I{LSk|Da~0XY3>&R;nuAu`t+Psc96NJu-UaX4x{IC7$1b;_FxH;| z{w_wxPWm`@D?)eFE-T-3G`TMEF?OTHG5X$Jb{>)P=4|S+mDR#Pgwx5I=1~HEigs8f zp+s!4f>;C1f>I47Vnln8qehtq^;K7@aM5w+fSS1?;?ou-aN-Iegz%%#;2=qwkq9ak z)C6X}`a)~nwAQN>v2r7fWP%uB#)o1a8NX7lLSxL-C9?4vEBM7Tr{TsVH_sRaAT&-) zb;WlT^Db}fJFo(Ry22c>!EDQxC`xa+C5y9QoLXn>zBMScBY+TLZG|()Zb#OWD0#Ah zIS?U^5qvT{XK`FWfK<7W8DJyg0VncY8*>7!v8=q!c(ee7ikAR1NitwLr^uh+B629J zs57eSHE7hN*^75xz4yV-XH*UnT+rY{2r;CPqeK@q`WRx2DdxmU@Cei7Q!pu}lyb(R z8PXZEGe+cGxJYqDi!Y(Xl1i>fpX#bsUqg*G)!evA!|mUE3#P@ETJF@5O5JtszK0%r z>Ukj7h731!_z^}NY2+)lL-m##-I4n>H9FKLF}KErH)=44aFL+-IMK-r#Mlvthe-el z&6AmpD*VcW$toe@ke2380U$Y&?yMOfzaiieX#j6)z!k@0q zZb)l>E4esgz}IPhC;S;Xvt;tv{y_on&D~$1?qBxkV)(kGdDelsdv_g})eb&EjdA4i zV3K(;rcdktgF5>0gs*S zf3h{p&Ytlfmq8R6Oth_3w+Y>F+G(QLKzxdb3KQBz(VztYA3hfUe!t5}00000NkvXX Hu0mjf#(Mny diff --git a/src/main/resources/data/brazier/recipes/warped_warp_block.json b/src/main/resources/data/brazier/recipes/warped_warp_block.json new file mode 100644 index 0000000..8eeb74a --- /dev/null +++ b/src/main/resources/data/brazier/recipes/warped_warp_block.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "xxx", + "xxx", + "xxx" + ], + "key": { + "x": { + "tag": "brazier:warped_wart" + } + }, + "result": { + "item": "minecraft:warped_wart_block" + } +} \ No newline at end of file diff --git a/src/main/resources/data/brazier/tags/items/warped_wart.json b/src/main/resources/data/brazier/tags/items/warped_wart.json new file mode 100644 index 0000000..1e68d7c --- /dev/null +++ b/src/main/resources/data/brazier/tags/items/warped_wart.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "brazier:warped_nether_wart" + ] +} \ No newline at end of file