Skip to content

Commit d1d5de1

Browse files
Add Bigger baby villager heads (Close #354)
1 parent 6fc92c9 commit d1d5de1

File tree

15 files changed

+110
-8
lines changed

15 files changed

+110
-8
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ BedrockIfy is a fabric Minecraft Mod that implements some useful Minecraft Bedro
2323
- Disable flying momentum (Drift) in creative mode.
2424
- Stop elytra flying by pressing space on air.
2525
- Bedrock bonemeal functionality for flowers and sugar cane.
26+
- Bigger baby villager heads.
2627

2728
Bedrockify also includes "eye-candy" features like the ability use the rotating title screen background in all option screens instead of the boring vanilla dirt background.
2829
All Features are customizable through the In-Game BedrockIfy Settings Menu!

src/main/java/me/juancarloscp52/bedrockify/client/BedrockifyClientSettings.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public enum ButtonPosition {
5656
public boolean sheepColors = true;
5757
public boolean hideEditionBranding = false;
5858
public boolean hotBarOverhang = true;
59+
public boolean babyVillagerHeads = true;
5960

6061
public boolean isPickupAnimationsEnabled() {
6162
return pickupAnimations;

src/main/java/me/juancarloscp52/bedrockify/client/gui/SettingsGUI.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ public Screen getConfigScreen(Screen parent){
132132
*
133133
*/
134134
visualImprovements.addEntry(entryBuilder.startBooleanToggle(Text.translatable("bedrockify.options.fishingBobber3D"), settingsClient.fishingBobber3D).setDefaultValue(true).setSaveConsumer(newValue -> settingsClient.fishingBobber3D=newValue).build());
135+
visualImprovements.addEntry(entryBuilder.startBooleanToggle(Text.translatable("bedrockify.options.babyVillagerHeads"), settingsClient.babyVillagerHeads).setDefaultValue(true).setSaveConsumer(newValue -> settingsClient.babyVillagerHeads=newValue).build());
135136
visualImprovements.addEntry(entryBuilder.startSelector(Text.translatable("bedrockify.options.idleAnimation"), new Float []{0.0f,0.5f,1.0f,1.5f,2.0f,2.5f,3.0f,4.0f}, settingsClient.idleAnimation).setDefaultValue(1.0f).setNameProvider((value)-> Text.literal("x"+ value)).setSaveConsumer((newValue)-> settingsClient.idleAnimation=newValue).build());
136137
visualImprovements.addEntry(entryBuilder.startBooleanToggle(Text.translatable("bedrockify.options.eatingAnimations"), settingsClient.eatingAnimations).setDefaultValue(true).setSaveConsumer(newValue -> settingsClient.eatingAnimations=newValue).build());
137138
visualImprovements.addEntry(entryBuilder.startBooleanToggle(Text.translatable("bedrockify.options.bedrockShading"), settingsClient.bedrockShading).setTooltip(wrapLines(Text.translatable("bedrockify.options.bedrockShading.tooltip"))).setDefaultValue(true).setSaveConsumer(newValue -> {
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package me.juancarloscp52.bedrockify.mixin.client.features.babyVillagerHeads;
2+
3+
import net.minecraft.client.render.VertexConsumer;
4+
import net.minecraft.client.render.entity.model.EntityModel;
5+
import net.minecraft.client.render.entity.model.SinglePartEntityModel;
6+
import net.minecraft.client.util.math.MatrixStack;
7+
import net.minecraft.entity.Entity;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
12+
13+
@Mixin(SinglePartEntityModel.class)
14+
public abstract class SinglePartEntityModelMixin <E extends Entity> extends EntityModel<E> {
15+
16+
@Inject(method = "render", at = @At("HEAD"), cancellable = true)
17+
protected void injectCustomBabyRender(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, int color, CallbackInfo ci){
18+
//Empty injection to be modified in child mixin (see https://www.fabricmc.net/wiki/tutorial:mixinheritance)
19+
}
20+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package me.juancarloscp52.bedrockify.mixin.client.features.babyVillagerHeads;
2+
3+
import com.google.common.collect.ImmutableList;
4+
import me.juancarloscp52.bedrockify.client.BedrockifyClient;
5+
import net.minecraft.client.model.ModelPart;
6+
import net.minecraft.client.render.VertexConsumer;
7+
import net.minecraft.client.render.entity.model.EntityModelPartNames;
8+
import net.minecraft.client.render.entity.model.VillagerResemblingModel;
9+
import net.minecraft.client.util.math.MatrixStack;
10+
import net.minecraft.entity.Entity;
11+
import org.spongepowered.asm.mixin.Final;
12+
import org.spongepowered.asm.mixin.Mixin;
13+
import org.spongepowered.asm.mixin.Shadow;
14+
import org.spongepowered.asm.mixin.Unique;
15+
import org.spongepowered.asm.mixin.injection.At;
16+
import org.spongepowered.asm.mixin.injection.Inject;
17+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
18+
19+
@Mixin(VillagerResemblingModel.class)
20+
public abstract class VillagerResemblingModelMixin<T extends Entity> extends SinglePartEntityModelMixin<T> {
21+
22+
@Shadow @Final private ModelPart rightLeg;
23+
@Shadow @Final private ModelPart leftLeg;
24+
@Shadow @Final private ModelPart head;
25+
@Unique
26+
public ModelPart body;
27+
@Unique
28+
public ModelPart arms;
29+
30+
@Inject(method = "<init>", at=@At("RETURN"))
31+
private void ctr(ModelPart root, CallbackInfo ci){
32+
this.body = root.getChild(EntityModelPartNames.BODY);
33+
this.arms = root.getChild(EntityModelPartNames.ARMS);
34+
}
35+
36+
//Override parent injection with baby villager renderer. For more information see: https://www.fabricmc.net/wiki/tutorial:mixinheritance
37+
@Override
38+
protected void injectCustomBabyRender(MatrixStack matrices, VertexConsumer vertices, int light, int overlay, int color, CallbackInfo ci) {
39+
if(this.child && BedrockifyClient.getInstance().settings.babyVillagerHeads){
40+
// Render scaled head.
41+
float scale = 1.5f;
42+
matrices.push();
43+
matrices.scale(scale,scale,scale);
44+
this.getHeadParts().forEach(modelPart -> modelPart.render(matrices,vertices,light,overlay,color));
45+
matrices.pop();
46+
47+
// Render rest of the body.
48+
this.getBodyParts().forEach(modelPart -> modelPart.render(matrices,vertices,light,overlay,color));
49+
ci.cancel();
50+
}
51+
}
52+
53+
@Unique
54+
public Iterable<ModelPart> getHeadParts() {
55+
return ImmutableList.of(this.head);
56+
}
57+
58+
@Unique
59+
protected Iterable<ModelPart> getBodyParts() {
60+
return ImmutableList.of(this.body, this.rightLeg, this.leftLeg, this.arms);
61+
}
62+
}

src/main/java/me/juancarloscp52/bedrockify/mixin/featureManager/MixinFeatureManager.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public class MixinFeatureManager {
4848
features.put("client.features.hudOpacity.appleskin", true);
4949
features.put("client.features.hudOpacity.detailArmorBar", true);
5050
features.put("client.features.editionBranding", true);
51+
features.put("client.features.babyVillagerHeads", true);
5152

5253
}
5354

src/main/resources/assets/bedrockify/lang/en_us.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"bedrockify.options.elytraStop": "Elytra Flight Cancelling:",
8080
"bedrockify.options.hudOpacity": "Hud Opacity:",
8181
"bedrockify.options.fishingBobber3D": "3D Fishing Bobber:",
82+
"bedrockify.options.babyVillagerHeads": "Bigger Baby Villager Heads:",
8283
"bedrockify.options.elytraStop.tooltip": "Press space while flying with elytra to stop flying mid air.",
8384
"bedrockify.options.bedrockCauldron": "Bedrock Cauldron functionality:",
8485
"bedrockify.options.bedrockCauldron.tooltip": "Toggles Bedrock Cauldron functionality, enabling cauldrons to hold tinted water and potions. Disabling this option won't remove cauldrons holding the new special liquids that already exist in the world.",

src/main/resources/assets/bedrockify/lang/es_ar.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"bedrockify.options.withBackground": "Con fondo",
1010
"bedrockify.options.settings": "Ajustes de BedrockIfy",
1111
"bedrockify.options.screenSafeArea": "Área segura de pantalla:",
12+
"bedrockify.options.HotBarOverhang": "Mostrar sobresaliente del selector de hotbar:",
1213
"bedrockify.options.ignoreBorder": "Overlay ignorará el área segura:",
1314
"bedrockify.options.coordinatesPosition": "Posición del texto de coordenadas:",
1415
"bedrockify.options.showCoordinates": "Mostrar coordenadas:",
@@ -75,6 +76,7 @@
7576
"bedrockify.options.elytraStop.tooltip": "Presiona espacio para parar el vuelo con élitros estando en el aire.",
7677
"bedrockify.options.hudOpacity": "Opacidad del HUD:",
7778
"bedrockify.options.fishingBobber3D": "Cebo 3D al pescar:",
79+
"bedrockify.options.babyVillagerHeads": "Cabezas grandes para aldeanos bebés:",
7880
"bedrockify.options.bedrockCauldron": "Usar Caldero de Bedrock Edition:",
7981
"bedrockify.options.bedrockCauldron.tooltip": "Activa la funcionalidad de calderos como Bedrock Edition, esto permite a los calderos contener agua tintada y pociones. Desactivar esta opcion no eliminará los calderos que contengan estos liquidos que existan ya en el mundo.",
8082
"bedrockify.options.sheepcolors": "Colores en ovejas esquiladas:",
@@ -89,7 +91,7 @@
8991
"bedrockify.loadingTips.9": "¡Las camas son geniales! Fabrica una para pasar la noche y establecer tu punto de regeneración.",
9092
"bedrockify.loadingTips.10": "Ten cuidado cuando nades. Si pasas demasiado tiempo bajo el agua, te quedarás sin aire.",
9193
"bedrockify.loadingTips.11": "El modo supervivencia tiene 4 niveles de dificultad diferentes: pacífica, fácil, normal y difícil. ¡También puedes jugar en el modo creativo y conseguir recursos infinitos!",
92-
"bedrockify.loadingTips.12": "El mundo de Minecraft nunca dejará de sorprenderte. Encontrarás un montón de animales, plantas e incluso §f§k§a§b§r §f§k§a§b§r",
94+
"bedrockify.loadingTips.12": "El mundo de Minecraft nunca dejará de sorprenderte. Encontrarás un montón de animales, plantas e incluso §f§k§lsecret§r §f§k§lstuff",
9395
"bedrockify.loadingTips.13": "¡Los gólems de hierro lucharán por ti!",
9496
"bedrockify.loadingTips.14": "Dale un hueso a un lobo para domesticarlo. Luego, podrás pedirle que se siente o te siga.",
9597
"bedrockify.loadingTips.16": "Recoge cuero de las vacas y utilízalo para fabricar armaduras y libros.",

src/main/resources/assets/bedrockify/lang/es_cl.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"bedrockify.options.withBackground": "Con fondo",
1010
"bedrockify.options.settings": "Ajustes de BedrockIfy",
1111
"bedrockify.options.screenSafeArea": "Área segura de pantalla:",
12+
"bedrockify.options.HotBarOverhang": "Mostrar sobresaliente del selector de hotbar:",
1213
"bedrockify.options.ignoreBorder": "Overlay ignorará el área segura:",
1314
"bedrockify.options.coordinatesPosition": "Posición del texto de coordenadas:",
1415
"bedrockify.options.showCoordinates": "Mostrar coordenadas:",
@@ -75,6 +76,7 @@
7576
"bedrockify.options.elytraStop.tooltip": "Presiona espacio para parar el vuelo con élitros estando en el aire.",
7677
"bedrockify.options.hudOpacity": "Opacidad del HUD:",
7778
"bedrockify.options.fishingBobber3D": "Cebo 3D al pescar:",
79+
"bedrockify.options.babyVillagerHeads": "Cabezas grandes para aldeanos bebés:",
7880
"bedrockify.options.bedrockCauldron": "Usar Caldero de Bedrock Edition:",
7981
"bedrockify.options.bedrockCauldron.tooltip": "Activa la funcionalidad de calderos como Bedrock Edition, esto permite a los calderos contener agua tintada y pociones. Desactivar esta opcion no eliminará los calderos que contengan estos liquidos que existan ya en el mundo.",
8082
"bedrockify.options.sheepcolors": "Colores en ovejas esquiladas:",
@@ -89,7 +91,7 @@
8991
"bedrockify.loadingTips.9": "¡Las camas son geniales! Fabrica una para pasar la noche y establecer tu punto de regeneración.",
9092
"bedrockify.loadingTips.10": "Ten cuidado cuando nades. Si pasas demasiado tiempo bajo el agua, te quedarás sin aire.",
9193
"bedrockify.loadingTips.11": "El modo supervivencia tiene 4 niveles de dificultad diferentes: pacífica, fácil, normal y difícil. ¡También puedes jugar en el modo creativo y conseguir recursos infinitos!",
92-
"bedrockify.loadingTips.12": "El mundo de Minecraft nunca dejará de sorprenderte. Encontrarás un montón de animales, plantas e incluso §f§k§a§b§r §f§k§a§b§r",
94+
"bedrockify.loadingTips.12": "El mundo de Minecraft nunca dejará de sorprenderte. Encontrarás un montón de animales, plantas e incluso §f§k§lsecret§r §f§k§lstuff",
9395
"bedrockify.loadingTips.13": "¡Los gólems de hierro lucharán por ti!",
9496
"bedrockify.loadingTips.14": "Dale un hueso a un lobo para domesticarlo. Luego, podrás pedirle que se siente o te siga.",
9597
"bedrockify.loadingTips.16": "Recoge cuero de las vacas y utilízalo para fabricar armaduras y libros.",

src/main/resources/assets/bedrockify/lang/es_ec.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"bedrockify.options.withBackground": "Con fondo",
1010
"bedrockify.options.settings": "Ajustes de BedrockIfy",
1111
"bedrockify.options.screenSafeArea": "Área segura de pantalla:",
12+
"bedrockify.options.HotBarOverhang": "Mostrar sobresaliente del selector de hotbar:",
1213
"bedrockify.options.ignoreBorder": "Overlay ignorará el área segura:",
1314
"bedrockify.options.coordinatesPosition": "Posición del texto de coordenadas:",
1415
"bedrockify.options.showCoordinates": "Mostrar coordenadas:",
@@ -75,6 +76,7 @@
7576
"bedrockify.options.elytraStop.tooltip": "Presiona espacio para parar el vuelo con élitros estando en el aire.",
7677
"bedrockify.options.hudOpacity": "Opacidad del HUD:",
7778
"bedrockify.options.fishingBobber3D": "Cebo 3D al pescar:",
79+
"bedrockify.options.babyVillagerHeads": "Cabezas grandes para aldeanos bebés:",
7880
"bedrockify.options.bedrockCauldron": "Usar Caldero de Bedrock Edition:",
7981
"bedrockify.options.bedrockCauldron.tooltip": "Activa la funcionalidad de calderos como Bedrock Edition, esto permite a los calderos contener agua tintada y pociones. Desactivar esta opcion no eliminará los calderos que contengan estos liquidos que existan ya en el mundo.",
8082
"bedrockify.options.sheepcolors": "Colores en ovejas esquiladas:",
@@ -89,7 +91,7 @@
8991
"bedrockify.loadingTips.9": "¡Las camas son geniales! Fabrica una para pasar la noche y establecer tu punto de regeneración.",
9092
"bedrockify.loadingTips.10": "Ten cuidado cuando nades. Si pasas demasiado tiempo bajo el agua, te quedarás sin aire.",
9193
"bedrockify.loadingTips.11": "El modo supervivencia tiene 4 niveles de dificultad diferentes: pacífica, fácil, normal y difícil. ¡También puedes jugar en el modo creativo y conseguir recursos infinitos!",
92-
"bedrockify.loadingTips.12": "El mundo de Minecraft nunca dejará de sorprenderte. Encontrarás un montón de animales, plantas e incluso §f§k§a§b§r §f§k§a§b§r",
94+
"bedrockify.loadingTips.12": "El mundo de Minecraft nunca dejará de sorprenderte. Encontrarás un montón de animales, plantas e incluso §f§k§lsecret§r §f§k§lstuff",
9395
"bedrockify.loadingTips.13": "¡Los gólems de hierro lucharán por ti!",
9496
"bedrockify.loadingTips.14": "Dale un hueso a un lobo para domesticarlo. Luego, podrás pedirle que se siente o te siga.",
9597
"bedrockify.loadingTips.16": "Recoge cuero de las vacas y utilízalo para fabricar armaduras y libros.",

0 commit comments

Comments
 (0)