From da5208c87c79864843137a1398d88b8addb49713 Mon Sep 17 00:00:00 2001 From: LordMZTE Date: Sun, 4 Apr 2021 14:13:53 +0200 Subject: [PATCH] add force shears --- gradlew | 0 .../java/ley/modding/dartcraft/Dartcraft.java | 30 +++-- .../modding/dartcraft/DartcraftClient.java | 22 ++++ .../renderer/entity/RenderColdAnimal.java | 24 ++++ .../dartcraft/entity/EntityColdChicken.java | 10 ++ .../dartcraft/entity/EntityColdCow.java | 10 ++ .../dartcraft/entity/EntityColdPig.java | 10 ++ .../modding/dartcraft/event/EventHandler.java | 112 ++++++++++++++++++ .../ley/modding/dartcraft/item/BaseItem.java | 5 +- .../ley/modding/dartcraft/item/Items.java | 3 + .../dartcraft/item/tool/ItemForcePickaxe.java | 5 +- .../dartcraft/item/tool/ItemForceShears.java | 47 ++++++++ .../java/ley/modding/dartcraft/util/Util.java | 12 ++ .../assets/dartcraft/lang/en_US.lang | 1 + .../dartcraft/textures/entity/coldChicken.png | Bin 0 -> 3892 bytes .../dartcraft/textures/entity/coldCow.png | Bin 0 -> 4285 bytes .../dartcraft/textures/entity/coldPig.png | Bin 0 -> 8111 bytes .../dartcraft/textures/items/forceshears.png | Bin 0 -> 3085 bytes 18 files changed, 277 insertions(+), 14 deletions(-) mode change 100644 => 100755 gradlew create mode 100644 src/main/java/ley/modding/dartcraft/DartcraftClient.java create mode 100644 src/main/java/ley/modding/dartcraft/client/renderer/entity/RenderColdAnimal.java create mode 100644 src/main/java/ley/modding/dartcraft/entity/EntityColdChicken.java create mode 100644 src/main/java/ley/modding/dartcraft/entity/EntityColdCow.java create mode 100644 src/main/java/ley/modding/dartcraft/entity/EntityColdPig.java create mode 100644 src/main/java/ley/modding/dartcraft/item/tool/ItemForceShears.java create mode 100644 src/main/java/ley/modding/dartcraft/util/Util.java create mode 100644 src/main/resources/assets/dartcraft/textures/entity/coldChicken.png create mode 100644 src/main/resources/assets/dartcraft/textures/entity/coldCow.png create mode 100644 src/main/resources/assets/dartcraft/textures/entity/coldPig.png create mode 100644 src/main/resources/assets/dartcraft/textures/items/forceshears.png diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/src/main/java/ley/modding/dartcraft/Dartcraft.java b/src/main/java/ley/modding/dartcraft/Dartcraft.java index d62c0a9..7d1498d 100644 --- a/src/main/java/ley/modding/dartcraft/Dartcraft.java +++ b/src/main/java/ley/modding/dartcraft/Dartcraft.java @@ -5,14 +5,20 @@ import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import cpw.mods.fml.common.registry.EntityRegistry; +import cpw.mods.fml.relauncher.Side; import ley.modding.dartcraft.block.BlockPowerOre; import ley.modding.dartcraft.block.Blocks; import ley.modding.dartcraft.event.EventHandler; import ley.modding.dartcraft.internal.Registry; +import ley.modding.dartcraft.entity.EntityColdChicken; +import ley.modding.dartcraft.entity.EntityColdCow; +import ley.modding.dartcraft.entity.EntityColdPig; import ley.modding.dartcraft.item.BaseItem; import ley.modding.dartcraft.item.Items; import ley.modding.dartcraft.item.tool.ItemForceMitts; import ley.modding.dartcraft.item.tool.ItemForcePickaxe; +import ley.modding.dartcraft.item.tool.ItemForceShears; import ley.modding.dartcraft.proxy.CommonProxy; import ley.modding.dartcraft.tab.DartcraftTab; import ley.modding.tileralib.api.IRegistry; @@ -27,6 +33,7 @@ public class Dartcraft { @Mod.Instance public static Dartcraft instance = new Dartcraft(); + public static DartcraftClient client = new DartcraftClient(); public static IRegistry registry; @SidedProxy(serverSide = "ley.modding.dartcraft.proxy.CommonProxy", clientSide = "ley.modding.dartcraft.proxy.ClientProxy") public static CommonProxy proxy; @@ -34,28 +41,35 @@ public class Dartcraft { public static CreativeTabs tab = new DartcraftTab(); @Mod.EventHandler - public void preInit(FMLPreInitializationEvent e) - { + public void preInit(FMLPreInitializationEvent e) { MinecraftForge.EVENT_BUS.register(new EventHandler()); } @Mod.EventHandler - public void init(FMLInitializationEvent e) - { + public void init(FMLInitializationEvent e) { + // TODO: use proxys + if (e.getSide() == Side.CLIENT) + client.init(); + registry = new Registry(); Items.forcegem = registry.registerItem(new BaseItem("forcegem")); Items.forceingot = registry.registerItem(new BaseItem("forceingot")); Items.forcenugget = registry.registerItem(new BaseItem("forcenugget")); Items.forcestick = registry.registerItem(new BaseItem("forcestick")); Items.forceshard = registry.registerItem(new BaseItem("forceshard")); - registry.registerItem(new ItemForcePickaxe()); - registry.registerItem(new ItemForceMitts()); + Items.forcemitts = registry.registerItem(new ItemForceMitts()); + Items.forcepickaxe = registry.registerItem(new ItemForcePickaxe()); + Items.forceshears = registry.registerItem(new ItemForceShears()); Blocks.powerore = registry.registerBlock(new BlockPowerOre()); + + int entityId = 0; + EntityRegistry.registerModEntity(EntityColdChicken.class, "coldChicken", entityId++, Dartcraft.instance, 40, 1, true); + EntityRegistry.registerModEntity(EntityColdCow.class, "coldCow", entityId++, Dartcraft.instance, 40, 1, true); + EntityRegistry.registerModEntity(EntityColdPig.class, "coldPig", entityId++, Dartcraft.instance, 40, 1, true); } @Mod.EventHandler - public void postInit(FMLPostInitializationEvent e) - { + public void postInit(FMLPostInitializationEvent e) { } diff --git a/src/main/java/ley/modding/dartcraft/DartcraftClient.java b/src/main/java/ley/modding/dartcraft/DartcraftClient.java new file mode 100644 index 0000000..a044585 --- /dev/null +++ b/src/main/java/ley/modding/dartcraft/DartcraftClient.java @@ -0,0 +1,22 @@ +package ley.modding.dartcraft; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import ley.modding.dartcraft.client.renderer.entity.RenderColdAnimal; +import ley.modding.dartcraft.entity.EntityColdChicken; +import ley.modding.dartcraft.entity.EntityColdCow; +import ley.modding.dartcraft.entity.EntityColdPig; +import net.minecraft.client.model.ModelChicken; +import net.minecraft.client.model.ModelCow; +import net.minecraft.client.model.ModelPig; + +class DartcraftClient { + public void init() { + renderEntities(); + } + + public void renderEntities() { + RenderingRegistry.registerEntityRenderingHandler(EntityColdChicken.class, new RenderColdAnimal(new ModelChicken(), 0.6f, "textures/entity/coldChicken.png")); + RenderingRegistry.registerEntityRenderingHandler(EntityColdCow.class, new RenderColdAnimal(new ModelCow(), 0.6f, "textures/entity/coldCow.png")); + RenderingRegistry.registerEntityRenderingHandler(EntityColdPig.class, new RenderColdAnimal(new ModelPig(), 0.6f, "textures/entity/coldPig.png")); + } +} diff --git a/src/main/java/ley/modding/dartcraft/client/renderer/entity/RenderColdAnimal.java b/src/main/java/ley/modding/dartcraft/client/renderer/entity/RenderColdAnimal.java new file mode 100644 index 0000000..0767161 --- /dev/null +++ b/src/main/java/ley/modding/dartcraft/client/renderer/entity/RenderColdAnimal.java @@ -0,0 +1,24 @@ +package ley.modding.dartcraft.client.renderer.entity; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +@SideOnly(Side.CLIENT) +public class RenderColdAnimal extends RenderLiving { + private final ResourceLocation texture; + + public RenderColdAnimal(ModelBase par1ModelBase, float par2, String textureLocation) { + super(par1ModelBase, par2); + + this.texture = new ResourceLocation("dartcraft", textureLocation); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return texture; + } +} diff --git a/src/main/java/ley/modding/dartcraft/entity/EntityColdChicken.java b/src/main/java/ley/modding/dartcraft/entity/EntityColdChicken.java new file mode 100644 index 0000000..436963a --- /dev/null +++ b/src/main/java/ley/modding/dartcraft/entity/EntityColdChicken.java @@ -0,0 +1,10 @@ +package ley.modding.dartcraft.entity; + +import net.minecraft.entity.passive.EntityChicken; +import net.minecraft.world.World; + +public class EntityColdChicken extends EntityChicken { + public EntityColdChicken(World world) { + super(world); + } +} diff --git a/src/main/java/ley/modding/dartcraft/entity/EntityColdCow.java b/src/main/java/ley/modding/dartcraft/entity/EntityColdCow.java new file mode 100644 index 0000000..5f80dc7 --- /dev/null +++ b/src/main/java/ley/modding/dartcraft/entity/EntityColdCow.java @@ -0,0 +1,10 @@ +package ley.modding.dartcraft.entity; + +import net.minecraft.entity.passive.EntityCow; +import net.minecraft.world.World; + +public class EntityColdCow extends EntityCow { + public EntityColdCow(World world) { + super(world); + } +} diff --git a/src/main/java/ley/modding/dartcraft/entity/EntityColdPig.java b/src/main/java/ley/modding/dartcraft/entity/EntityColdPig.java new file mode 100644 index 0000000..f831aac --- /dev/null +++ b/src/main/java/ley/modding/dartcraft/entity/EntityColdPig.java @@ -0,0 +1,10 @@ +package ley.modding.dartcraft.entity; + +import net.minecraft.entity.passive.EntityPig; +import net.minecraft.world.World; + +public class EntityColdPig extends EntityPig { + public EntityColdPig(World world) { + super(world); + } +} diff --git a/src/main/java/ley/modding/dartcraft/event/EventHandler.java b/src/main/java/ley/modding/dartcraft/event/EventHandler.java index f0475d4..5c3acce 100644 --- a/src/main/java/ley/modding/dartcraft/event/EventHandler.java +++ b/src/main/java/ley/modding/dartcraft/event/EventHandler.java @@ -3,8 +3,18 @@ package ley.modding.dartcraft.event; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import ley.modding.dartcraft.Dartcraft; import ley.modding.dartcraft.api.IBreakable; +import ley.modding.dartcraft.entity.EntityColdChicken; +import ley.modding.dartcraft.entity.EntityColdCow; +import ley.modding.dartcraft.entity.EntityColdPig; +import ley.modding.dartcraft.item.Items; +import net.minecraft.entity.passive.EntityAnimal; +import net.minecraft.entity.passive.EntityCow; +import net.minecraft.entity.passive.EntityChicken; +import net.minecraft.entity.passive.EntityPig; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.event.entity.player.EntityInteractEvent; import net.minecraftforge.event.entity.player.PlayerDestroyItemEvent; public class EventHandler { @@ -21,4 +31,106 @@ public class EventHandler { } } + @SubscribeEvent + public void onEntityInteract(EntityInteractEvent event) { + if (!Dartcraft.proxy.isSimulating(event.target.worldObj)) + return; + + ItemStack heldItem = event.entityPlayer.getHeldItem(); + if (heldItem != null && heldItem.getItem() != Items.forceshears) + return; + + if (event.target instanceof EntityAnimal) { + EntityAnimal entity = (EntityAnimal)event.target; + ColdEntityType type = ColdEntityType.fromClass(entity.getClass()); + + if (type == null) + return; + + EntityAnimal newEntity = type.newInstance(entity.worldObj); + + double x = entity.posX; + double y = entity.posY; + double z = entity.posZ; + float pitch = entity.rotationPitch; + float yaw = entity.rotationYaw; + float camPitch = entity.cameraPitch; + float health = entity.getHealth(); + float fall = entity.fallDistance; + boolean onFire = entity.isBurning(); + int air = entity.getAir(); + float speed = entity.getAIMoveSpeed(); + + World world = entity.worldObj; + + entity.entityDropItem(type.getDrop(), 1.0f); + world.playSoundAtEntity(entity, "random.pop", 1.0f, 1.0f); + entity.setDead(); + world.removeEntity(entity); + + newEntity.setPositionAndRotation(x, y, z, yaw, pitch); + newEntity.cameraPitch = camPitch; + newEntity.setHealth(health); + newEntity.fallDistance = fall; + if (onFire) + newEntity.setFire(1); + newEntity.setAir(air); + newEntity.setAIMoveSpeed(speed); + + world.spawnEntityInWorld(newEntity); + } + } + + enum ColdEntityType { + COW(EntityCow.class), + CHICKEN(EntityChicken.class), + PIG(EntityPig.class); + + ColdEntityType(Class clazz) { + this.clazz = clazz; + } + + Class clazz; + + static ColdEntityType fromClass(Class clazz) { + for (ColdEntityType v : ColdEntityType.values()) { + if (v.clazz == clazz) { + return v; + } + } + return null; + } + + EntityAnimal newInstance(World world) { + switch (this) { + case COW: + return new EntityColdCow(world); + case PIG: + return new EntityColdPig(world); + case CHICKEN: + return new EntityColdChicken(world); + + // why is the compiler so stupid to think that this is required? + default: + return null; + } + } + + ItemStack getDrop() { + // gotta use full names here, because tilera had the brilliant idea to call the mod item class "Items" + switch (this) { + case COW: + return new ItemStack(net.minecraft.init.Items.leather); + case PIG: + // TODO: add bacon item + return new ItemStack(net.minecraft.init.Items.porkchop); + case CHICKEN: + return new ItemStack(net.minecraft.init.Items.feather); + + // why is the compiler so stupid to think that this is required? + default: + return null; + } + } + } } diff --git a/src/main/java/ley/modding/dartcraft/item/BaseItem.java b/src/main/java/ley/modding/dartcraft/item/BaseItem.java index c74cde7..328c655 100644 --- a/src/main/java/ley/modding/dartcraft/item/BaseItem.java +++ b/src/main/java/ley/modding/dartcraft/item/BaseItem.java @@ -1,13 +1,12 @@ package ley.modding.dartcraft.item; import ley.modding.dartcraft.Dartcraft; +import ley.modding.dartcraft.util.Util; import net.minecraft.item.Item; public class BaseItem extends Item { public BaseItem(String id) { - setUnlocalizedName(id); - setTextureName(Dartcraft.MODID + ":" + id); - setCreativeTab(Dartcraft.tab); + Util.configureItem(this, id); } } diff --git a/src/main/java/ley/modding/dartcraft/item/Items.java b/src/main/java/ley/modding/dartcraft/item/Items.java index e367973..384eb43 100644 --- a/src/main/java/ley/modding/dartcraft/item/Items.java +++ b/src/main/java/ley/modding/dartcraft/item/Items.java @@ -9,5 +9,8 @@ public class Items { public static Item forcenugget; public static Item forcestick; public static Item forceshard; + public static Item forceshears; + public static Item forcepickaxe; + public static Item forcemitts; } diff --git a/src/main/java/ley/modding/dartcraft/item/tool/ItemForcePickaxe.java b/src/main/java/ley/modding/dartcraft/item/tool/ItemForcePickaxe.java index 275c04a..d245e98 100644 --- a/src/main/java/ley/modding/dartcraft/item/tool/ItemForcePickaxe.java +++ b/src/main/java/ley/modding/dartcraft/item/tool/ItemForcePickaxe.java @@ -7,6 +7,7 @@ import ley.modding.dartcraft.api.IBreakable; import ley.modding.dartcraft.api.IForceConsumer; import ley.modding.dartcraft.item.Items; import ley.modding.dartcraft.util.ForceConsumerUtils; +import ley.modding.dartcraft.util.Util; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; @@ -28,9 +29,7 @@ public class ItemForcePickaxe extends ItemPickaxe implements IBreakable, IForceC public ItemForcePickaxe() { super(material); - setUnlocalizedName("forcepickaxe"); - setTextureName(Dartcraft.MODID + ":forcepickaxe"); - setCreativeTab(Dartcraft.tab); + Util.configureItem(this, "forcepickaxe"); } @Override diff --git a/src/main/java/ley/modding/dartcraft/item/tool/ItemForceShears.java b/src/main/java/ley/modding/dartcraft/item/tool/ItemForceShears.java new file mode 100644 index 0000000..14ee6ae --- /dev/null +++ b/src/main/java/ley/modding/dartcraft/item/tool/ItemForceShears.java @@ -0,0 +1,47 @@ +package ley.modding.dartcraft.item.tool; + +import ley.modding.dartcraft.Dartcraft; +import ley.modding.dartcraft.api.IBreakable; +import ley.modding.dartcraft.api.IForceConsumer; +import ley.modding.dartcraft.item.Items; +import ley.modding.dartcraft.util.ForceConsumerUtils; +import ley.modding.dartcraft.util.Util; +import net.minecraft.item.ItemShears; +import net.minecraft.item.ItemStack; + +public class ItemForceShears extends ItemShears implements IBreakable, IForceConsumer { + public ItemForceShears() { + super(); + Util.configureItem(this, "forceshears"); + } + + @Override + public ItemStack itemReturned() { + return new ItemStack(Items.forceshard); + } + + @Override + public int getStored(ItemStack stack) { + return ForceConsumerUtils.getStoredForce(stack); + } + + @Override + public int getMaxStored(ItemStack stack) { + return 10000; + } + + @Override + public int amountUsedBase(ItemStack stack) { + return 0; + } + + @Override + public boolean useForce(ItemStack stack, int var2, boolean var3) { + return false; + } + + @Override + public boolean attemptRepair(ItemStack stack) { + return ForceConsumerUtils.attemptRepair(stack); + } +} diff --git a/src/main/java/ley/modding/dartcraft/util/Util.java b/src/main/java/ley/modding/dartcraft/util/Util.java new file mode 100644 index 0000000..7f60de6 --- /dev/null +++ b/src/main/java/ley/modding/dartcraft/util/Util.java @@ -0,0 +1,12 @@ +package ley.modding.dartcraft.util; + +import ley.modding.dartcraft.Dartcraft; +import net.minecraft.item.Item; + +public class Util { + public static void configureItem(Item item, String id) { + item.setUnlocalizedName(id); + item.setTextureName(Dartcraft.MODID + ":" + id); + item.setCreativeTab(Dartcraft.tab); + } +} diff --git a/src/main/resources/assets/dartcraft/lang/en_US.lang b/src/main/resources/assets/dartcraft/lang/en_US.lang index 49c4ce1..29fb5b1 100644 --- a/src/main/resources/assets/dartcraft/lang/en_US.lang +++ b/src/main/resources/assets/dartcraft/lang/en_US.lang @@ -4,5 +4,6 @@ item.forcenugget.name=Force Nugget item.forcestick.name=Force Stick item.forceshard.name=Force Shard item.forcemitts.name=Force Mitts +item.forceshears.name=Force Shears itemGroup.dartcraft=Dartcraft diff --git a/src/main/resources/assets/dartcraft/textures/entity/coldChicken.png b/src/main/resources/assets/dartcraft/textures/entity/coldChicken.png new file mode 100644 index 0000000000000000000000000000000000000000..ed404502044aec130cfc51383b548dfd05c6c51e GIT binary patch literal 3892 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 JPDHLkV1jW3o@M|5 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/dartcraft/textures/items/forceshears.png b/src/main/resources/assets/dartcraft/textures/items/forceshears.png new file mode 100644 index 0000000000000000000000000000000000000000..3712f9c4a4422ea27699271827bb86ed514f910e GIT binary patch literal 3085 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 b#_s_DX{p43+op5u00000NkvXXu0mjfmOR0I literal 0 HcmV?d00001