From febeafe4597b485cfd2bddf2a46129dd926947ce Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 17 Jun 2023 22:55:05 +0200 Subject: [PATCH] glyphid hives --- src/main/java/com/hbm/blocks/ModBlocks.java | 8 +- .../blocks/generic/BlockGlyphidSpawner.java | 49 +++++++ .../java/com/hbm/entity/EntityMappings.java | 1 + .../com/hbm/entity/mob/EntityGlyphid.java | 13 ++ .../hbm/entity/mob/EntityGlyphidBrenda.java | 2 +- .../hbm/entity/mob/EntityGlyphidScout.java | 102 ++++++++++++++ src/main/java/com/hbm/lib/HbmWorldGen.java | 8 ++ src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 1 + .../java/com/hbm/tileentity/TileMappings.java | 2 + .../com/hbm/world/feature/GlyphidHive.java | 128 ++++++++++++++++++ .../hbm/textures/blocks/glyphid_base.png | Bin 0 -> 583 bytes .../hbm/textures/blocks/glyphid_base_2.png | Bin 0 -> 560 bytes .../hbm/textures/entity/glyphid_scout.png | Bin 0 -> 2378 bytes 14 files changed, 313 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java create mode 100644 src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java create mode 100644 src/main/java/com/hbm/world/feature/GlyphidHive.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/glyphid_base.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/glyphid_base_2.png create mode 100644 src/main/resources/assets/hbm/textures/entity/glyphid_scout.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 1a9438c41..e745ad561 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -495,11 +495,13 @@ public class ModBlocks { public static Block glass_ash; public static Block glass_quartz; - public static Block mush; public static Block mush_block; public static Block mush_block_stem; + public static Block glyphid_base; + public static Block glyphid_spawner; + public static Block plant_flower; public static Block plant_tall; public static Block plant_dead; @@ -1695,6 +1697,8 @@ public class ModBlocks { mush = new BlockMush(Material.plants).setBlockName("mush").setCreativeTab(MainRegistry.blockTab).setLightLevel(0.5F).setStepSound(Block.soundTypeGrass).setBlockTextureName(RefStrings.MODID + ":mush"); mush_block = new BlockMushHuge(Material.plants).setBlockName("mush_block").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_skin"); mush_block_stem = new BlockMushHuge(Material.plants).setBlockName("mush_block_stem").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_stem"); + glyphid_base = new BlockBase(Material.coral).setBlockName("glyphid_base").setStepSound(Block.soundTypeCloth).setHardness(0.5F); + glyphid_spawner = new BlockGlyphidSpawner(Material.coral).setBlockName("glyphid_spawner").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_base"); plant_flower = new BlockNTMFlower().setBlockName("plant_flower").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); plant_tall = new BlockTallPlant().setBlockName("plant_tall").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); @@ -2836,6 +2840,8 @@ public class ModBlocks { GameRegistry.registerBlock(mush, mush.getUnlocalizedName()); GameRegistry.registerBlock(mush_block, mush_block.getUnlocalizedName()); GameRegistry.registerBlock(mush_block_stem, mush_block_stem.getUnlocalizedName()); + GameRegistry.registerBlock(glyphid_base, glyphid_base.getUnlocalizedName()); + GameRegistry.registerBlock(glyphid_spawner, glyphid_spawner.getUnlocalizedName()); GameRegistry.registerBlock(moon_turf, moon_turf.getUnlocalizedName()); //Waste diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java new file mode 100644 index 000000000..155b256fc --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java @@ -0,0 +1,49 @@ +package com.hbm.blocks.generic; + +import java.util.List; + +import com.hbm.entity.mob.EntityGlyphid; +import com.hbm.entity.mob.EntityGlyphidScout; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.EnumDifficulty; +import net.minecraft.world.World; + +public class BlockGlyphidSpawner extends BlockContainer { + + public BlockGlyphidSpawner(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityGlpyhidSpawner(); + } + + public static class TileEntityGlpyhidSpawner extends TileEntity { + + @Override + public void updateEntity() { + + if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 60 == 0 && this.worldObj.difficultySetting != EnumDifficulty.PEACEFUL) { + + List list = worldObj.getEntitiesWithinAABB(EntityGlyphid.class, AxisAlignedBB.getBoundingBox(xCoord - 4, yCoord + 1, zCoord - 4, xCoord + 5, yCoord + 4, zCoord + 5)); + + if(list.size() < 3) { + EntityGlyphid glyphid = new EntityGlyphid(worldObj); + glyphid.setLocationAndAngles(xCoord + 0.5, yCoord + 1, zCoord + 0.5, worldObj.rand.nextFloat() * 360.0F, 0.0F); + this.worldObj.spawnEntityInWorld(glyphid); + } + + if(worldObj.rand.nextInt(20) == 0) { + EntityGlyphidScout scout = new EntityGlyphidScout(worldObj); + scout.setLocationAndAngles(xCoord + 0.5, yCoord + 1, zCoord + 0.5, worldObj.rand.nextFloat() * 360.0F, 0.0F); + this.worldObj.spawnEntityInWorld(scout); + } + } + } + } +} diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index c50d13566..d231fa8b6 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -245,6 +245,7 @@ public class EntityMappings { addMob(EntityGlyphidBrenda.class, "entity_glyphid_brenda", 0x4FC0C0, 0xA0A0A0); addMob(EntityGlyphidBombardier.class, "entity_glyphid_bombardier", 0xDDD919, 0xDBB79D); addMob(EntityGlyphidBlaster.class, "entity_glyphid_blaster", 0xD83737, 0xDBB79D); + addMob(EntityGlyphidScout.class, "entity_glyphid_scout", 0x273038, 0xB9E36B); addSpawn(EntityCreeperPhosgene.class, 5, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); addSpawn(EntityCreeperVolatile.class, 10, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java index 92fd49785..230fd56c2 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java @@ -19,6 +19,7 @@ import net.minecraft.entity.ai.EntityAIWander; import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; @@ -197,4 +198,16 @@ public class EntityGlyphid extends EntityMob { public EnumCreatureAttribute getCreatureAttribute() { return EnumCreatureAttribute.ARTHROPOD; } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setByte("armor", this.dataWatcher.getWatchableObjectByte(17)); + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.dataWatcher.updateObject(17, nbt.getByte("armor")); + } } diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java index 309ac38fb..bdce3e7bc 100644 --- a/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java @@ -12,7 +12,7 @@ public class EntityGlyphidBrenda extends EntityGlyphid { public EntityGlyphidBrenda(World world) { super(world); - this.setSize(2.5F, 2F); + this.setSize(2.5F, 1.75F); this.isImmuneToFire = true; } diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java new file mode 100644 index 000000000..ae20a35a8 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java @@ -0,0 +1,102 @@ +package com.hbm.entity.mob; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.world.feature.GlyphidHive; + +import net.minecraft.block.Block; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntityGlyphidScout extends EntityGlyphid { + + public boolean hasHome = false; + public double homeX; + public double homeY; + public double homeZ; + + public EntityGlyphidScout(World world) { + super(world); + this.setSize(1.25F, 0.75F); + } + + @Override + public float getDamageThreshold() { + return 0.0F; + } + + @Override + public ResourceLocation getSkin() { + return ResourceManager.glyphid_scout_tex; + } + + @Override + public double getScale() { + return 0.75D; + } + + @Override + public int getArmorBreakChance(float amount) { + return 1; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(16D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1.5D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(2D); + } + + @Override + protected boolean canDespawn() { + return true; + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) { + + if(!this.hasHome) { + this.homeX = posX; + this.homeY = posY; + this.homeZ = posZ; + this.hasHome = true; + } + + if(this.ticksExisted > 0 && this.ticksExisted % 1200 == 0 && Vec3.createVectorHelper(posX - homeX, posY - homeY, posZ - homeZ).lengthVector() > 16) { + + Block b = worldObj.getBlock((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); + + if(b.isNormalCube() && b != ModBlocks.glyphid_base) { + this.setDead(); + worldObj.newExplosion(this, posX, posY, posZ, 5F, false, false); + GlyphidHive.generate(worldObj, (int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ), rand); + } + } + } + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setBoolean("hasHome", hasHome); + nbt.setDouble("homeX", homeX); + nbt.setDouble("homeY", homeY); + nbt.setDouble("homeZ", homeZ); + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.hasHome = nbt.getBoolean("hasHome"); + this.homeX = nbt.getDouble("homeX"); + this.homeY = nbt.getDouble("homeY"); + this.homeZ = nbt.getDouble("homeZ"); + } +} diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index 2d1bd69c5..04c41da43 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -34,6 +34,7 @@ import com.hbm.world.feature.DepthDeposit; import com.hbm.world.feature.Dud; import com.hbm.world.feature.Geyser; import com.hbm.world.feature.GeyserLarge; +import com.hbm.world.feature.GlyphidHive; import com.hbm.world.feature.Meteorite; import com.hbm.world.feature.OilBubble; import com.hbm.world.feature.OilSandBubble; @@ -216,6 +217,13 @@ public class HbmWorldGen implements IWorldGenerator { } if(GeneralConfig.enableDungeons && world.provider.isSurfaceWorld()) { + + if(rand.nextInt(1000) == 0) { + int x = i + rand.nextInt(16) + 8; + int z = j + rand.nextInt(16) + 8; + int y = world.getHeightValue(x, z); + GlyphidHive.generate(world, x, y, z, rand); + } if(biome == BiomeGenBase.plains || biome == BiomeGenBase.desert) { if(WorldConfig.radioStructure > 0 && rand.nextInt(WorldConfig.radioStructure) == 0) { diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index f171c9f71..8f491ea8d 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -729,6 +729,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBrenda.class, new RenderGlyphid()); RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBombardier.class, new RenderGlyphid()); RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBlaster.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidScout.class, new RenderGlyphid()); //"particles" RenderingRegistry.registerEntityRenderingHandler(EntitySmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.smoke1, ModItems.smoke2, ModItems.smoke3, ModItems.smoke4, ModItems.smoke5, ModItems.smoke6, ModItems.smoke7, ModItems.smoke8 })); RenderingRegistry.registerEntityRenderingHandler(EntityBSmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.b_smoke1, ModItems.b_smoke2, ModItems.b_smoke3, ModItems.b_smoke4, ModItems.b_smoke5, ModItems.b_smoke6, ModItems.b_smoke7, ModItems.b_smoke8 })); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 9f3b71fdb..1f9716a94 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -665,6 +665,7 @@ public class ResourceManager { public static final ResourceLocation glyphid_brenda_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_brenda.png"); public static final ResourceLocation glyphid_bombardier_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_bombardier.png"); public static final ResourceLocation glyphid_blaster_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_blaster.png"); + public static final ResourceLocation glyphid_scout_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_scout.png"); //ZIRNOX public static final ResourceLocation zirnox_tex = new ResourceLocation(RefStrings.MODID, "textures/models/zirnox.png"); diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index f7098e052..e9ba74599 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -9,6 +9,7 @@ import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre; import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.blocks.generic.BlockDynamicSlag.TileEntitySlag; import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; +import com.hbm.blocks.generic.BlockGlyphidSpawner.TileEntityGlpyhidSpawner; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; @@ -193,6 +194,7 @@ public class TileMappings { put(TileEntityPipeGauge.class, "tileentity_pipe_gauge"); put(TileEntityMachineBAT9000.class, "tileentity_bat9000"); put(TileEntityMachineOrbus.class, "tileentity_orbus"); + put(TileEntityGlpyhidSpawner.class, "tileentity_glyphid_spawner"); put(TileEntityLoot.class, "tileentity_ntm_loot"); put(TileEntityBobble.class, "tileentity_ntm_bobblehead"); diff --git a/src/main/java/com/hbm/world/feature/GlyphidHive.java b/src/main/java/com/hbm/world/feature/GlyphidHive.java new file mode 100644 index 000000000..5c60e3ff2 --- /dev/null +++ b/src/main/java/com/hbm/world/feature/GlyphidHive.java @@ -0,0 +1,128 @@ +package com.hbm.world.feature; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; + +import net.minecraft.init.Blocks; +import net.minecraft.world.World; + +public class GlyphidHive { + + public static final int[][][] schematic = new int[][][] { + { + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + }, + { + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,1,1,9,1,1,0,0,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,0,1,9,9,9,9,9,1,0,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,0,0,1,1,9,1,1,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + }, + { + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,4,4,4,0,0,0,0}, + {0,0,0,1,1,9,1,1,0,0,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,3,1,9,9,9,9,9,1,5,0}, + {0,3,9,9,9,9,9,9,9,5,0}, + {0,3,1,9,9,9,9,9,1,5,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,0,0,1,1,9,1,1,0,0,0}, + {0,0,0,0,2,2,2,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + }, + { + {0,0,0,0,0,4,0,0,0,0,0}, + {0,0,0,0,4,4,4,0,0,0,0}, + {0,0,0,1,4,9,4,1,0,0,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,3,3,9,9,9,9,9,5,5,0}, + {3,3,9,9,9,9,9,9,9,5,5}, + {0,3,3,9,9,9,9,9,5,5,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,0,0,1,2,9,2,1,0,0,0}, + {0,0,0,0,2,2,2,0,0,0,0}, + {0,0,0,0,0,2,0,0,0,0,0}, + }, + { + {0,0,0,0,4,4,4,0,0,0,0}, + {0,0,0,1,4,4,4,1,0,0,0}, + {0,0,1,1,4,9,4,1,1,0,0}, + {0,1,1,1,9,9,0,1,1,1,0}, + {3,3,3,9,9,9,9,9,5,5,5}, + {3,3,9,9,9,9,9,9,9,5,5}, + {3,3,3,9,9,9,9,9,5,5,5}, + {0,1,1,1,9,9,9,1,1,1,0}, + {0,0,1,1,2,9,2,1,1,0,0}, + {0,0,0,1,2,2,2,1,0,0,0}, + {0,0,0,0,2,2,2,0,0,0,0}, + }, + { + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,1,1,1,1,1,1,1,1,1,0}, + {1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1}, + {0,1,1,1,1,1,1,1,1,1,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + }, + { + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,1,1,1,1,1,1,1,1,1,0}, + {0,1,1,1,1,1,1,1,1,1,0}, + {0,1,1,1,1,1,1,1,1,1,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + } + }; + + public static void generate(World world, int x, int y, int z, Random rand) { + + int orientation = rand.nextInt(4) + 2; + + for(int i = 0; i < 11; i++) { + for(int j = 0; j < 7; j++) { + for(int k = 0; k < 11; k++) { + + int block = schematic[6 - j][i][k]; + + if(block == 1 || (block != orientation && block > 1 && block < 6)) { + world.setBlock(x + i - 5, y + j - 2, z + k - 5, ModBlocks.glyphid_base); + } + if(block == 9) { + world.setBlock(x + i - 5, y + j - 2, z + k - 5, Blocks.air); + } + } + } + } + + world.setBlock(x, y - 1, z, ModBlocks.glyphid_spawner); + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_base.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_base.png new file mode 100644 index 0000000000000000000000000000000000000000..ef6bca81580e47f00c436f188a0b9dbab716210a GIT binary patch literal 583 zcmV-N0=WH&P)aR~LkcU!Mh96&7%JL>v|F3ZWzlNp|L6Z__U!YAkADHm@_^%X%{h{N z9&c^|5W*)-a|ZJ{R=lK;V}ekUsEpP~_5ofM`#l$TIs+h0bA<4*;w5RC-kAgHW206>@Bh9$sFV zPOC7gJ8-8n(jN~9)>L6cAp0aLqig_!Py(>IzpKG7ul`GzH0C7EoMFR~sO)64PqD&N zYtx|ya-1%9zT1!_U_LinsF}4^htqY}ch>uD z^+~(B`T2{pEX5YJ=JWF&FMm3;+xAIu5K6qBLs68pjz literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_base_2.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_base_2.png new file mode 100644 index 0000000000000000000000000000000000000000..541a53c5f56156aede4138dd7d332424794fa7f9 GIT binary patch literal 560 zcmV-00?+-4P)r7UJMf+)l?Omx>Fj}sc&pbu~ZZtET9o(Dj%OG}a{B-o{F_bJPVN3=m71wfF9 zr>%E5W(RcF!QQ6?yHxJkT@!%0=aI)rNsz}0K@`eEmSIXIA3iRyUp8{z9*)okeeyUd z6$|h>4gkCNkf3Omd12o*FrlN1$mtC`(?v1JJ8lU z(p*I=VWcqdk?N1lhEw(j!|VdkHg%eR zPc)j%8d!H7TJJiX@`A>7B~Z@&di5-A=&o}E7V{89A&T8KrKh>)v8`r*3bGB+f*=)O y%P>*w;fNp#v41j&6h31uLKwO=)!NcpNZt-nVV77+#1llKOG&{KPD5HPekP8>|8e2 z*BW(Nc5-$uk2hWvUVBV$75iEDUx_vF$eYgQBGM*6%dNT?#-m|Q^Tr%`ewx-g1h=yU zBNb5skvyHq=K5M)u9(i|4e~G@8(*)feGvM9Es2`W<}w})wI)>yW5k-Tu#o;-8Jwv6;T5DhE}m9p1(&Pn}AddQX271 zG|f_`b}UB~ajY&X%*0?CAF`*ex`rg&< z$J${@6_SPzoj1Z16mL$S)jN)5i!2+{cRiNp`eAQQpH({E+ruN--JY1zXlYCcss8AS zWkW2rn9k<%_VB2_dOMoeKUBYnFNWl)%cAH?UJeR;f(Yy8dgYBG)<0B_c@e2k45`4A zlByy<43zAcbDw(>T1oYVJR=+HpECX;5~BW|h&1eISGOb=4I7BSUC}bG5BqLz;qvY*}qi1~V!rdVZo-{R%L zlZwxwx#!YY|4?4lFC;M*k=A0E7_ZE0V~rK^EH>BIni8nUwMVi3u{`>kxvJ+$p4HDg zw&jwCPI_{@j%}i*b9XJqo6~0%JG6{cdzu2PZP!!KbT*HlM7RSkwhvf#(Q=!xj6DL& z-df{$_weqUGFB3S)+DKsVDS9)_tm3^TdiQJ5``~qG@SM5;Z|*I zpTGXT^(2+>>1NWYI}&@yO465$k7har13u8>A)n8rxsu0Gn-CVM z_w00NzBg~Jw(_4pUDV`py@vuN&Mpaqmb&GWcAULWgTc`=n9;7w!E4t6?Y;6?ER z;stlD50QuSMG1_Nr?|0tTfSU;bk{hrp0X9Sup}_%AAT(f3<2kZ(!?ZL_C7@&Wo z??*VS4R5Elzx$P|p^rXUD z+*Yw)U^ojyUrZQ=-$M853oQu@N!fKspzhLm8p5>o<-OwCB#_JaO;{@WlE4tIT>@k8 zAlmN^{&w41JKK12zv{~dT41|q`G4%j^oi(8B@T7-qB+l4wghe!`z=SBu?*rANiUV~ ztcXOVyg$%T5l4abAdjSVkwB6B|F`vtq%RZjz|CZ`WHOd1ft5&YUJCi|BLOWBl~p2@ zmCi+!Kt6D*M2SdU9x~KceIGWk5~)hc7a|3ghsu&~6hV|gbOWpiZEpBS`}BeRCJ_~v zmqr=3yUH{kL@tsg&8Dl1_uOy{CjVI)SRsgfRfylCvl zu8N4ro#9<`^YQwpMuo2vwF;{ZLaEdAo#EZOjVF2fWAdz5g{kDlplXSEuE%y<-v=5h zEFvw{6=_PNMV{4GoorNL&)wmNmP%d;>DZ~lYTE})6=qUI#3V{Yf@S`fNh1E4do5(~k ziAIHQjU@JwPA*~&vsb`^7mhkh&;xzYHBuQY1 ztm`_r#&+R7k!s)AnM3_~tWv^Gxk!hAsue_7_J-jh_9seIgn?7P0?ZhWS_&xliOqo>TgV`gK-el(^7W3EzrDS`KsU<&)RX w1CE!Z!rqzH%YO}&MmiRG_WGyvE9t8E7wWzFSXyJMiU0rr07*qoM6N<$g6IsD%>V!Z literal 0 HcmV?d00001