From 112b8abe19176c2028475bf2f27195c2fe48833e Mon Sep 17 00:00:00 2001 From: KeyLime17 Date: Mon, 29 Jul 2024 15:00:13 -0400 Subject: [PATCH] Added Blocks that can have metaData --- .gradle/8.2.1/checksums/checksums.lock | Bin 17 -> 17 bytes .gradle/8.2.1/fileHashes/fileHashes.lock | 2 +- .../cinder_loe/CinderBlockMetaData.java | 22 +++++++ .../com/zivilon/cinder_loe/CinderLoE.java | 11 ++-- .../cinder_loe/blocks/CobbleBlock.java | 56 ++++++++++++++++-- .../zivilon/cinder_loe/items/BrokenHalo.java | 45 +++++++++++++- .../java/com/zivilon/cinder_loe/recipes.java | 4 +- .../assets/cinder_loe/lang/en_US.lang | 5 +- ...drystone.png => cindercobble_drystone.png} | Bin ...ble_mordor.png => cindercobble_mordor.png} | Bin 10 files changed, 130 insertions(+), 15 deletions(-) create mode 100644 src/main/java/com/zivilon/cinder_loe/CinderBlockMetaData.java rename src/main/resources/assets/lotr/textures/blocks/{Cindercobble_drystone.png => cindercobble_drystone.png} (100%) rename src/main/resources/assets/lotr/textures/blocks/{Cindercobble_mordor.png => cindercobble_mordor.png} (100%) diff --git a/.gradle/8.2.1/checksums/checksums.lock b/.gradle/8.2.1/checksums/checksums.lock index e52f4da7480743f9f53d0e12a923d3bea366a7bd..d599caafa69d3146adb32c6b986b3a2f4099078a 100644 GIT binary patch literal 17 QcmZR6zke?nF+czt08#`7jsO4v literal 17 QcmZR6zke?nF+cz_08#-4ivR!s diff --git a/.gradle/8.2.1/fileHashes/fileHashes.lock b/.gradle/8.2.1/fileHashes/fileHashes.lock index 29612b8..f702b1d 100644 --- a/.gradle/8.2.1/fileHashes/fileHashes.lock +++ b/.gradle/8.2.1/fileHashes/fileHashes.lock @@ -1 +1 @@ -�[�i5�ï¿ä¶ \ No newline at end of file +�[�i5�ï¿ëc \ No newline at end of file diff --git a/src/main/java/com/zivilon/cinder_loe/CinderBlockMetaData.java b/src/main/java/com/zivilon/cinder_loe/CinderBlockMetaData.java new file mode 100644 index 0000000..ec62f2e --- /dev/null +++ b/src/main/java/com/zivilon/cinder_loe/CinderBlockMetaData.java @@ -0,0 +1,22 @@ +package com.zivilon.cinder_loe; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; + +public class CinderBlockMetaData extends ItemBlock { + public CinderBlockMetaData(Block block) { + super(block); + this.setHasSubtypes(true); + } + + @Override + public int getMetadata(int damage) { + return damage; + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName() + "." + stack.getItemDamage(); + } +} diff --git a/src/main/java/com/zivilon/cinder_loe/CinderLoE.java b/src/main/java/com/zivilon/cinder_loe/CinderLoE.java index 7a7a439..3907413 100644 --- a/src/main/java/com/zivilon/cinder_loe/CinderLoE.java +++ b/src/main/java/com/zivilon/cinder_loe/CinderLoE.java @@ -123,7 +123,7 @@ public class CinderLoE { ///public static Block rustedsword; public static Block mistBlock; public static Block cutDrystone; - public static Block Cindercobble; + public static Block cindercobble; public static Block reeflessCoral; public static Block silverChain; public static Block goldChain; @@ -493,8 +493,8 @@ public class CinderLoE { cutDrystone = (new cutDrystone()); GameRegistry.registerBlock(cutDrystone, "cutDrystone"); - Cindercobble = new CobbleBlock().setBlockName("lotr:Cindercobble"); - GameRegistry.registerBlock(Cindercobble, LOTRItemBlockMetadata.class, "Cindercobble"); + cindercobble = (new CobbleBlock()); + GameRegistry.registerBlock(cindercobble, CinderBlockMetaData.class, "cindercobble"); plaster = (new plaster()); GameRegistry.registerBlock(plaster, "plaster"); @@ -667,13 +667,14 @@ public class CinderLoE { // Misc EVENT = getLOTRMaterialByName("EVENT"); + MATERIAL_JADE = getLOTRMaterialByName("JADE"); + frostblade = (new LOTRItemSword(EVENT)).setUnlocalizedName("lotr:frostblade").setTextureName("lotr:frostblade"); daggervoid = (new VoidDagger(EVENT)).addWeaponDamage(5.0F).setUnlocalizedName("lotr:daggerVoid").setTextureName("lotr:daggerVoid").setCreativeTab(null); spearsolidgold = (new LOTRItemSpear(EVENT)).setUnlocalizedName("lotr:spearsolidgold").setTextureName("lotr:spearsolidgold").setCreativeTab(null); spearUnnamed = (new UnnamedSpear(EVENT)).setUnlocalizedName("lotr:spearUnnamed").setTextureName("lotr:spearUnnamed").setCreativeTab(null); whip = (new Whip()).setUnlocalizedName("lotr:whip").setTextureName("lotr:whip"); helmetbrokenhalo = (new LOTRItemArmor(EVENT, 0, "helmet")).setUnlocalizedName("lotr:helmetbrokenhalo").setTextureName("lotr:helmetbrokenhalo").setCreativeTab(null); - MATERIAL_JADE = getLOTRMaterialByName("JADE"); helmetJade = (new LOTRItemArmor(MATERIAL_JADE, 0, "helmet")).setUnlocalizedName("lotr:helmetJade").setTextureName("lotr:helmetJade").setCreativeTab(null); bodyJade = (new LOTRItemArmor(MATERIAL_JADE, 1, "chestplate")).setUnlocalizedName("lotr:bodyJade").setTextureName("lotr:bodyJade").setCreativeTab(null); legsJade = (new LOTRItemArmor(MATERIAL_JADE, 2,"leggings")).setUnlocalizedName("lotr:legsJade").setTextureName("lotr:legsJade").setCreativeTab(null); @@ -1149,7 +1150,7 @@ public class CinderLoE { CinderCore.registerItemFallback(Block.getIdFromBlock(bronzeChain), Block.getIdFromBlock(LOTRMod.orcChain), "cinder_loe", "1.2"); CinderCore.registerItemFallback(Block.getIdFromBlock(mistBlock), Block.getIdFromBlock(LOTRMod.utumnoPortal), "cinder_loe", "1.1"); CinderCore.registerItemFallback(Block.getIdFromBlock(cutDrystone), Block.getIdFromBlock(LOTRMod.cobblebrick), "cinder_loe", "1.2"); - CinderCore.registerItemFallback(Block.getIdFromBlock(Cindercobble), Block.getIdFromBlock(LOTRMod.cobblebrick), "cinder_loe", "1.2"); + CinderCore.registerItemFallback(Block.getIdFromBlock(cindercobble), Block.getIdFromBlock(LOTRMod.cobblebrick), "cinder_loe", "1.2"); CinderCore.registerItemFallback(Block.getIdFromBlock(reeflessCoral), Block.getIdFromBlock(LOTRMod.coralReef), "cinder_loe", "1.2"); CinderCore.registerItemFallback(Block.getIdFromBlock(plaster), Block.getIdFromBlock(Blocks.brick_block), "cinder_loe", "1.2.1"); CinderCore.registerItemFallback(Block.getIdFromBlock(voidblock), Block.getIdFromBlock(Blocks.coal_block), "cinder_loe", "1.2.1"); diff --git a/src/main/java/com/zivilon/cinder_loe/blocks/CobbleBlock.java b/src/main/java/com/zivilon/cinder_loe/blocks/CobbleBlock.java index f433789..550d7ca 100644 --- a/src/main/java/com/zivilon/cinder_loe/blocks/CobbleBlock.java +++ b/src/main/java/com/zivilon/cinder_loe/blocks/CobbleBlock.java @@ -1,16 +1,32 @@ package com.zivilon.cinder_loe.blocks; +import com.zivilon.cinder_loe.util.Utilities; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import lotr.common.LOTRCreativeTabs; -import lotr.common.block.LOTRBlockBrick2; import lotr.common.block.LOTRBlockBrickBase; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; import java.lang.reflect.Field; +import java.util.List; + +public class CobbleBlock extends Block { + protected IIcon[] brickIcons; + protected String[] brickNames; -public class CobbleBlock extends LOTRBlockBrickBase { public CobbleBlock() { - /* + super(Material.rock); + this.setHardness(1.5f); + this.setResistance(10.0f); + this.setStepSound(Block.soundTypeStone); + try { Field tabField = LOTRCreativeTabs.class.getDeclaredField("tabBlock"); // Stupid workaround because ForgeGradle tries to obfuscate field LOTRCreativeTabs.tabBlock when it's not supposed to LOTRCreativeTabs tab = (LOTRCreativeTabs)tabField.get(null); @@ -18,8 +34,40 @@ public class CobbleBlock extends LOTRBlockBrickBase { } catch (NoSuchFieldException | IllegalAccessException e) { e.printStackTrace(); } - */ + setBlockTextureName("lotr:cindercobble"); + setBlockName("lotr:cindercobble"); this.setBrickNames("drystone", "mordor"); } + + protected void setBrickNames(String ... names) { + this.brickNames = names; + } + + @SideOnly(Side.CLIENT) + @Override + public void registerBlockIcons(IIconRegister iconregister) { + this.brickIcons = new IIcon[this.brickNames.length]; + for (int i = 0; i < this.brickNames.length; ++i) { + String texturePath = this.getTextureName() + "_" + this.brickNames[i]; + System.out.println("Registering texture: " + texturePath); // Debug log + this.brickIcons[i] = iconregister.registerIcon(texturePath); + } + } + @Override + public IIcon getIcon(int side, int meta) { + return this.brickIcons[meta]; + } + + @Override + public int damageDropped(int meta) { + return meta; + } + @SideOnly(Side.CLIENT) + @Override + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for (int i = 0; i < this.brickNames.length; ++i) { + list.add(new ItemStack(item, 1, i)); + } + } } diff --git a/src/main/java/com/zivilon/cinder_loe/items/BrokenHalo.java b/src/main/java/com/zivilon/cinder_loe/items/BrokenHalo.java index be5d65c..be3074d 100644 --- a/src/main/java/com/zivilon/cinder_loe/items/BrokenHalo.java +++ b/src/main/java/com/zivilon/cinder_loe/items/BrokenHalo.java @@ -1,13 +1,56 @@ package com.zivilon.cinder_loe.items; +import com.zivilon.cinder_loe.entity.corrupt.CorruptMan; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; import lotr.common.item.LOTRItemArmor; import lotr.common.item.LOTRMaterial; +import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; +import net.minecraftforge.event.entity.living.LivingEvent; public class BrokenHalo extends LOTRItemArmor { public BrokenHalo(LOTRMaterial material, int slotType, String s) { super(material, slotType, s); - }; + + } + @SubscribeEvent + public void onLivingUpdate(LivingEvent.LivingUpdateEvent event) { + if (event.entityLiving instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) event.entityLiving; + ItemStack helmet = player.getCurrentArmor(0); // Helmet slot + + if (helmet != null && helmet.getItem() instanceof BrokenHalo) { + World world = player.worldObj; + if (!world.isRemote) { + // Summon NPC + CorruptMan corruptman = new CorruptMan(world); + corruptman.copyLocationAndAnglesFrom(player); + + // Copy armor and weapon from player to CorruptOrc + for (int i = 0; i < 4; i++) { + ItemStack armor = player.getCurrentArmor(i); + corruptman.setCurrentItemOrArmor(i + 1, armor); + } + + ItemStack mainWeapon = player.getHeldItem(); + corruptman.npcItemsInv.setIdleItem(mainWeapon); + corruptman.npcItemsInv.setMeleeWeapon(mainWeapon); + corruptman.setHealth(20); + corruptman.addPotionEffect(new PotionEffect(Potion.regeneration.id, 9999, 0)); + + // Remove player and spawn CorruptOrc + world.removeEntity(player); + corruptman.onSpawnWithEgg((IEntityLivingData) null); + world.spawnEntityInWorld(corruptman); + world.playAuxSFXAtEntity(null, 1016, (int) corruptman.posX, (int) corruptman.posY, (int) corruptman.posZ, 0); + } + } + } + } } diff --git a/src/main/java/com/zivilon/cinder_loe/recipes.java b/src/main/java/com/zivilon/cinder_loe/recipes.java index 074af8f..a8c4003 100644 --- a/src/main/java/com/zivilon/cinder_loe/recipes.java +++ b/src/main/java/com/zivilon/cinder_loe/recipes.java @@ -117,10 +117,10 @@ public class recipes { Character.valueOf('X'), Items.iron_ingot})); GameRegistry.addRecipe((IRecipe)new ShapedOreRecipe(new ItemStack(CinderLoE.bronzeChain, 8), new Object[] { "X", "X", "X", Character.valueOf('X'), LOTRMod.bronze})); - GameRegistry.addRecipe((IRecipe)new ShapedOreRecipe(new ItemStack(CinderLoE.Cindercobble, 4, 0), new Object[] { "XX", "XX", + GameRegistry.addRecipe((IRecipe)new ShapedOreRecipe(new ItemStack(CinderLoE.cindercobble, 4, 0), new Object[] { "XX", "XX", Character.valueOf('X'), LOTRMod.cobblebrick})); GameRegistry.addRecipe((IRecipe)new ShapedOreRecipe(new ItemStack(CinderLoE.cutDrystone, 4), new Object[] { "XX", "XX", - Character.valueOf('X'), new ItemStack(CinderLoE.Cindercobble, 1, 0)})); + Character.valueOf('X'), new ItemStack(CinderLoE.cindercobble, 1, 0)})); GameRegistry.addRecipe((IRecipe)new ShapedOreRecipe(new ItemStack(LOTRMod.cobblebrick, 4, 0), new Object[] { "XX", "XX", Character.valueOf('X'), CinderLoE.cutDrystone})); GameRegistry.addRecipe((IRecipe)new ShapedOreRecipe(new ItemStack(CinderLoE.reeflessCoral, 1), new Object[] { "X", diff --git a/src/main/resources/assets/cinder_loe/lang/en_US.lang b/src/main/resources/assets/cinder_loe/lang/en_US.lang index e84478a..3b3836b 100644 --- a/src/main/resources/assets/cinder_loe/lang/en_US.lang +++ b/src/main/resources/assets/cinder_loe/lang/en_US.lang @@ -15,9 +15,10 @@ tile.lotr:mistBlock.name=Mist tile.lotr:fishbarrel.name=Barrel of Fish tile.lotr:reeflessCoral.name=Cut Coral tile.lotr:cutDrystone.name=Cut Drystone -tile.lotr:cobbleDrystone.name=Cobbled Drystone tile.lotr:plaster.name=Plaster tile.lotr:voidblock.name=Void +tile.lotr:cobblebrick.0.name=Cobbled Drystone +tile.lotr:cobblebrick.1.name=Cobbled Mordor Rock item.lotr:spearUnnamed.name=Drannach Oriour item.lotr:frostblade.name=Frostblade @@ -28,7 +29,7 @@ item.lotr:helmetRedDwarf.name=Red Dwarven Helmet item.lotr:bodyRedDwarf.name=Red Dwarven Chestplate item.lotr:legsRedDwarf.name=Red Dwarven Leggings item.lotr:bootsRedDwarf.name=Red Dwarven Boots -item.lotr:redDwarfSteel.name=Red Dwarven Steel +item.lotr:redDwarfSteel.name=Red Dwarven Steel Ingot item.lotr:spearRedDwarf.name=Red Dwarven Spear item.lotr:swordRedDwarf.name=Red Dwarven Sword item.lotr:battleaxeRedDwarf.name=Red Dwarven Battleaxe diff --git a/src/main/resources/assets/lotr/textures/blocks/Cindercobble_drystone.png b/src/main/resources/assets/lotr/textures/blocks/cindercobble_drystone.png similarity index 100% rename from src/main/resources/assets/lotr/textures/blocks/Cindercobble_drystone.png rename to src/main/resources/assets/lotr/textures/blocks/cindercobble_drystone.png diff --git a/src/main/resources/assets/lotr/textures/blocks/Cindercobble_mordor.png b/src/main/resources/assets/lotr/textures/blocks/cindercobble_mordor.png similarity index 100% rename from src/main/resources/assets/lotr/textures/blocks/Cindercobble_mordor.png rename to src/main/resources/assets/lotr/textures/blocks/cindercobble_mordor.png