Skip to content

Commit 9a0954a

Browse files
committed
Release 2.0.8
- Fixed some more typos - Improved the entity registering system, removing the hardcoding of ID distribution - Improved the Horned Sheep model and texture to be more efficient - Implemented some chicken/feather related functionality for later - Added an OreDict for Forestry Royal Jelly - Fixed a bug in Clay Ovens and Cooking Pots that made it so that they wouldn't give back container items
1 parent e70bd9c commit 9a0954a

File tree

16 files changed

+285
-67
lines changed

16 files changed

+285
-67
lines changed

src/main/java/darkbum/saltymod/common/config/ModConfigurationEntities.java

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,14 @@ public class ModConfigurationEntities {
2727

2828
// Effects Config Options
2929
public static boolean enableHornedSheep;
30-
3130
public static boolean hornedSheepThinHorns;
3231

32+
public static boolean chickensAlwaysDropFeathers;
33+
public static boolean babyChickensDropFeathers;
34+
public static boolean chickensShedFeathers;
35+
public static int featherSheddingFrequency;
36+
public static boolean chickensShedFeathersWithEggs;
37+
3338
/**
3439
* Initializes the entity configuration settings by reading values from the provided configuration file.
3540
*
@@ -45,11 +50,38 @@ public static void init(Configuration config) {
4550
enableFeatures + "\nHorned Sheep"
4651
+ "\nHorn"
4752
+ "\n");
48-
4953
hornedSheepThinHorns = config.getBoolean(
5054
"02-hornedSheepThinHorns",
5155
categoryNameEnt,
5256
false,
5357
"Changes the model and texture to give the Horned Sheep thinner horns");
58+
59+
chickensAlwaysDropFeathers = config.getBoolean(
60+
"03-chickensAlwaysDropFeathers",
61+
categoryNameEnt,
62+
true,
63+
"Changes whether or not chickens should always drop feathers");
64+
babyChickensDropFeathers = config.getBoolean(
65+
"04-babyChickensDropFeathers",
66+
categoryNameEnt,
67+
true,
68+
"Changes whether or not baby chickens can drop feathers");
69+
chickensShedFeathers = config.getBoolean(
70+
"05-chickensShedFeathers",
71+
categoryNameEnt,
72+
true,
73+
"Changes whether or not chickens should randomly shed feathers");
74+
featherSheddingFrequency = config.getInt(
75+
"06-featherSheddingFrequency",
76+
categoryNameEnt,
77+
26000,
78+
1200,
79+
72000,
80+
"Changes the feather shedding frequency in ticks. 1200 is ~ every minute, 72000 is ~ every sixty minutes");
81+
chickensShedFeathersWithEggs = config.getBoolean(
82+
"07-chickensShedFeathersWithEggs",
83+
categoryNameEnt,
84+
true,
85+
"Changes whether or not chickens should always shed feathers when laying an egg");
5486
}
5587
}

src/main/java/darkbum/saltymod/common/proxy/ClientProxy.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818
import darkbum.saltymod.init.ModItems;
1919
import net.minecraft.util.IIcon;
2020

21+
import static cpw.mods.fml.client.registry.RenderingRegistry.*;
22+
import static darkbum.saltymod.common.config.ModConfigurationBlocks.*;
23+
import static darkbum.saltymod.common.config.ModConfigurationWorldGeneration.*;
24+
2125
/**
2226
* Client-side proxy class responsible for client-only initializations like custom renderers for blocks and entities.
2327
* This class extends behavior defined in {@link CommonProxy}.
@@ -51,19 +55,19 @@ public void setRenderers() {
5155
* Called during client-side initialization.
5256
*/
5357
public void setBlockRenderers() {
54-
if (ModConfigurationBlocks.enableSaltDirt) {
55-
saltGrassRenderType = RenderingRegistry.getNextAvailableRenderId();
56-
RenderingRegistry.registerBlockHandler(new SaltGrassRenderer());
58+
if (enableSaltDirt) {
59+
saltGrassRenderType = getNextAvailableRenderId();
60+
registerBlockHandler(new SaltGrassRenderer());
5761
}
5862

59-
if (ModConfigurationBlocks.enableMachines) {
60-
cookingPotRenderType = RenderingRegistry.getNextAvailableRenderId();
61-
RenderingRegistry.registerBlockHandler(new CookingPotRenderer());
63+
if (enableMachines) {
64+
cookingPotRenderType = getNextAvailableRenderId();
65+
registerBlockHandler(new CookingPotRenderer());
6266
}
6367

64-
if (ModConfigurationWorldGeneration.enableSaltMarsh) {
65-
marshReedsRenderType = RenderingRegistry.getNextAvailableRenderId();
66-
RenderingRegistry.registerBlockHandler(new MarshReedsRenderer());
68+
if (enableSaltMarsh) {
69+
marshReedsRenderType = getNextAvailableRenderId();
70+
registerBlockHandler(new MarshReedsRenderer());
6771
}
6872
}
6973

@@ -72,11 +76,8 @@ public void setBlockRenderers() {
7276
* This method must only be called on the client side.
7377
*/
7478
public void setEntityRenderers() {
75-
RenderingRegistry.registerEntityRenderingHandler(EntityRainmaker.class,
76-
new RenderSnowball(ModItems.rainmaker));
77-
RenderingRegistry.registerEntityRenderingHandler(EntityRainmakerExplosion.class,
78-
new RenderRainmakerExplosion());
79-
RenderingRegistry.registerEntityRenderingHandler(EntityHornedSheep.class,
80-
new RenderHornedSheep(new ModelHornedSheep2(), new ModelHornedSheep1(), 0.7F));
79+
registerEntityRenderingHandler(EntityRainmaker.class, new RenderSnowball(ModItems.rainmaker));
80+
registerEntityRenderingHandler(EntityRainmakerExplosion.class, new RenderRainmakerExplosion());
81+
registerEntityRenderingHandler(EntityHornedSheep.class, new RenderHornedSheep(new ModelHornedSheep2(), new ModelHornedSheep1(), 0.7f));
8182
}
8283
}

src/main/java/darkbum/saltymod/common/proxy/CommonProxy.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ private void registerEventHandlers() {
104104
register(new EntityItemPickupEventHandler());
105105
register(new EntityJoinWorldEventHandler());
106106
register(new LivingDropsEventHandler());
107+
register(new LivingUpdateEventHandler());
107108
register(new PlayerItemCraftedEventHandler());
108109
register(new PlayerPickupXpEventHandler());
109110
register(new PlayerUseItemEventHandler());

src/main/java/darkbum/saltymod/entity/EntityHornedSheep.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@
66
import cpw.mods.fml.relauncher.SideOnly;
77
import darkbum.saltymod.init.ModBlocks;
88
import darkbum.saltymod.init.ModItems;
9-
import net.minecraft.entity.EntityAgeable;
10-
import net.minecraft.entity.IEntityLivingData;
11-
import net.minecraft.entity.SharedMonsterAttributes;
9+
import net.minecraft.entity.*;
1210
import net.minecraft.entity.ai.EntityAIMate;
1311
import net.minecraft.entity.ai.EntityAITempt;
1412
import net.minecraft.entity.passive.EntitySheep;
@@ -19,6 +17,8 @@
1917
import net.minecraft.util.MovingObjectPosition;
2018
import net.minecraft.world.World;
2119

20+
import static darkbum.saltymod.init.ModEntities.*;
21+
2222
/**
2323
* Entity class for the horned sheep entity.
2424
* The horned sheep is a sheep copy with horns.
@@ -151,9 +151,17 @@ protected void dropFewItems(boolean wasRecentlyHit, int lootingLevel) {
151151
}
152152
}
153153

154+
/**
155+
* Returns the spawn egg ItemStack corresponding to this entity when middle-clicked in creative mode.
156+
* Uses the entity's registered spawn egg metadata from ModEntities.
157+
*
158+
* @param target The targeted block or entity under the cursor.
159+
* @return an ItemStack of the spawn egg with the correct metadata for this entity, or null if none is registered.
160+
*/
154161
@Override
155162
@SideOnly(Side.CLIENT)
156163
public ItemStack getPickedResult(MovingObjectPosition target) {
157-
return new ItemStack(Items.spawn_egg, 1, 601);
164+
Integer id = getEntityEggId(this.getClass());
165+
return id != null ? new ItemStack(Items.spawn_egg, 1, id) : null;
158166
}
159167
}

src/main/java/darkbum/saltymod/entity/model/ModelHornedSheep1.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,15 @@ public void setLivingAnimations(EntityLivingBase entityLivingBase, float limbSwi
6363
* Sets the rotation angles for the model's parts.
6464
*
6565
* @param limbSwing The limb swing distance.
66-
* @param limbSwingAngles The limb swing angle.
66+
* @param limbSwingAngle The limb swing angle.
6767
* @param entityTickTime The entity's tick time.
6868
* @param rotationYaw The entity's yaw rotation.
6969
* @param rotationPitch The entity's pitch rotation.
7070
* @param unitPixel The scaling factor.
7171
* @param entity The entity instance.
7272
*/
73-
public void setRotationAngles(float limbSwing, float limbSwingAngles, float entityTickTime, float rotationYaw, float rotationPitch, float unitPixel, Entity entity) {
74-
super.setRotationAngles(limbSwing, limbSwingAngles, entityTickTime, rotationYaw, rotationPitch, unitPixel, entity);
73+
public void setRotationAngles(float limbSwing, float limbSwingAngle, float entityTickTime, float rotationYaw, float rotationPitch, float unitPixel, Entity entity) {
74+
super.setRotationAngles(limbSwing, limbSwingAngle, entityTickTime, rotationYaw, rotationPitch, unitPixel, entity);
7575
head.rotateAngleX = headRotationAngle;
7676
}
7777
}

src/main/java/darkbum/saltymod/entity/model/ModelHornedSheep2.java

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,29 @@ public ModelHornedSheep2() {
4343
leg4 = new ModelRenderer(this, 0, 16);
4444
leg4.addBox(-2.0F, 0.0F, -2.0F, 4, 12, 4, 0.0F);
4545
leg4.setRotationPoint(3.0F, 12.0F, -5.0F);
46+
if (!ModConfigurationEntities.hornedSheepThinHorns) {
47+
head.setTextureOffset(0, 32).addBox(-7.0F, -5.0F, -4.5F, 4, 7, 6, 0.0F);
48+
head.setTextureOffset(0, 45).addBox(-7.0F, -1.0F, -7.5F, 4, 3, 3, 0.0F);
49+
ModelRenderer leftHorn1 = new ModelRenderer(this, 0, 32);
50+
leftHorn1.mirror = true;
51+
leftHorn1.setTextureOffset(0, 32).addBox(3.0F, -5.0F, -4.5F, 4, 7, 6, 0.0F);
52+
head.addChild(leftHorn1);
53+
ModelRenderer leftHorn2 = new ModelRenderer(this, 0, 45);
54+
leftHorn2.mirror = true;
55+
leftHorn2.setTextureOffset(0, 45).addBox(3.0F, -1.0F, -7.5F, 4, 3, 3, 0.0F);
56+
head.addChild(leftHorn2);
57+
}
4658
if (ModConfigurationEntities.hornedSheepThinHorns) {
47-
head.setTextureOffset(0, 32).addBox(3.0F, -5.0F, -4.5F, 2, 7, 6, 0.0F);
48-
head.setTextureOffset(0, 45).addBox(3.0F, -1.0F, -7.5F, 2, 3, 3, 0.0F);
4959
head.setTextureOffset(20, 32).addBox(-5.0F, -5.0F, -4.5F, 2, 7, 6, 0.0F);
50-
head.setTextureOffset(14, 45).addBox(-5.0F, -1.0F, -7.5F, 2, 3, 3, 0.0F);
51-
}
52-
if (!ModConfigurationEntities.hornedSheepThinHorns) {
53-
head.setTextureOffset(0, 32).addBox(3.0F, -5.0F, -4.5F, 4, 7, 6, 0.0F);
54-
head.setTextureOffset(0, 45).addBox(3.0F, -1.0F, -7.5F, 4, 3, 3, 0.0F);
55-
head.setTextureOffset(20, 32).addBox(-7.0F, -5.0F, -4.5F, 4, 7, 6, 0.0F);
56-
head.setTextureOffset(14, 45).addBox(-7.0F, -1.0F, -7.5F, 4, 3, 3, 0.0F);
60+
head.setTextureOffset(20, 45).addBox(-5.0F, -1.0F, -7.5F, 2, 3, 3, 0.0F);
61+
ModelRenderer leftHorn1 = new ModelRenderer(this, 0, 32);
62+
leftHorn1.mirror = true;
63+
leftHorn1.setTextureOffset(20, 32).addBox(3.0F, -5.0F, -4.5F, 2, 7, 6, 0.0F);
64+
head.addChild(leftHorn1);
65+
ModelRenderer leftHorn2 = new ModelRenderer(this, 0, 45);
66+
leftHorn2.mirror = true;
67+
leftHorn2.setTextureOffset(20, 45).addBox(3.0F, -1.0F, -7.5F, 2, 3, 3, 0.0F);
68+
head.addChild(leftHorn2);
5769
}
5870
}
5971

src/main/java/darkbum/saltymod/entity/render/RenderHornedSheep.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ public class RenderHornedSheep extends RenderLiving {
2121

2222
private static final ResourceLocation hornedSheepTextures = new ResourceLocation("saltymod:textures/entity/horned_sheep/horned_sheep_fur.png");
2323
private static final ResourceLocation shearedHornedSheepTextures = new ResourceLocation("saltymod:textures/entity/horned_sheep/horned_sheep.png");
24-
private static final ResourceLocation shearedHornedSheepThinTextures = new ResourceLocation("saltymod:textures/entity/horned_sheep/thin/horned_sheep_thin.png");
2524

2625
/**
2726
* Constructs a new RenderHornedSheep instance.
@@ -32,7 +31,7 @@ public class RenderHornedSheep extends RenderLiving {
3231
*/
3332
public RenderHornedSheep(ModelBase modelBase1, ModelBase modelBase2, float shadowSize) {
3433
super(modelBase1, shadowSize);
35-
this.setRenderPassModel(modelBase2);
34+
setRenderPassModel(modelBase2);
3635
}
3736

3837
/**
@@ -43,7 +42,7 @@ public RenderHornedSheep(ModelBase modelBase1, ModelBase modelBase2, float shado
4342
*/
4443
@Override
4544
protected ResourceLocation getEntityTexture(Entity entity) {
46-
return this.getEntityTexture((EntityHornedSheep) entity);
45+
return getEntityTexture((EntityHornedSheep) entity);
4746
}
4847

4948
/**
@@ -53,9 +52,6 @@ protected ResourceLocation getEntityTexture(Entity entity) {
5352
* @return the texture resource location.
5453
*/
5554
protected ResourceLocation getEntityTexture(EntityHornedSheep entity) {
56-
if (ModConfigurationEntities.hornedSheepThinHorns) {
57-
return shearedHornedSheepThinTextures;
58-
}
5955
return shearedHornedSheepTextures;
6056
}
6157

@@ -69,7 +65,7 @@ protected ResourceLocation getEntityTexture(EntityHornedSheep entity) {
6965
*/
7066
@Override
7167
protected int shouldRenderPass(EntityLivingBase entityLivingBase, int renderPass, float partialTicks) {
72-
return this.shouldRenderPass((EntityHornedSheep) entityLivingBase, renderPass, partialTicks);
68+
return shouldRenderPass((EntityHornedSheep) entityLivingBase, renderPass, partialTicks);
7369
}
7470

7571
/**
@@ -82,10 +78,9 @@ protected int shouldRenderPass(EntityLivingBase entityLivingBase, int renderPass
8278
*/
8379
protected int shouldRenderPass(EntityHornedSheep entityHornedSheep, int renderPass, float partialTicks) {
8480
if (renderPass == 0 && !entityHornedSheep.getSheared()) {
85-
this.bindTexture(hornedSheepTextures);
81+
bindTexture(hornedSheepTextures);
8682

8783
if (entityHornedSheep.hasCustomNameTag() && "jeb_".equals(entityHornedSheep.getCustomNameTag())) {
88-
boolean flag = true;
8984
int k = entityHornedSheep.ticksExisted / 25 + entityHornedSheep.getEntityId();
9085
int l = k % EntityHornedSheep.fleeceColorTable.length;
9186
int i1 = (k + 1) % EntityHornedSheep.fleeceColorTable.length;

src/main/java/darkbum/saltymod/event/LivingDropsEventHandler.java

Lines changed: 51 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,20 @@
44
import java.util.concurrent.ThreadLocalRandom;
55

66
import net.minecraft.entity.EntityLivingBase;
7+
import net.minecraft.entity.item.EntityItem;
78
import net.minecraft.entity.monster.EntityZombie;
89
import net.minecraft.entity.passive.EntityBat;
10+
import net.minecraft.entity.passive.EntityChicken;
911
import net.minecraft.entity.passive.EntityHorse;
1012
import net.minecraft.entity.passive.EntitySquid;
1113
import net.minecraft.item.ItemStack;
1214
import net.minecraftforge.event.entity.living.LivingDropsEvent;
1315

1416
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
15-
import darkbum.saltymod.init.ModItems;
17+
18+
import static darkbum.saltymod.common.config.ModConfigurationEntities.*;
19+
import static darkbum.saltymod.init.ModItems.*;
20+
import static net.minecraft.init.Items.*;
1621

1722
/**
1823
* Event handler class for entity drops-related events.
@@ -45,6 +50,10 @@ public void onLivingDrop(LivingDropsEvent event) {
4550
handleHorseDrops(entity, isBurning);
4651
} else if (entity instanceof EntityBat) {
4752
handleBatDrops(entity, isBurning);
53+
} else if (babyChickensDropFeathers && entity instanceof EntityChicken && isChild) {
54+
handleBabyChickenDrops(entity);
55+
} else if (chickensAlwaysDropFeathers && entity instanceof EntityChicken && !isChild) {
56+
handleChickenDrops(entity, event);
4857
}
4958
}
5059

@@ -56,7 +65,7 @@ public void onLivingDrop(LivingDropsEvent event) {
5665
private void handleZombieDrops(EntityLivingBase entity) {
5766
int dropChance = ThreadLocalRandom.current().nextInt(1000);
5867
if (dropChance < 25) {
59-
entity.entityDropItem(new ItemStack(ModItems.onion, 1), 0.0F);
68+
if (onion != null) entity.entityDropItem(new ItemStack(onion, 1), 0.0f);
6069
}
6170
}
6271

@@ -67,9 +76,9 @@ private void handleZombieDrops(EntityLivingBase entity) {
6776
* @param isBurning Whether the squid is burning.
6877
*/
6978
private void handleSquidDrops(EntityLivingBase entity, boolean isBurning) {
70-
int amount = getDropAmount(3);
79+
int amount = getDropAmount(1, 3);
7180
int meta = isBurning ? 1 : 0;
72-
entity.entityDropItem(new ItemStack(ModItems.calamari, amount, meta), 0.0F);
81+
if (calamari != null) entity.entityDropItem(new ItemStack(calamari, amount, meta), 0.0f);
7382
}
7483

7584
/**
@@ -79,9 +88,9 @@ private void handleSquidDrops(EntityLivingBase entity, boolean isBurning) {
7988
* @param isBurning Whether the horse is burning.
8089
*/
8190
private void handleHorseDrops(EntityLivingBase entity, boolean isBurning) {
82-
int amount = getDropAmount(2);
91+
int amount = getDropAmount(1, 2);
8392
int meta = isBurning ? 1 : 0;
84-
entity.entityDropItem(new ItemStack(ModItems.haunch, amount, meta), 0.0F);
93+
if (haunch != null) entity.entityDropItem(new ItemStack(haunch, amount, meta), 0.0f);
8594
}
8695

8796
/**
@@ -92,7 +101,37 @@ private void handleHorseDrops(EntityLivingBase entity, boolean isBurning) {
92101
*/
93102
private void handleBatDrops(EntityLivingBase entity, boolean isBurning) {
94103
int meta = isBurning ? 1 : 0;
95-
entity.entityDropItem(new ItemStack(ModItems.strider, 1, meta), 0.0F);
104+
if (strider != null) entity.entityDropItem(new ItemStack(strider, 1, meta), 0.0f);
105+
}
106+
107+
/**
108+
* Handles custom drops for baby chickens.
109+
*
110+
* @param entity The bat entity.
111+
*/
112+
private void handleBabyChickenDrops(EntityLivingBase entity) {
113+
int amount = getDropAmount(chickensAlwaysDropFeathers ? 1 : 0, 1);
114+
entity.entityDropItem(new ItemStack(feather, amount, 0), 0.0f);
115+
}
116+
117+
/**
118+
* Handles custom drops for chickens.
119+
*
120+
* @param entity The bat entity.
121+
*/
122+
private void handleChickenDrops(EntityLivingBase entity, LivingDropsEvent event) {
123+
boolean hasFeatherAlready = false;
124+
125+
for (EntityItem drop : event.drops) {
126+
ItemStack stack = drop.getEntityItem();
127+
if (stack != null && stack.getItem() == feather) {
128+
hasFeatherAlready = true;
129+
break;
130+
}
131+
}
132+
if (!hasFeatherAlready) {
133+
entity.entityDropItem(new ItemStack(feather, 1, 0), 0.0f);
134+
}
96135
}
97136

98137
/**
@@ -101,7 +140,10 @@ private void handleBatDrops(EntityLivingBase entity, boolean isBurning) {
101140
* @param max The maximum amount (inclusive).
102141
* @return The randomly generated drop amount.
103142
*/
104-
private int getDropAmount(int max) {
105-
return ThreadLocalRandom.current().nextInt(1, max + 1);
143+
public static int getDropAmount(int min, int max) {
144+
if (min > max) {
145+
throw new IllegalArgumentException("Min may not be larger than max!");
146+
}
147+
return ThreadLocalRandom.current().nextInt(min, max + 1);
106148
}
107149
}

0 commit comments

Comments
 (0)