From 9b5b8bf46c5e6fca8057e6822e5341ba9dfd8e57 Mon Sep 17 00:00:00 2001 From: Icosider Date: Sun, 4 Sep 2022 23:29:46 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80=20=D1=81=D1=83?= =?UTF-8?q?=D1=89=D0=BD=D0=BE=D1=81=D1=82=D0=B8=20=D0=97=D0=B0=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=91=D0=BD=20switch=20=D0=BD=D0=B0=20if=20=D0=B2=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=BE=D0=B2=20IGuiHandler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tutorial/client/ClientProxy.java | 8 +- .../render/entity/GooseEntityRender.java | 20 +++++ .../client/render/model/GooseModel.java | 9 +++ .../tutorial/common/CommonProxy.java | 9 +-- .../tutorial/common/entity/GooseEntity.java | 78 +++++++++++++++++++ .../tutorial/common/handler/ModEntities.java | 18 +++++ 6 files changed, 132 insertions(+), 10 deletions(-) create mode 100644 src/main/java/ru/mcmodding/tutorial/client/render/entity/GooseEntityRender.java create mode 100644 src/main/java/ru/mcmodding/tutorial/client/render/model/GooseModel.java create mode 100644 src/main/java/ru/mcmodding/tutorial/common/entity/GooseEntity.java create mode 100644 src/main/java/ru/mcmodding/tutorial/common/handler/ModEntities.java diff --git a/src/main/java/ru/mcmodding/tutorial/client/ClientProxy.java b/src/main/java/ru/mcmodding/tutorial/client/ClientProxy.java index 6b85433..eb12a79 100644 --- a/src/main/java/ru/mcmodding/tutorial/client/ClientProxy.java +++ b/src/main/java/ru/mcmodding/tutorial/client/ClientProxy.java @@ -25,11 +25,9 @@ public void init(FMLInitializationEvent event) { public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) { TileEntity tile = world.getTileEntity(x, y, z); - switch (id) { - case GUI_CHEST: - return new ChestGui(new ChestContainer((ChestTile)tile, player.inventory)); - default: - return null; + if (id == GUI_CHEST) { + return new ChestGui(new ChestContainer((ChestTile) tile, player.inventory)); } + return null; } } \ No newline at end of file diff --git a/src/main/java/ru/mcmodding/tutorial/client/render/entity/GooseEntityRender.java b/src/main/java/ru/mcmodding/tutorial/client/render/entity/GooseEntityRender.java new file mode 100644 index 0000000..3500ca2 --- /dev/null +++ b/src/main/java/ru/mcmodding/tutorial/client/render/entity/GooseEntityRender.java @@ -0,0 +1,20 @@ +package ru.mcmodding.tutorial.client.render.entity; + +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import ru.mcmodding.tutorial.McModding; +import ru.mcmodding.tutorial.client.render.model.GooseModel; + +public class GooseEntityRender extends RenderLiving { + private static final ResourceLocation GOOSE_TEXTURE = new ResourceLocation(McModding.MOD_ID, "textures/entity/goose.png"); + + public GooseEntityRender() { + super(new GooseModel(), 0.7F); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return GOOSE_TEXTURE; + } +} \ No newline at end of file diff --git a/src/main/java/ru/mcmodding/tutorial/client/render/model/GooseModel.java b/src/main/java/ru/mcmodding/tutorial/client/render/model/GooseModel.java new file mode 100644 index 0000000..bb48b8f --- /dev/null +++ b/src/main/java/ru/mcmodding/tutorial/client/render/model/GooseModel.java @@ -0,0 +1,9 @@ +package ru.mcmodding.tutorial.client.render.model; + +import net.minecraft.client.model.ModelBase; + +public class GooseModel extends ModelBase { + public GooseModel() { + + } +} \ No newline at end of file diff --git a/src/main/java/ru/mcmodding/tutorial/common/CommonProxy.java b/src/main/java/ru/mcmodding/tutorial/common/CommonProxy.java index a2e9c7d..ee24294 100644 --- a/src/main/java/ru/mcmodding/tutorial/common/CommonProxy.java +++ b/src/main/java/ru/mcmodding/tutorial/common/CommonProxy.java @@ -44,6 +44,7 @@ public void preInit(FMLPreInitializationEvent event) { MinecraftForge.EVENT_BUS.register(new ForgeEventListener()); ModBlocks.register(); + ModEntities.register(); ModItems.register(); GameRegistry.registerFuelHandler(new FuelHandler()); @@ -79,12 +80,10 @@ public static PacketHandler getPacketHandler() { public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) { TileEntity tile = world.getTileEntity(x, y, z); - switch (id) { - case GUI_CHEST: - return new ChestContainer((ChestTile)tile, player.inventory); - default: - return null; + if (id == GUI_CHEST) { + return new ChestContainer((ChestTile) tile, player.inventory); } + return null; } @Override diff --git a/src/main/java/ru/mcmodding/tutorial/common/entity/GooseEntity.java b/src/main/java/ru/mcmodding/tutorial/common/entity/GooseEntity.java new file mode 100644 index 0000000..afcfc32 --- /dev/null +++ b/src/main/java/ru/mcmodding/tutorial/common/entity/GooseEntity.java @@ -0,0 +1,78 @@ +package ru.mcmodding.tutorial.common.entity; + +import net.minecraft.block.Block; +import net.minecraft.entity.EntityAgeable; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.*; +import net.minecraft.entity.passive.EntityAnimal; +import net.minecraft.entity.passive.EntityChicken; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemSeeds; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import ru.mcmodding.tutorial.McModding; + +public class GooseEntity extends EntityAnimal { + public GooseEntity(World world) { + super(world); + setSize(0.9F, 0.9F); + getNavigator().setAvoidsWater(true); + + tasks.addTask(0, new EntityAISwimming(this)); + tasks.addTask(1, new EntityAIMate(this, 1.0D)); + tasks.addTask(2, new EntityAIAttackOnCollide(this, 1.0, true)); + tasks.addTask(2, new EntityAIFollowParent(this, 1.1D)); + tasks.addTask(3, new EntityAIWander(this, 1.0D)); + tasks.addTask(4, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F)); + tasks.addTask(5, new EntityAILookIdle(this)); + } + + @Override + public boolean isAIEnabled() { + return true; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(10.0D); + getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.25D); + } + + @Override + public String getLivingSound() { + return McModding.MOD_ID + ":goose_say"; + } + + @Override + public String getHurtSound() { + return McModding.MOD_ID + ":goose_say"; + } + + @Override + public String getDeathSound() { + return McModding.MOD_ID + ":goose_death"; + } + + @Override + public void func_145780_a(int x, int y, int z, Block block) { + playSound("mob.chicken.step", 0.15F, 1.0F); + } + + @Override + public Item getDropItem() { + return Items.feather; + } + + @Override + public boolean isBreedingItem(ItemStack stack) { + return stack != null && stack.getItem() instanceof ItemSeeds; + } + + @Override + public EntityAgeable createChild(EntityAgeable ageable) { + return new GooseEntity(worldObj); + } +} \ No newline at end of file diff --git a/src/main/java/ru/mcmodding/tutorial/common/handler/ModEntities.java b/src/main/java/ru/mcmodding/tutorial/common/handler/ModEntities.java new file mode 100644 index 0000000..10125f9 --- /dev/null +++ b/src/main/java/ru/mcmodding/tutorial/common/handler/ModEntities.java @@ -0,0 +1,18 @@ +package ru.mcmodding.tutorial.common.handler; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.common.registry.EntityRegistry; +import ru.mcmodding.tutorial.McModding; +import ru.mcmodding.tutorial.client.render.entity.GooseEntityRender; +import ru.mcmodding.tutorial.common.entity.GooseEntity; + +public class ModEntities { + private ModEntities() { + throw new UnsupportedOperationException(); + } + + public static void register() { + EntityRegistry.registerModEntity(GooseEntity.class, "goose", 0, McModding.instance, 80, 3, true); + RenderingRegistry.registerEntityRenderingHandler(GooseEntity.class, new GooseEntityRender()); + } +} \ No newline at end of file