diff --git a/src/client/java/net/pedroricardo/HeadedRewrittenClient.java b/src/client/java/net/pedroricardo/HeadedRewrittenClient.java index cb75ec5..21a65f7 100644 --- a/src/client/java/net/pedroricardo/HeadedRewrittenClient.java +++ b/src/client/java/net/pedroricardo/HeadedRewrittenClient.java @@ -1,18 +1,29 @@ package net.pedroricardo; +import com.mojang.brigadier.Command; +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import com.mojang.brigadier.builder.RequiredArgumentBuilder; +import io.wispforest.owo.config.Option; import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; +import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.minecraft.block.Blocks; +import net.minecraft.block.entity.SkullBlockEntity; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.entity.model.EntityModelLayers; import net.minecraft.client.render.entity.model.PiglinHeadEntityModel; import net.minecraft.client.render.entity.model.SkullEntityModel; +import net.minecraft.item.Items; +import net.minecraft.nbt.NbtCompound; import net.minecraft.sound.SoundEvents; +import net.minecraft.text.Text; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; import net.minecraft.village.VillagerProfession; +import net.pedroricardo.content.HeadOptionArgumentType; import net.pedroricardo.content.HeadedCreativeTab; import net.pedroricardo.content.HeadedEntityModelLayers; import net.pedroricardo.content.TextureToHeadMap; @@ -28,171 +39,200 @@ public class HeadedRewrittenClient implements ClientModInitializer { @Override public void onInitializeClient() { HeadedEntityModelLayers.init(); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WHITE_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "White Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(0, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ORANGE_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Orange Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(1, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.MAGENTA_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Magenta Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(2, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.LIGHT_BLUE_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Light Blue Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(3, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.YELLOW_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Yellow Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(4, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.LIME_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Lime Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(5, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PINK_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Pink Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(6, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GRAY_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Gray Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(7, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.LIGHT_GRAY_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Light Gray Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(8, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CYAN_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Cyan Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(9, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PURPLE_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Purple Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(10, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLUE_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Blue Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(11, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BROWN_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Brown Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(12, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GREEN_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Green Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(13, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.RED_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Red Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(14, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLACK_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Black Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(15, false)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.JEB_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "jeb_ Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(0, true)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ALLAY(), (modelLoader) -> new AllayHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.ALLAY_HEAD), true), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/allay/allay.png")), "Allay", SoundEvents.ENTITY_ALLAY_AMBIENT_WITHOUT_ITEM.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.LUCY_AXOLOTL(), (modelLoader) -> new AxolotlHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.AXOLOTL_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/axolotl/axolotl_lucy.png")), "Lucy Axolotl", SoundEvents.ENTITY_AXOLOTL_IDLE_AIR.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WILD_AXOLOTL(), (modelLoader) -> new AxolotlHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.AXOLOTL_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/axolotl/axolotl_wild.png")), "Wild Axolotl", SoundEvents.ENTITY_AXOLOTL_IDLE_AIR.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GOLD_AXOLOTL(), (modelLoader) -> new AxolotlHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.AXOLOTL_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/axolotl/axolotl_gold.png")), "Gold Axolotl", SoundEvents.ENTITY_AXOLOTL_IDLE_AIR.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CYAN_AXOLOTL(), (modelLoader) -> new AxolotlHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.AXOLOTL_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/axolotl/axolotl_cyan.png")), "Cyan Axolotl", SoundEvents.ENTITY_AXOLOTL_IDLE_AIR.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLUE_AXOLOTL(), (modelLoader) -> new AxolotlHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.AXOLOTL_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/axolotl/axolotl_blue.png")), "Blue Axolotl", SoundEvents.ENTITY_AXOLOTL_IDLE_AIR.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BAT(), (modelLoader) -> new BatHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.BAT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/bat.png")), "Bat", SoundEvents.ENTITY_BAT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BEE(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.BEE), 1.37515625f, new Vector3f(7.0f, 7.0f, 10.0f)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/bee/bee.png")), "Bee", SoundEvents.ENTITY_BEE_LOOP.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.POLLINATED_BEE(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.BEE), 1.37515625f, new Vector3f(7.0f, 7.0f, 10.0f)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/bee/bee_nectar.png")), "Pollinated Bee", SoundEvents.ENTITY_BEE_POLLINATE.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ANGRY_BEE(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.BEE), 1.37515625f, new Vector3f(7.0f, 7.0f, 10.0f)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/bee/bee_angry.png")), "Angry Bee", SoundEvents.ENTITY_BEE_LOOP_AGGRESSIVE.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ANGRY_POLLINATED_BEE(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.BEE), 1.37515625f, new Vector3f(7.0f, 7.0f, 10.0f)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/bee/bee_angry_nectar.png")), "Angry Pollinated Bee", SoundEvents.ENTITY_BEE_LOOP_AGGRESSIVE.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLAZE(), (modelLoader) -> new BlazeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.BLAZE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/blaze.png")), "Blaze", SoundEvents.ENTITY_BLAZE_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BREEZE(), (modelLoader) -> new BreezeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.BREEZE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/breeze/breeze.png")), "Breeze", SoundEvents.ENTITY_BREEZE_IDLE_GROUND.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new BreezeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.BREEZE_EYES)), RenderLayer.getEntityTranslucentEmissiveNoOutline(new Identifier("textures/entity/breeze/breeze.png")))); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CAMEL(), (modelLoader) -> new CamelHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.CAMEL_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/camel/camel.png")), "Camel", SoundEvents.ENTITY_CAMEL_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ALL_BLACK_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/all_black.png")), "Black Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLACK_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/black.png")), "Tuxedo Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BRITISH_SHORTHAIR_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/british_shorthair.png")), "British Shorthair", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CALICO_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/calico.png")), "Calico Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.JELLIE_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/jellie.png")), "Jellie Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PERSIAN_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/persian.png")), "Persian Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.RAGDOLL_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/ragdoll.png")), "Ragdoll Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.RED_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/red.png")), "Red Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SIAMESE_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/siamese.png")), "Siamese Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.TABBY_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/tabby.png")), "Tabby Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WHITE_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/white.png")), "White Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CAVE_SPIDER(), (modelLoader) -> new SpiderHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.CAVE_SPIDER_HEAD), 0.7f), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/spider/cave_spider.png")), "Cave Spider", SoundEvents.ENTITY_SPIDER_AMBIENT.getId().toString(), (modelLoader) -> new SpiderEyesHeadFeatureRenderer(HeadedEntityModelLayers.CAVE_SPIDER_EYES, 0.7f)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CHICKEN(), (modelLoader) -> new ChickenHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.CHICKEN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/chicken.png")), "Chicken", SoundEvents.ENTITY_CHICKEN_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.COD(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.COD), new Vector3f(15.0f, 4.0f, 2.0f), 0.0f, 1.5f, -0.216875f, 90, 0), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/fish/cod.png")), "Cod", SoundEvents.ENTITY_COD_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.COW(), (modelLoader) -> new CowHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.COW_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cow/cow.png")), "Cow", SoundEvents.ENTITY_COW_AMBIENT.getId().toString()); - TextureToHeadMap.addHeadNotInGroup("http://textures.minecraft.net/texture/46c40f35e40519cf4176ccc65eecdc9571699a4975d03ccd4d58a6ceaba72c8b", (modelLoader) -> new ArmorStandHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.ARMOR_STAND_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/armorstand/wood.png")), "Armor Stand", SoundEvents.ENTITY_GENERIC_EXPLODE.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.DOLPHIN(), (modelLoader) -> new DolphinHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.DOLPHIN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/dolphin.png")), "Dolphin", SoundEvents.ENTITY_DOLPHIN_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.DONKEY(), (modelLoader) -> new DonkeyHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.DONKEY_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/donkey.png")), "Donkey", SoundEvents.ENTITY_DONKEY_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.DROWNED(), (modelLoader) -> new DrownedHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.DROWNED_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie/drowned.png")), "Drowned", SoundEvents.ENTITY_DROWNED_AMBIENT.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new DrownedHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.DROWNED_HEAD_OUTER_LAYER)), RenderLayer.getEntityCutoutNoCullZOffset(new Identifier("textures/entity/zombie/drowned_outer_layer.png")))); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ELDER_GUARDIAN(), (modelLoader) -> new GuardianHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.GUARDIAN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/guardian_elder.png")), "Elder Guardian", SoundEvents.ENTITY_ELDER_GUARDIAN_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ENDERMAN(), (modelLoader) -> new EndermanHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.ENDERMAN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/enderman/enderman.png")), "Enderman", SoundEvents.ENTITY_ENDERMAN_AMBIENT.getId().toString(), (modelLoader) -> new EndermanEyesHeadFeatureRenderer()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ENDERMITE(), (modelLoader) -> new EndermiteHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.ENDERMITE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/endermite.png")), "Endermite", SoundEvents.ENTITY_ENDERMITE_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.EVOKER(), (modelLoader) -> new VillagerLikeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.EVOKER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/illager/evoker.png")), "Evoker", SoundEvents.ENTITY_EVOKER_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.FOX(), (modelLoader) -> new FoxHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.FOX_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/fox/fox.png")), "Fox", SoundEvents.ENTITY_FOX_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SNOW_FOX(), (modelLoader) -> new FoxHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.FOX_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/fox/snow_fox.png")), "Snow Fox", SoundEvents.ENTITY_FOX_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.COLD_FROG(), (modelLoader) -> new FrogHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.FROG_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/frog/cold_frog.png")), "Cold Frog", SoundEvents.ENTITY_FROG_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.TEMPERATE_FROG(), (modelLoader) -> new FrogHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.FROG_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/frog/temperate_frog.png")), "Temperate Frog", SoundEvents.ENTITY_FROG_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WARM_FROG(), (modelLoader) -> new FrogHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.FROG_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/frog/warm_frog.png")), "Warm Frog", SoundEvents.ENTITY_FROG_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GHAST(), (modelLoader) -> new GhastHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.GHAST_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/ghast/ghast.png")), "Ghast", SoundEvents.ENTITY_GHAST_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GLOW_SQUID(), (modelLoader) -> new SquidHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SQUID_HEAD), true), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/squid/glow_squid.png")), "Glow Squid", SoundEvents.ENTITY_GLOW_SQUID_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GOAT(), (modelLoader) -> new GoatHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.GOAT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/goat/goat.png")), "Goat", SoundEvents.ENTITY_GOAT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GUARDIAN(), (modelLoader) -> new GuardianHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.GUARDIAN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/guardian.png")), "Guardian", SoundEvents.ENTITY_GUARDIAN_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.HOGLIN(), (modelLoader) -> new HoglinHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HOGLIN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/hoglin/hoglin.png")), "Hoglin", SoundEvents.ENTITY_HOGLIN_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WHITE_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_white.png")), "White Horse", SoundEvents.ENTITY_HORSE_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CREAMY_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_creamy.png")), "Creamy Horse", SoundEvents.ENTITY_HORSE_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CHESTNUT_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_chestnut.png")), "Chestnut Horse", SoundEvents.ENTITY_HORSE_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BROWN_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_brown.png")), "Brown Horse", SoundEvents.ENTITY_HORSE_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLACK_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_black.png")), "Black Horse", SoundEvents.ENTITY_HORSE_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GRAY_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_gray.png")), "Gray Horse", SoundEvents.ENTITY_HORSE_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.DARK_BROWN_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_darkbrown.png")), "Dark Brown Horse", SoundEvents.ENTITY_HORSE_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.HUSK(), (modelLoader) -> new SkullEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HUSK_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie/husk.png")), "Husk", SoundEvents.ENTITY_HUSK_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ILLUSIONER(), (modelLoader) -> new VillagerLikeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.ILLUSIONER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/illager/illusioner.png")), "Illusioner", SoundEvents.ENTITY_ILLUSIONER_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.IRON_GOLEM(), (modelLoader) -> new IronGolemHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.IRON_GOLEM_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/iron_golem/iron_golem.png")), "Iron Golem", SoundEvents.ENTITY_IRON_GOLEM_STEP.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CREAMY_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/creamy.png")), "Creamy Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WHITE_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/white.png")), "White Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BROWN_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/brown.png")), "Brown Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GRAY_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/gray.png")), "Gray Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.MAGMA_CUBE(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.MAGMA_CUBE), 1.5f, new Vector3f(8.0f, 8.0f, 8.0f)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/slime/magmacube.png")), "Magma Cube", SoundEvents.ENTITY_MAGMA_CUBE_JUMP.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.RED_MOOSHROOM(), (modelLoader) -> new CowHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.COW_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cow/red_mooshroom.png")), "Red Mooshroom", SoundEvents.ENTITY_COW_AMBIENT.getId().toString(), (modelLoader) -> new MooshroomMushroomHeadFeatureRenderer(Blocks.RED_MUSHROOM, new CowHeadEntityModel(MinecraftClient.getInstance().getEntityModelLoader().getModelPart(HeadedEntityModelLayers.COW_HEAD)))); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BROWN_MOOSHROOM(), (modelLoader) -> new CowHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.COW_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cow/brown_mooshroom.png")), "Brown Mooshroom", SoundEvents.ENTITY_COW_AMBIENT.getId().toString(), (modelLoader) -> new MooshroomMushroomHeadFeatureRenderer(Blocks.BROWN_MUSHROOM, new CowHeadEntityModel(MinecraftClient.getInstance().getEntityModelLoader().getModelPart(HeadedEntityModelLayers.COW_HEAD)))); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.MULE(), (modelLoader) -> new DonkeyHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.DONKEY_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/mule.png")), "Mule", SoundEvents.ENTITY_MULE_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.OCELOT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/ocelot.png")), "Ocelot", SoundEvents.ENTITY_OCELOT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.AGGRESSIVE_PANDA(), (modelLoader) -> new PandaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PANDA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/panda/aggressive_panda.png")), "Aggressive Panda", SoundEvents.ENTITY_PANDA_AGGRESSIVE_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BROWN_PANDA(), (modelLoader) -> new PandaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PANDA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/panda/brown_panda.png")), "Brown Panda", SoundEvents.ENTITY_PANDA_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.LAZY_PANDA(), (modelLoader) -> new PandaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PANDA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/panda/lazy_panda.png")), "Lazy Panda", SoundEvents.ENTITY_PANDA_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PANDA(), (modelLoader) -> new PandaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PANDA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/panda/panda.png")), "Panda", SoundEvents.ENTITY_PANDA_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PLAYFUL_PANDA(), (modelLoader) -> new PandaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PANDA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/panda/playful_panda.png")), "Playful Panda", SoundEvents.ENTITY_PANDA_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WEAK_PANDA(), (modelLoader) -> new PandaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PANDA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/panda/weak_panda.png")), "Weak Panda", SoundEvents.ENTITY_PANDA_SNEEZE.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WORRIED_PANDA(), (modelLoader) -> new PandaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PANDA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/panda/worried_panda.png")), "Worried Panda", SoundEvents.ENTITY_PANDA_WORRIED_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLUE_PARROT(), (modelLoader) -> new ParrotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PARROT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/parrot/parrot_blue.png")), "Blue Parrot", SoundEvents.ENTITY_PARROT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GREEN_PARROT(), (modelLoader) -> new ParrotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PARROT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/parrot/parrot_green.png")), "Green Parrot", SoundEvents.ENTITY_PARROT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GRAY_PARROT(), (modelLoader) -> new ParrotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PARROT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/parrot/parrot_grey.png")), "Gray Parrot", SoundEvents.ENTITY_PARROT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.RED_PARROT(), (modelLoader) -> new ParrotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PARROT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/parrot/parrot_red_blue.png")), "Red Parrot", SoundEvents.ENTITY_PARROT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CYAN_PARROT(), (modelLoader) -> new ParrotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PARROT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/parrot/parrot_yellow_blue.png")), "Cyan Parrot", SoundEvents.ENTITY_PARROT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PHANTOM(), (modelLoader) -> new PhantomHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PHANTOM_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/phantom.png")), "Phantom", SoundEvents.ENTITY_PHANTOM_AMBIENT.getId().toString(), (modelLoader) -> new PhantomEyesHeadFeatureRenderer()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PIG(), (modelLoader) -> new PigHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PIG_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/pig/pig.png")), "Pig", SoundEvents.ENTITY_PIG_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PIGLIN_BRUTE(), (modelLoader) -> new PiglinHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PIGLIN_BRUTE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/piglin/piglin_brute.png")), "Piglin Brute", SoundEvents.ENTITY_PIGLIN_BRUTE_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PILLAGER(), (modelLoader) -> new VillagerLikeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/illager/pillager.png")), "Pillager", SoundEvents.ENTITY_PILLAGER_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.POLAR_BEAR(), (modelLoader) -> new PolarBearHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.POLAR_BEAR_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/bear/polarbear.png")), "Polar Bear", SoundEvents.ENTITY_POLAR_BEAR_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PUFFERFISH(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.PUFFERFISH_BIG), 1.3775f, new Vector3f(8.0f, 8.0f, 8.0f)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/fish/pufferfish.png")), "Pufferfish", SoundEvents.ENTITY_PUFFER_FISH_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLACK_RABBIT(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/black.png")), "Black Rabbit", SoundEvents.ENTITY_RABBIT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BROWN_RABBIT(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/brown.png")), "Brown Rabbit", SoundEvents.ENTITY_RABBIT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.KILLER_BUNNY(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/caerbannog.png")), "The Killer Bunny", SoundEvents.ENTITY_RABBIT_ATTACK.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GOLD_RABBIT(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/gold.png")), "Gold Rabbit", SoundEvents.ENTITY_RABBIT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SALT_PEPPER_RABBIT(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/salt.png")), "Salt and Pepper Rabbit", SoundEvents.ENTITY_RABBIT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.TOAST_RABBIT(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/toast.png")), "Toast", SoundEvents.ENTITY_RABBIT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WHITE_RABBIT(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/white.png")), "White Rabbit", SoundEvents.ENTITY_RABBIT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLACK_WHITE_RABBIT(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/white_splotched.png")), "Black and White Rabbit", SoundEvents.ENTITY_RABBIT_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.RAVAGER(), (modelLoader) -> new RavagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RAVAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/illager/ravager.png")), "Ravager", SoundEvents.ENTITY_RAVAGER_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SALMON(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.SALMON), new Vector3f(16.0f, 5.0f, 3.0f), 0.0f, 1.408125f, -0.5f, 90.0f, 0.0f), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/fish/salmon.png")), "Salmon", SoundEvents.ENTITY_SALMON_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SHULKER(), (modelLoader) -> new ShulkerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHULKER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/shulker/shulker.png")), "Shulker", SoundEvents.ENTITY_SHULKER_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SILVERFISH(), (modelLoader) -> new SilverfishHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SILVERFISH_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/silverfish.png")), "Silverfish", SoundEvents.ENTITY_SILVERFISH_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SKELETON_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_skeleton.png")), "Skeleton Horse", SoundEvents.ENTITY_SKELETON_HORSE_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SLIME(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.SLIME), 1.5f, new Vector3f(8.0f, 8.0f, 8.0f)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/slime/slime.png")), "Slime", SoundEvents.ENTITY_SLIME_JUMP.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.SLIME_OUTER), 1.5f, new Vector3f(8.0f, 8.0f, 8.0f)), RenderLayer.getEntityTranslucent(new Identifier("textures/entity/slime/slime.png")))); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SNIFFER(), (modelLoader) -> new SnifferHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SNIFFER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sniffer/sniffer.png")), "Sniffer", SoundEvents.ENTITY_SNIFFER_SNIFFING.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SNOW_GOLEM(), (modelLoader) -> new SnowGolemHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SNOW_GOLEM_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/snow_golem.png")), "Snow Golem", SoundEvents.ENTITY_SNOW_GOLEM_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SPIDER(), (modelLoader) -> new SpiderHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SPIDER_HEAD), 1.0f), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/spider/spider.png")), "Spider", SoundEvents.ENTITY_SPIDER_AMBIENT.getId().toString(), (modelLoader) -> new SpiderEyesHeadFeatureRenderer(HeadedEntityModelLayers.SPIDER_EYES, 1.0f)); - TextureToHeadMap.addHeadNotInGroup("http://textures.minecraft.net/texture/50c410045cd3749c3a8ed856df411f6c33e9a8a6f9e57e521608a8ad8ed6eb37", (modelLoader) -> new SpiderHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SPIDER_HEAD), 1.0f), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/spider/spider.png")), "Spider", SoundEvents.ENTITY_SPIDER_AMBIENT.getId().toString(), (modelLoader) -> new SpiderEyesHeadFeatureRenderer(HeadedEntityModelLayers.SPIDER_EYES, 1.0f)); // just in case - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SQUID(), (modelLoader) -> new SquidHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SQUID_HEAD), false), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/squid/squid.png")), "Squid", SoundEvents.ENTITY_SQUID_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.STRAY(), (modelLoader) -> new StraySkullEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.STRAY_SKULL)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/skeleton/stray.png")), "Stray", SoundEvents.ENTITY_STRAY_AMBIENT.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new StraySkullEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.STRAY_SKULL_OUTER_LAYER)), RenderLayer.getEntityCutoutNoCullZOffset(new Identifier("textures/entity/skeleton/stray_overlay.png")))); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.STRIDER(), (modelLoader) -> new StriderHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.STRIDER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/strider/strider.png")), "Strider", SoundEvents.ENTITY_STRIDER_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.TADPOLE(), (modelLoader) -> new TadpoleHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.TADPOLE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/tadpole/tadpole.png")), "Tadpole", SoundEvents.ENTITY_TADPOLE_FLOP.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CREAMY_TRADER_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/creamy.png")), "Creamy Trader Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD_DECOR)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/decor/trader_llama.png")))); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WHITE_TRADER_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/white.png")), "White Trader Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD_DECOR)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/decor/trader_llama.png")))); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BROWN_TRADER_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/brown.png")), "Brown Trader Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD_DECOR)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/decor/trader_llama.png")))); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GRAY_TRADER_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/gray.png")), "Gray Trader Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD_DECOR)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/decor/trader_llama.png")))); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.TROPICAL_FISH(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.TROPICAL_FISH_SMALL), new Vector3f(6.0f, 3.0f, 2.0f), 0.0f, 1.469375f, 0.0f, 90.0f, 0.0f), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/fish/tropical_a.png")), "Tropical Fish", SoundEvents.ENTITY_TROPICAL_FISH_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.TURTLE(), (modelLoader) -> new TurtleHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.TURTLE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/turtle/big_sea_turtle.png")), "Turtle", SoundEvents.ENTITY_TURTLE_AMBIENT_LAND.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.VEX(), (modelLoader) -> new AllayHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VEX_HEAD), false), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/illager/vex.png")), "Vex", SoundEvents.ENTITY_VEX_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CHARGING_VEX(), (modelLoader) -> new AllayHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VEX_HEAD), false), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/illager/vex_charging.png")), "Charging Vex", SoundEvents.ENTITY_VEX_CHARGE.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Villager", SoundEvents.ENTITY_VILLAGER_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ARMORER_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Armorer Villager", SoundEvents.ENTITY_VILLAGER_WORK_ARMORER.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.ARMORER)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BUTCHER_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Butcher Villager", SoundEvents.ENTITY_VILLAGER_WORK_BUTCHER.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.BUTCHER)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CARTOGRAPHER_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Cartographer Villager", SoundEvents.ENTITY_VILLAGER_WORK_CARTOGRAPHER.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.CARTOGRAPHER)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CLERIC_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Cleric Villager", SoundEvents.ENTITY_VILLAGER_WORK_CLERIC.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.CLERIC)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.FARMER_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Farmer Villager", SoundEvents.ENTITY_VILLAGER_WORK_FARMER.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.FARMER)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.FISHERMAN_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Fisherman Villager", SoundEvents.ENTITY_VILLAGER_WORK_FISHERMAN.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.FISHERMAN)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.FLETCHER_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Fletcher Villager", SoundEvents.ENTITY_VILLAGER_WORK_FLETCHER.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.FLETCHER)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.LIBRARIAN_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Librarian Villager", SoundEvents.ENTITY_VILLAGER_WORK_LIBRARIAN.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.LIBRARIAN)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SHEPHERD_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Shepherd Villager", SoundEvents.ENTITY_VILLAGER_WORK_SHEPHERD.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.SHEPHERD)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WEAPONSMITH_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Weaponsmith Villager", SoundEvents.ENTITY_VILLAGER_WORK_SHEPHERD.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.WEAPONSMITH)); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.VINDICATOR(), (modelLoader) -> new VillagerLikeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VINDICATOR_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/illager/vindicator.png")), "Vindicator", SoundEvents.ENTITY_VINDICATOR_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WANDERING_TRADER(), (modelLoader) -> new VillagerLikeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WANDERING_TRADER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/wandering_trader.png")), "Wandering Trader", SoundEvents.ENTITY_WANDERING_TRADER_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WARDEN(), (modelLoader) -> new WardenHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WARDEN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/warden/warden.png")), "Warden", SoundEvents.ENTITY_WARDEN_AMBIENT.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new WardenHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WARDEN_HEAD)), RenderLayer.getEntityTranslucentEmissive(new Identifier("textures/entity/warden/warden_bioluminescent_layer.png"))), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new WardenHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WARDEN_HEAD)), RenderLayer.getEntityTranslucentEmissive(new Identifier("textures/entity/warden/warden_pulsating_spots_1.png")), Math.max(0.0F, MathHelper.cos((MinecraftClient.getInstance().world == null ? 0 : MinecraftClient.getInstance().world.getTime()) * 0.045F) * 0.25F)), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new WardenHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WARDEN_HEAD)), RenderLayer.getEntityTranslucentEmissive(new Identifier("textures/entity/warden/warden_pulsating_spots_2.png")), Math.max(0.0F, MathHelper.cos((MinecraftClient.getInstance().world == null ? 0 : MinecraftClient.getInstance().world.getTime()) * 0.045F + 3.1415927F) * 0.25F))); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WITCH(), (modelLoader) -> new WitchHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WITCH_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/witch.png")), "Witch", SoundEvents.ENTITY_WITCH_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WITHER(), (modelLoader) -> new WitherSkullEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WITHER_SKULL)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/wither/wither.png")), "Wither", SoundEvents.ENTITY_WITHER_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WITHER_PROJECTILE(), (modelLoader) -> new WitherSkullEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WITHER_PROJECTILE)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/wither/wither.png")), "Wither Projectile", SoundEvents.ENTITY_WITHER_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLUE_WITHER_PROJECTILE(), (modelLoader) -> new WitherSkullEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.BLUE_WITHER_PROJECTILE)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/wither/wither_invulnerable.png")), "Blue Wither Projectile", SoundEvents.ENTITY_WITHER_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WOLF(), (modelLoader) -> new WolfHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WOLF_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/wolf/wolf.png")), "Wolf", SoundEvents.ENTITY_WOLF_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ANGRY_WOLF(), (modelLoader) -> new WolfHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WOLF_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/wolf/wolf_angry.png")), "Angry Wolf", SoundEvents.ENTITY_WOLF_GROWL.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ZOGLIN(), (modelLoader) -> new HoglinHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HOGLIN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/hoglin/zoglin.png")), "Zoglin", SoundEvents.ENTITY_ZOGLIN_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ZOMBIE_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_zombie.png")), "Zombie Horse", SoundEvents.ENTITY_ZOMBIE_HORSE_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString()); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ARMORER_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Armorer Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.ARMORER, "zombie_villager")); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BUTCHER_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Butcher Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.BUTCHER, "zombie_villager")); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CARTOGRAPHER_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Cartographer Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.CARTOGRAPHER, "zombie_villager")); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CLERIC_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Cleric Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.CLERIC, "zombie_villager")); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.FARMER_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Farmer Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.FARMER, "zombie_villager")); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.FISHERMAN_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Fisherman Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.FISHERMAN, "zombie_villager")); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.FLETCHER_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Fletcher Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.FLETCHER, "zombie_villager")); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.LIBRARIAN_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Librarian Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.LIBRARIAN, "zombie_villager")); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SHEPHERD_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Shepherd Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.SHEPHERD, "zombie_villager")); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WEAPONSMITH_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Weaponsmith Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.WEAPONSMITH, "zombie_villager")); - TextureToHeadMap.addHead("http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ZOMBIFIED_PIGLIN(), (modelLoader) -> new PiglinHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.ZOMBIFIED_PIGLIN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/piglin/zombified_piglin.png")), "Zombified Piglin", SoundEvents.ENTITY_ZOMBIFIED_PIGLIN_AMBIENT.getId().toString()); + ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> dispatcher.register(LiteralArgumentBuilder.literal(HeadedRewritten.MOD_ID) + .then(LiteralArgumentBuilder.literal("set") + .then(RequiredArgumentBuilder.>argument("head", HeadOptionArgumentType.head()) + .executes(c -> { + FabricClientCommandSource source = c.getSource(); + if (source.getClient().player == null) { + source.sendError(Text.translatable("commands.headed-rewritten.headed-rewritten.set.no_player")); + return 0; + } + if (!source.getClient().player.getMainHandStack().isOf(Items.PLAYER_HEAD)) { + source.sendError(Text.translatable("commands.headed-rewritten.headed-rewritten.set.item_is_not_a_head")); + return 0; + } + NbtCompound nbt = source.getClient().player.getMainHandStack().getNbt(); + String textureURL; + if (nbt != null && SkullBlockEntity.getProfile(nbt) != null && (textureURL = MinecraftClient.getInstance().getSkinProvider().getSkinTextures(SkullBlockEntity.getProfile(nbt)).textureUrl()) != null) { + textureURL = textureURL.replaceFirst("http://textures.minecraft.net/texture/", ""); + String finalTextureURL = textureURL; + HeadedRewritten.CONFIG.allOptions().forEach((key, value) -> { + if (value.value().equals(finalTextureURL)) ((Option)value).set(value.defaultValue()); + }); + HeadOptionArgumentType.getHeadOption(c, "head").set(textureURL); + source.sendFeedback(Text.translatable("commands.headed-rewritten.headed-rewritten.set.success", HeadOptionArgumentType.getHeadOption(c, "head").key().asString(), textureURL)); + return Command.SINGLE_SUCCESS; + } else { + source.sendError(Text.translatable("commands.headed-rewritten.headed-rewritten.set.invalid_nbt")); + return 0; + } + }))))); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WHITE_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "White Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(0, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ORANGE_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Orange Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(1, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.MAGENTA_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Magenta Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(2, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.LIGHT_BLUE_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Light Blue Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(3, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.YELLOW_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Yellow Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(4, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.LIME_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Lime Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(5, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PINK_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Pink Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(6, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GRAY_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Gray Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(7, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.LIGHT_GRAY_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Light Gray Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(8, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CYAN_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Cyan Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(9, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PURPLE_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Purple Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(10, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLUE_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Blue Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(11, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BROWN_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Brown Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(12, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GREEN_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Green Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(13, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.RED_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Red Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(14, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLACK_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "Black Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(15, false)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.JEB_SHEEP(), (modelLoader) -> new SheepHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHEEP_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sheep/sheep.png")), "jeb_ Sheep", SoundEvents.ENTITY_SHEEP_AMBIENT.getId().toString(), (modelLoader) -> new SheepWoolHeadFeatureRenderer(0, true)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ALLAY(), (modelLoader) -> new AllayHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.ALLAY_HEAD), true), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/allay/allay.png")), "Allay", SoundEvents.ENTITY_ALLAY_AMBIENT_WITHOUT_ITEM.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.LUCY_AXOLOTL(), (modelLoader) -> new AxolotlHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.AXOLOTL_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/axolotl/axolotl_lucy.png")), "Lucy Axolotl", SoundEvents.ENTITY_AXOLOTL_IDLE_AIR.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WILD_AXOLOTL(), (modelLoader) -> new AxolotlHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.AXOLOTL_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/axolotl/axolotl_wild.png")), "Wild Axolotl", SoundEvents.ENTITY_AXOLOTL_IDLE_AIR.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GOLD_AXOLOTL(), (modelLoader) -> new AxolotlHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.AXOLOTL_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/axolotl/axolotl_gold.png")), "Gold Axolotl", SoundEvents.ENTITY_AXOLOTL_IDLE_AIR.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CYAN_AXOLOTL(), (modelLoader) -> new AxolotlHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.AXOLOTL_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/axolotl/axolotl_cyan.png")), "Cyan Axolotl", SoundEvents.ENTITY_AXOLOTL_IDLE_AIR.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLUE_AXOLOTL(), (modelLoader) -> new AxolotlHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.AXOLOTL_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/axolotl/axolotl_blue.png")), "Blue Axolotl", SoundEvents.ENTITY_AXOLOTL_IDLE_AIR.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BAT(), (modelLoader) -> new BatHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.BAT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/bat.png")), "Bat", SoundEvents.ENTITY_BAT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BEE(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.BEE), 1.37515625f, new Vector3f(7.0f, 7.0f, 10.0f)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/bee/bee.png")), "Bee", SoundEvents.ENTITY_BEE_LOOP.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.POLLINATED_BEE(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.BEE), 1.37515625f, new Vector3f(7.0f, 7.0f, 10.0f)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/bee/bee_nectar.png")), "Pollinated Bee", SoundEvents.ENTITY_BEE_POLLINATE.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ANGRY_BEE(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.BEE), 1.37515625f, new Vector3f(7.0f, 7.0f, 10.0f)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/bee/bee_angry.png")), "Angry Bee", SoundEvents.ENTITY_BEE_LOOP_AGGRESSIVE.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ANGRY_POLLINATED_BEE(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.BEE), 1.37515625f, new Vector3f(7.0f, 7.0f, 10.0f)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/bee/bee_angry_nectar.png")), "Angry Pollinated Bee", SoundEvents.ENTITY_BEE_LOOP_AGGRESSIVE.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLAZE(), (modelLoader) -> new BlazeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.BLAZE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/blaze.png")), "Blaze", SoundEvents.ENTITY_BLAZE_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BREEZE(), (modelLoader) -> new BreezeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.BREEZE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/breeze/breeze.png")), "Breeze", SoundEvents.ENTITY_BREEZE_IDLE_GROUND.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new BreezeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.BREEZE_EYES)), RenderLayer.getEntityTranslucentEmissiveNoOutline(new Identifier("textures/entity/breeze/breeze.png")))); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CAMEL(), (modelLoader) -> new CamelHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.CAMEL_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/camel/camel.png")), "Camel", SoundEvents.ENTITY_CAMEL_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ALL_BLACK_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/all_black.png")), "Black Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLACK_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/black.png")), "Tuxedo Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BRITISH_SHORTHAIR_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/british_shorthair.png")), "British Shorthair", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CALICO_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/calico.png")), "Calico Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.JELLIE_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/jellie.png")), "Jellie Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PERSIAN_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/persian.png")), "Persian Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.RAGDOLL_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/ragdoll.png")), "Ragdoll Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.RED_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/red.png")), "Red Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SIAMESE_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/siamese.png")), "Siamese Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.TABBY_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/tabby.png")), "Tabby Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WHITE_CAT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/white.png")), "White Cat", SoundEvents.ENTITY_CAT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CAVE_SPIDER(), (modelLoader) -> new SpiderHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.CAVE_SPIDER_HEAD), 0.7f), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/spider/cave_spider.png")), "Cave Spider", SoundEvents.ENTITY_SPIDER_AMBIENT.getId().toString(), (modelLoader) -> new SpiderEyesHeadFeatureRenderer(HeadedEntityModelLayers.CAVE_SPIDER_EYES, 0.7f)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CHICKEN(), (modelLoader) -> new ChickenHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.CHICKEN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/chicken.png")), "Chicken", SoundEvents.ENTITY_CHICKEN_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.COD(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.COD), new Vector3f(15.0f, 4.0f, 2.0f), 0.0f, 1.5f, -0.216875f, 90, 0), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/fish/cod.png")), "Cod", SoundEvents.ENTITY_COD_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.COW(), (modelLoader) -> new CowHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.COW_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cow/cow.png")), "Cow", SoundEvents.ENTITY_COW_AMBIENT.getId().toString()); + TextureToHeadMap.addHeadNotInGroup(() -> "http://textures.minecraft.net/texture/46c40f35e40519cf4176ccc65eecdc9571699a4975d03ccd4d58a6ceaba72c8b", (modelLoader) -> new ArmorStandHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.ARMOR_STAND_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/armorstand/wood.png")), "Armor Stand", SoundEvents.ENTITY_GENERIC_EXPLODE.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.DOLPHIN(), (modelLoader) -> new DolphinHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.DOLPHIN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/dolphin.png")), "Dolphin", SoundEvents.ENTITY_DOLPHIN_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.DONKEY(), (modelLoader) -> new DonkeyHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.DONKEY_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/donkey.png")), "Donkey", SoundEvents.ENTITY_DONKEY_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.DROWNED(), (modelLoader) -> new DrownedHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.DROWNED_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie/drowned.png")), "Drowned", SoundEvents.ENTITY_DROWNED_AMBIENT.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new DrownedHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.DROWNED_HEAD_OUTER_LAYER)), RenderLayer.getEntityCutoutNoCullZOffset(new Identifier("textures/entity/zombie/drowned_outer_layer.png")))); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ELDER_GUARDIAN(), (modelLoader) -> new GuardianHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.GUARDIAN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/guardian_elder.png")), "Elder Guardian", SoundEvents.ENTITY_ELDER_GUARDIAN_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ENDERMAN(), (modelLoader) -> new EndermanHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.ENDERMAN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/enderman/enderman.png")), "Enderman", SoundEvents.ENTITY_ENDERMAN_AMBIENT.getId().toString(), (modelLoader) -> new EndermanEyesHeadFeatureRenderer()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ENDERMITE(), (modelLoader) -> new EndermiteHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.ENDERMITE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/endermite.png")), "Endermite", SoundEvents.ENTITY_ENDERMITE_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.EVOKER(), (modelLoader) -> new VillagerLikeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.EVOKER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/illager/evoker.png")), "Evoker", SoundEvents.ENTITY_EVOKER_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.FOX(), (modelLoader) -> new FoxHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.FOX_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/fox/fox.png")), "Fox", SoundEvents.ENTITY_FOX_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SNOW_FOX(), (modelLoader) -> new FoxHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.FOX_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/fox/snow_fox.png")), "Snow Fox", SoundEvents.ENTITY_FOX_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.COLD_FROG(), (modelLoader) -> new FrogHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.FROG_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/frog/cold_frog.png")), "Cold Frog", SoundEvents.ENTITY_FROG_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.TEMPERATE_FROG(), (modelLoader) -> new FrogHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.FROG_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/frog/temperate_frog.png")), "Temperate Frog", SoundEvents.ENTITY_FROG_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WARM_FROG(), (modelLoader) -> new FrogHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.FROG_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/frog/warm_frog.png")), "Warm Frog", SoundEvents.ENTITY_FROG_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GHAST(), (modelLoader) -> new GhastHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.GHAST_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/ghast/ghast.png")), "Ghast", SoundEvents.ENTITY_GHAST_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GLOW_SQUID(), (modelLoader) -> new SquidHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SQUID_HEAD), true), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/squid/glow_squid.png")), "Glow Squid", SoundEvents.ENTITY_GLOW_SQUID_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GOAT(), (modelLoader) -> new GoatHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.GOAT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/goat/goat.png")), "Goat", SoundEvents.ENTITY_GOAT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GUARDIAN(), (modelLoader) -> new GuardianHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.GUARDIAN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/guardian.png")), "Guardian", SoundEvents.ENTITY_GUARDIAN_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.HOGLIN(), (modelLoader) -> new HoglinHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HOGLIN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/hoglin/hoglin.png")), "Hoglin", SoundEvents.ENTITY_HOGLIN_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WHITE_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_white.png")), "White Horse", SoundEvents.ENTITY_HORSE_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CREAMY_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_creamy.png")), "Creamy Horse", SoundEvents.ENTITY_HORSE_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CHESTNUT_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_chestnut.png")), "Chestnut Horse", SoundEvents.ENTITY_HORSE_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BROWN_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_brown.png")), "Brown Horse", SoundEvents.ENTITY_HORSE_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLACK_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_black.png")), "Black Horse", SoundEvents.ENTITY_HORSE_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GRAY_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_gray.png")), "Gray Horse", SoundEvents.ENTITY_HORSE_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.DARK_BROWN_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_darkbrown.png")), "Dark Brown Horse", SoundEvents.ENTITY_HORSE_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.HUSK(), (modelLoader) -> new SkullEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HUSK_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie/husk.png")), "Husk", SoundEvents.ENTITY_HUSK_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ILLUSIONER(), (modelLoader) -> new VillagerLikeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.ILLUSIONER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/illager/illusioner.png")), "Illusioner", SoundEvents.ENTITY_ILLUSIONER_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.IRON_GOLEM(), (modelLoader) -> new IronGolemHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.IRON_GOLEM_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/iron_golem/iron_golem.png")), "Iron Golem", SoundEvents.ENTITY_IRON_GOLEM_STEP.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CREAMY_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/creamy.png")), "Creamy Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WHITE_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/white.png")), "White Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BROWN_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/brown.png")), "Brown Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GRAY_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/gray.png")), "Gray Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.MAGMA_CUBE(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.MAGMA_CUBE), 1.5f, new Vector3f(8.0f, 8.0f, 8.0f)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/slime/magmacube.png")), "Magma Cube", SoundEvents.ENTITY_MAGMA_CUBE_JUMP.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.RED_MOOSHROOM(), (modelLoader) -> new CowHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.COW_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cow/red_mooshroom.png")), "Red Mooshroom", SoundEvents.ENTITY_COW_AMBIENT.getId().toString(), (modelLoader) -> new MooshroomMushroomHeadFeatureRenderer(Blocks.RED_MUSHROOM, new CowHeadEntityModel(MinecraftClient.getInstance().getEntityModelLoader().getModelPart(HeadedEntityModelLayers.COW_HEAD)))); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BROWN_MOOSHROOM(), (modelLoader) -> new CowHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.COW_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cow/brown_mooshroom.png")), "Brown Mooshroom", SoundEvents.ENTITY_COW_AMBIENT.getId().toString(), (modelLoader) -> new MooshroomMushroomHeadFeatureRenderer(Blocks.BROWN_MUSHROOM, new CowHeadEntityModel(MinecraftClient.getInstance().getEntityModelLoader().getModelPart(HeadedEntityModelLayers.COW_HEAD)))); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.MULE(), (modelLoader) -> new DonkeyHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.DONKEY_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/mule.png")), "Mule", SoundEvents.ENTITY_MULE_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.OCELOT(), (modelLoader) -> new OcelotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.OCELOT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/cat/ocelot.png")), "Ocelot", SoundEvents.ENTITY_OCELOT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.AGGRESSIVE_PANDA(), (modelLoader) -> new PandaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PANDA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/panda/aggressive_panda.png")), "Aggressive Panda", SoundEvents.ENTITY_PANDA_AGGRESSIVE_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BROWN_PANDA(), (modelLoader) -> new PandaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PANDA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/panda/brown_panda.png")), "Brown Panda", SoundEvents.ENTITY_PANDA_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.LAZY_PANDA(), (modelLoader) -> new PandaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PANDA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/panda/lazy_panda.png")), "Lazy Panda", SoundEvents.ENTITY_PANDA_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PANDA(), (modelLoader) -> new PandaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PANDA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/panda/panda.png")), "Panda", SoundEvents.ENTITY_PANDA_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PLAYFUL_PANDA(), (modelLoader) -> new PandaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PANDA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/panda/playful_panda.png")), "Playful Panda", SoundEvents.ENTITY_PANDA_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WEAK_PANDA(), (modelLoader) -> new PandaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PANDA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/panda/weak_panda.png")), "Weak Panda", SoundEvents.ENTITY_PANDA_SNEEZE.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WORRIED_PANDA(), (modelLoader) -> new PandaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PANDA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/panda/worried_panda.png")), "Worried Panda", SoundEvents.ENTITY_PANDA_WORRIED_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLUE_PARROT(), (modelLoader) -> new ParrotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PARROT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/parrot/parrot_blue.png")), "Blue Parrot", SoundEvents.ENTITY_PARROT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GREEN_PARROT(), (modelLoader) -> new ParrotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PARROT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/parrot/parrot_green.png")), "Green Parrot", SoundEvents.ENTITY_PARROT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GRAY_PARROT(), (modelLoader) -> new ParrotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PARROT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/parrot/parrot_grey.png")), "Gray Parrot", SoundEvents.ENTITY_PARROT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.RED_PARROT(), (modelLoader) -> new ParrotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PARROT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/parrot/parrot_red_blue.png")), "Red Parrot", SoundEvents.ENTITY_PARROT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CYAN_PARROT(), (modelLoader) -> new ParrotHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PARROT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/parrot/parrot_yellow_blue.png")), "Cyan Parrot", SoundEvents.ENTITY_PARROT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PHANTOM(), (modelLoader) -> new PhantomHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PHANTOM_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/phantom.png")), "Phantom", SoundEvents.ENTITY_PHANTOM_AMBIENT.getId().toString(), (modelLoader) -> new PhantomEyesHeadFeatureRenderer()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PIG(), (modelLoader) -> new PigHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PIG_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/pig/pig.png")), "Pig", SoundEvents.ENTITY_PIG_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PIGLIN_BRUTE(), (modelLoader) -> new PiglinHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PIGLIN_BRUTE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/piglin/piglin_brute.png")), "Piglin Brute", SoundEvents.ENTITY_PIGLIN_BRUTE_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PILLAGER(), (modelLoader) -> new VillagerLikeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.PILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/illager/pillager.png")), "Pillager", SoundEvents.ENTITY_PILLAGER_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.POLAR_BEAR(), (modelLoader) -> new PolarBearHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.POLAR_BEAR_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/bear/polarbear.png")), "Polar Bear", SoundEvents.ENTITY_POLAR_BEAR_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.PUFFERFISH(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.PUFFERFISH_BIG), 1.3775f, new Vector3f(8.0f, 8.0f, 8.0f)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/fish/pufferfish.png")), "Pufferfish", SoundEvents.ENTITY_PUFFER_FISH_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLACK_RABBIT(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/black.png")), "Black Rabbit", SoundEvents.ENTITY_RABBIT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BROWN_RABBIT(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/brown.png")), "Brown Rabbit", SoundEvents.ENTITY_RABBIT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.KILLER_BUNNY(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/caerbannog.png")), "The Killer Bunny", SoundEvents.ENTITY_RABBIT_ATTACK.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GOLD_RABBIT(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/gold.png")), "Gold Rabbit", SoundEvents.ENTITY_RABBIT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SALT_PEPPER_RABBIT(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/salt.png")), "Salt and Pepper Rabbit", SoundEvents.ENTITY_RABBIT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.TOAST_RABBIT(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/toast.png")), "Toast", SoundEvents.ENTITY_RABBIT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WHITE_RABBIT(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/white.png")), "White Rabbit", SoundEvents.ENTITY_RABBIT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLACK_WHITE_RABBIT(), (modelLoader) -> new RabbitHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RABBIT_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/rabbit/white_splotched.png")), "Black and White Rabbit", SoundEvents.ENTITY_RABBIT_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.RAVAGER(), (modelLoader) -> new RavagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.RAVAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/illager/ravager.png")), "Ravager", SoundEvents.ENTITY_RAVAGER_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SALMON(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.SALMON), new Vector3f(16.0f, 5.0f, 3.0f), 0.0f, 1.408125f, -0.5f, 90.0f, 0.0f), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/fish/salmon.png")), "Salmon", SoundEvents.ENTITY_SALMON_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SHULKER(), (modelLoader) -> new ShulkerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SHULKER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/shulker/shulker.png")), "Shulker", SoundEvents.ENTITY_SHULKER_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SILVERFISH(), (modelLoader) -> new SilverfishHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SILVERFISH_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/silverfish.png")), "Silverfish", SoundEvents.ENTITY_SILVERFISH_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SKELETON_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_skeleton.png")), "Skeleton Horse", SoundEvents.ENTITY_SKELETON_HORSE_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SLIME(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.SLIME), 1.5f, new Vector3f(8.0f, 8.0f, 8.0f)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/slime/slime.png")), "Slime", SoundEvents.ENTITY_SLIME_JUMP.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.SLIME_OUTER), 1.5f, new Vector3f(8.0f, 8.0f, 8.0f)), RenderLayer.getEntityTranslucent(new Identifier("textures/entity/slime/slime.png")))); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SNIFFER(), (modelLoader) -> new SnifferHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SNIFFER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/sniffer/sniffer.png")), "Sniffer", SoundEvents.ENTITY_SNIFFER_SNIFFING.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SNOW_GOLEM(), (modelLoader) -> new SnowGolemHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SNOW_GOLEM_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/snow_golem.png")), "Snow Golem", SoundEvents.ENTITY_SNOW_GOLEM_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SPIDER(), (modelLoader) -> new SpiderHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SPIDER_HEAD), 1.0f), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/spider/spider.png")), "Spider", SoundEvents.ENTITY_SPIDER_AMBIENT.getId().toString(), (modelLoader) -> new SpiderEyesHeadFeatureRenderer(HeadedEntityModelLayers.SPIDER_EYES, 1.0f)); + TextureToHeadMap.addHeadNotInGroup(() -> "http://textures.minecraft.net/texture/50c410045cd3749c3a8ed856df411f6c33e9a8a6f9e57e521608a8ad8ed6eb37", (modelLoader) -> new SpiderHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SPIDER_HEAD), 1.0f), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/spider/spider.png")), "Spider", SoundEvents.ENTITY_SPIDER_AMBIENT.getId().toString(), (modelLoader) -> new SpiderEyesHeadFeatureRenderer(HeadedEntityModelLayers.SPIDER_EYES, 1.0f)); // just in case + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SQUID(), (modelLoader) -> new SquidHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.SQUID_HEAD), false), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/squid/squid.png")), "Squid", SoundEvents.ENTITY_SQUID_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.STRAY(), (modelLoader) -> new StraySkullEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.STRAY_SKULL)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/skeleton/stray.png")), "Stray", SoundEvents.ENTITY_STRAY_AMBIENT.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new StraySkullEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.STRAY_SKULL_OUTER_LAYER)), RenderLayer.getEntityCutoutNoCullZOffset(new Identifier("textures/entity/skeleton/stray_overlay.png")))); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.STRIDER(), (modelLoader) -> new StriderHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.STRIDER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/strider/strider.png")), "Strider", SoundEvents.ENTITY_STRIDER_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.TADPOLE(), (modelLoader) -> new TadpoleHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.TADPOLE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/tadpole/tadpole.png")), "Tadpole", SoundEvents.ENTITY_TADPOLE_FLOP.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CREAMY_TRADER_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/creamy.png")), "Creamy Trader Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD_DECOR)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/decor/trader_llama.png")))); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WHITE_TRADER_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/white.png")), "White Trader Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD_DECOR)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/decor/trader_llama.png")))); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BROWN_TRADER_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/brown.png")), "Brown Trader Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD_DECOR)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/decor/trader_llama.png")))); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.GRAY_TRADER_LLAMA(), (modelLoader) -> new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/gray.png")), "Gray Trader Llama", SoundEvents.ENTITY_LLAMA_AMBIENT.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new LlamaHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.LLAMA_HEAD_DECOR)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/llama/decor/trader_llama.png")))); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.TROPICAL_FISH(), (modelLoader) -> new EntityCopyHeadEntityModel(modelLoader.getModelPart(EntityModelLayers.TROPICAL_FISH_SMALL), new Vector3f(6.0f, 3.0f, 2.0f), 0.0f, 1.469375f, 0.0f, 90.0f, 0.0f), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/fish/tropical_a.png")), "Tropical Fish", SoundEvents.ENTITY_TROPICAL_FISH_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.TURTLE(), (modelLoader) -> new TurtleHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.TURTLE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/turtle/big_sea_turtle.png")), "Turtle", SoundEvents.ENTITY_TURTLE_AMBIENT_LAND.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.VEX(), (modelLoader) -> new AllayHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VEX_HEAD), false), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/illager/vex.png")), "Vex", SoundEvents.ENTITY_VEX_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CHARGING_VEX(), (modelLoader) -> new AllayHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VEX_HEAD), false), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/illager/vex_charging.png")), "Charging Vex", SoundEvents.ENTITY_VEX_CHARGE.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Villager", SoundEvents.ENTITY_VILLAGER_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ARMORER_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Armorer Villager", SoundEvents.ENTITY_VILLAGER_WORK_ARMORER.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.ARMORER)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BUTCHER_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Butcher Villager", SoundEvents.ENTITY_VILLAGER_WORK_BUTCHER.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.BUTCHER)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CARTOGRAPHER_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Cartographer Villager", SoundEvents.ENTITY_VILLAGER_WORK_CARTOGRAPHER.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.CARTOGRAPHER)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CLERIC_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Cleric Villager", SoundEvents.ENTITY_VILLAGER_WORK_CLERIC.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.CLERIC)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.FARMER_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Farmer Villager", SoundEvents.ENTITY_VILLAGER_WORK_FARMER.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.FARMER)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.FISHERMAN_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Fisherman Villager", SoundEvents.ENTITY_VILLAGER_WORK_FISHERMAN.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.FISHERMAN)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.FLETCHER_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Fletcher Villager", SoundEvents.ENTITY_VILLAGER_WORK_FLETCHER.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.FLETCHER)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.LIBRARIAN_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Librarian Villager", SoundEvents.ENTITY_VILLAGER_WORK_LIBRARIAN.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.LIBRARIAN)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SHEPHERD_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Shepherd Villager", SoundEvents.ENTITY_VILLAGER_WORK_SHEPHERD.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.SHEPHERD)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WEAPONSMITH_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/villager/villager.png")), "Weaponsmith Villager", SoundEvents.ENTITY_VILLAGER_WORK_SHEPHERD.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.WEAPONSMITH)); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.VINDICATOR(), (modelLoader) -> new VillagerLikeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VINDICATOR_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/illager/vindicator.png")), "Vindicator", SoundEvents.ENTITY_VINDICATOR_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WANDERING_TRADER(), (modelLoader) -> new VillagerLikeHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WANDERING_TRADER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/wandering_trader.png")), "Wandering Trader", SoundEvents.ENTITY_WANDERING_TRADER_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WARDEN(), (modelLoader) -> new WardenHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WARDEN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/warden/warden.png")), "Warden", SoundEvents.ENTITY_WARDEN_AMBIENT.getId().toString(), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new WardenHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WARDEN_HEAD)), RenderLayer.getEntityTranslucentEmissive(new Identifier("textures/entity/warden/warden_bioluminescent_layer.png"))), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new WardenHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WARDEN_HEAD)), RenderLayer.getEntityTranslucentEmissive(new Identifier("textures/entity/warden/warden_pulsating_spots_1.png")), Math.max(0.0F, MathHelper.cos((MinecraftClient.getInstance().world == null ? 0 : MinecraftClient.getInstance().world.getTime()) * 0.045F) * 0.25F)), (modelLoader) -> new SimpleModelHeadFeatureRenderer(new WardenHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WARDEN_HEAD)), RenderLayer.getEntityTranslucentEmissive(new Identifier("textures/entity/warden/warden_pulsating_spots_2.png")), Math.max(0.0F, MathHelper.cos((MinecraftClient.getInstance().world == null ? 0 : MinecraftClient.getInstance().world.getTime()) * 0.045F + 3.1415927F) * 0.25F))); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WITCH(), (modelLoader) -> new WitchHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WITCH_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/witch.png")), "Witch", SoundEvents.ENTITY_WITCH_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WITHER(), (modelLoader) -> new WitherSkullEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WITHER_SKULL)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/wither/wither.png")), "Wither", SoundEvents.ENTITY_WITHER_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WITHER_PROJECTILE(), (modelLoader) -> new WitherSkullEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WITHER_PROJECTILE)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/wither/wither.png")), "Wither Projectile", SoundEvents.ENTITY_WITHER_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BLUE_WITHER_PROJECTILE(), (modelLoader) -> new WitherSkullEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.BLUE_WITHER_PROJECTILE)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/wither/wither_invulnerable.png")), "Blue Wither Projectile", SoundEvents.ENTITY_WITHER_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WOLF(), (modelLoader) -> new WolfHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WOLF_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/wolf/wolf.png")), "Wolf", SoundEvents.ENTITY_WOLF_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ANGRY_WOLF(), (modelLoader) -> new WolfHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.WOLF_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/wolf/wolf_angry.png")), "Angry Wolf", SoundEvents.ENTITY_WOLF_GROWL.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ZOGLIN(), (modelLoader) -> new HoglinHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HOGLIN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/hoglin/zoglin.png")), "Zoglin", SoundEvents.ENTITY_ZOGLIN_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ZOMBIE_HORSE(), (modelLoader) -> new HorseHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.HORSE_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/horse/horse_zombie.png")), "Zombie Horse", SoundEvents.ENTITY_ZOMBIE_HORSE_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString()); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ARMORER_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Armorer Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.ARMORER, "zombie_villager")); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.BUTCHER_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Butcher Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.BUTCHER, "zombie_villager")); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CARTOGRAPHER_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Cartographer Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.CARTOGRAPHER, "zombie_villager")); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.CLERIC_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Cleric Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.CLERIC, "zombie_villager")); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.FARMER_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Farmer Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.FARMER, "zombie_villager")); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.FISHERMAN_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Fisherman Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.FISHERMAN, "zombie_villager")); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.FLETCHER_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Fletcher Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.FLETCHER, "zombie_villager")); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.LIBRARIAN_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Librarian Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.LIBRARIAN, "zombie_villager")); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.SHEPHERD_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Shepherd Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.SHEPHERD, "zombie_villager")); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.WEAPONSMITH_ZOMBIE_VILLAGER(), (modelLoader) -> new VillagerHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.VILLAGER_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/zombie_villager/zombie_villager.png")), "Weaponsmith Zombie Villager", SoundEvents.ENTITY_ZOMBIE_VILLAGER_AMBIENT.getId().toString(), (modelLoader) -> new VillagerProfessionHeadFeatureRenderer(VillagerProfession.WEAPONSMITH, "zombie_villager")); + TextureToHeadMap.addHead(() -> "http://textures.minecraft.net/texture/" + HeadedRewritten.CONFIG.headURLs.ZOMBIFIED_PIGLIN(), (modelLoader) -> new PiglinHeadEntityModel(modelLoader.getModelPart(HeadedEntityModelLayers.ZOMBIFIED_PIGLIN_HEAD)), RenderLayer.getEntityCutoutNoCull(new Identifier("textures/entity/piglin/zombified_piglin.png")), "Zombified Piglin", SoundEvents.ENTITY_ZOMBIFIED_PIGLIN_AMBIENT.getId().toString()); HeadedCreativeTab.init(); ClientPlayConnectionEvents.DISCONNECT.register((handler, client) -> HeadedContext.isInHeadedServer = false); diff --git a/src/client/java/net/pedroricardo/content/HeadOptionArgumentType.java b/src/client/java/net/pedroricardo/content/HeadOptionArgumentType.java new file mode 100644 index 0000000..b62ae0c --- /dev/null +++ b/src/client/java/net/pedroricardo/content/HeadOptionArgumentType.java @@ -0,0 +1,48 @@ +package net.pedroricardo.content; + +import com.mojang.brigadier.StringReader; +import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; +import com.mojang.brigadier.suggestion.Suggestions; +import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import io.wispforest.owo.config.Option; +import net.minecraft.command.CommandSource; +import net.minecraft.text.Text; +import net.pedroricardo.HeadedRewritten; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.concurrent.CompletableFuture; + +public class HeadOptionArgumentType implements ArgumentType> { + public static final DynamicCommandExceptionType INVALID_HEAD_OPTION_EXCEPTION = new DynamicCommandExceptionType((head) -> Text.stringifiedTranslatable("argument." + HeadedRewritten.MOD_ID + ".head_option.invalid", head)); + + public static HeadOptionArgumentType head() { + return new HeadOptionArgumentType(); + } + + public static Option getHeadOption(CommandContext context, String name) { + return (Option) context.getArgument(name, Option.class); + } + + @Override + public Option parse(StringReader reader) throws CommandSyntaxException { + String string = reader.readUnquotedString(); + Option option = HeadedRewritten.CONFIG.optionForKey(new Option.Key(string)); + if (option == null) { + throw INVALID_HEAD_OPTION_EXCEPTION.create(string); + } + return option; + } + + @Override + public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) { + Collection collection = new ArrayList<>(); + HeadedRewritten.CONFIG.allOptions().forEach((key, value) -> { + if (key.asString().startsWith("headURLs.")) collection.add(key.asString()); + }); + return CommandSource.suggestMatching(collection, builder); + } +} diff --git a/src/client/java/net/pedroricardo/content/HeadedCreativeTab.java b/src/client/java/net/pedroricardo/content/HeadedCreativeTab.java index 8e20f9a..aa204c1 100644 --- a/src/client/java/net/pedroricardo/content/HeadedCreativeTab.java +++ b/src/client/java/net/pedroricardo/content/HeadedCreativeTab.java @@ -14,13 +14,14 @@ import net.pedroricardo.HeadedRewrittenClient; import java.util.Map; +import java.util.function.Supplier; public class HeadedCreativeTab { private static final RegistryKey ITEM_GROUP_REGISTRY_KEY = RegistryKey.of(RegistryKeys.ITEM_GROUP, new Identifier(HeadedRewritten.MOD_ID, "headed_rewritten")); public static final ItemGroup ITEM_GROUP = Registry.register(Registries.ITEM_GROUP, ITEM_GROUP_REGISTRY_KEY, FabricItemGroup.builder().icon(() -> new ItemStack(Items.PLAYER_HEAD)) .displayName(Text.translatable("itemGroup.headed-rewritten")) .entries((ctx, entries) -> { - for (Map.Entry entry : TextureToHeadMap.MAP.entrySet()) { + for (Map.Entry, HeadedHead> entry : TextureToHeadMap.MAP.entrySet()) { if (entry.getValue().addToItemGroup()) entries.add(entry.getValue().toStack()); } }) diff --git a/src/client/java/net/pedroricardo/content/HeadedHead.java b/src/client/java/net/pedroricardo/content/HeadedHead.java index 436acbb..21b0b7c 100644 --- a/src/client/java/net/pedroricardo/content/HeadedHead.java +++ b/src/client/java/net/pedroricardo/content/HeadedHead.java @@ -17,9 +17,10 @@ import java.util.Collections; import java.util.Random; import java.util.function.Function; +import java.util.function.Supplier; public class HeadedHead { - private final String originalTexture; + private final Supplier originalTexture; private final Function modelFunction; private final RenderLayer renderLayer; private final Collection> featureRenderers; @@ -30,7 +31,7 @@ public class HeadedHead { private final boolean addToItemGroup; - public HeadedHead(String originalTexture, Function modelFunction, RenderLayer renderLayer, @Nullable String name, @Nullable String noteBlockSound, Collection> featureRenderers, boolean addToItemGroup) { + public HeadedHead(Supplier originalTexture, Function modelFunction, RenderLayer renderLayer, @Nullable String name, @Nullable String noteBlockSound, Collection> featureRenderers, boolean addToItemGroup) { this.originalTexture = originalTexture; this.modelFunction = modelFunction; this.renderLayer = renderLayer; @@ -40,19 +41,19 @@ public HeadedHead(String originalTexture, Function modelFunction, RenderLayer renderLayer, @Nullable String name, @Nullable String noteBlockSound, Collection> featureRenderers) { + public HeadedHead(Supplier originalTexture, Function modelFunction, RenderLayer renderLayer, @Nullable String name, @Nullable String noteBlockSound, Collection> featureRenderers) { this(originalTexture, modelFunction, renderLayer, name, noteBlockSound, featureRenderers, true); } - public HeadedHead(String originalTexture, Function modelFunction, RenderLayer renderLayer, @Nullable String name, @Nullable String noteBlockSound) { + public HeadedHead(Supplier originalTexture, Function modelFunction, RenderLayer renderLayer, @Nullable String name, @Nullable String noteBlockSound) { this(originalTexture, modelFunction, renderLayer, name, noteBlockSound, Collections.emptyList()); } - public HeadedHead(String originalTexture, Function modelFunction, RenderLayer texture, @Nullable String name, @Nullable String noteBlockSound, boolean addToItemGroup) { + public HeadedHead(Supplier originalTexture, Function modelFunction, RenderLayer texture, @Nullable String name, @Nullable String noteBlockSound, boolean addToItemGroup) { this(originalTexture, modelFunction, texture, name, noteBlockSound, Collections.emptyList(), addToItemGroup); } - public String getOriginalTexture() { + public Supplier getOriginalTexture() { return this.originalTexture; } @@ -85,7 +86,7 @@ public ItemStack toStack() { NbtCompound propertyTextures = new NbtCompound(); NbtList list = new NbtList(); NbtCompound textureValueCompound = new NbtCompound(); - textureValueCompound.putString("Value", Base64.encodeBase64String(("{\"textures\":{\"SKIN\":{\"url\":\"" + this.getOriginalTexture() + "\"}}}").getBytes(StandardCharsets.UTF_8))); + textureValueCompound.putString("Value", Base64.encodeBase64String(("{\"textures\":{\"SKIN\":{\"url\":\"" + this.getOriginalTexture().get() + "\"}}}").getBytes(StandardCharsets.UTF_8))); list.add(textureValueCompound); propertyTextures.put("textures", list); skullOwner.put("Properties", propertyTextures); diff --git a/src/client/java/net/pedroricardo/content/TextureToHeadMap.java b/src/client/java/net/pedroricardo/content/TextureToHeadMap.java index 2e527be..0aa6f7d 100644 --- a/src/client/java/net/pedroricardo/content/TextureToHeadMap.java +++ b/src/client/java/net/pedroricardo/content/TextureToHeadMap.java @@ -4,28 +4,45 @@ import net.minecraft.client.render.block.entity.SkullBlockEntityModel; import net.minecraft.client.render.entity.model.EntityModelLoader; import net.pedroricardo.content.features.HeadedFeatureRenderer; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.function.Function; +import java.util.function.Supplier; public class TextureToHeadMap { - public static final LinkedHashMap MAP = new LinkedHashMap<>(); + public static final LinkedHashMap, HeadedHead> MAP = new LinkedHashMap<>(); - public static HeadedHead addHead(String originalTexture, Function modelFunction, RenderLayer renderLayer, String name, String noteBlockSound) { + public static HeadedHead addHead(Supplier originalTexture, Function modelFunction, RenderLayer renderLayer, String name, String noteBlockSound) { return MAP.put(originalTexture, new HeadedHead(originalTexture, modelFunction, renderLayer, name, noteBlockSound)); } @SafeVarargs - public static HeadedHead addHead(String originalTexture, Function modelFunction, RenderLayer renderLayer, String name, String noteBlockSound, Function... featureRenderers) { + public static HeadedHead addHead(Supplier originalTexture, Function modelFunction, RenderLayer renderLayer, String name, String noteBlockSound, Function... featureRenderers) { return MAP.put(originalTexture, new HeadedHead(originalTexture, modelFunction, renderLayer, name, noteBlockSound, Arrays.asList(featureRenderers))); } - public static HeadedHead addHeadNotInGroup(String originalTexture, Function modelFunction, RenderLayer renderLayer, String name, String noteBlockSound) { + public static HeadedHead addHeadNotInGroup(Supplier originalTexture, Function modelFunction, RenderLayer renderLayer, String name, String noteBlockSound) { return MAP.put(originalTexture, new HeadedHead(originalTexture, modelFunction, renderLayer, name, noteBlockSound, false)); } @SafeVarargs - public static HeadedHead addHeadNotInGroup(String originalTexture, Function modelFunction, RenderLayer renderLayer, String name, String noteBlockSound, Function... featureRenderers) { + public static HeadedHead addHeadNotInGroup(Supplier originalTexture, Function modelFunction, RenderLayer renderLayer, String name, String noteBlockSound, Function... featureRenderers) { return MAP.put(originalTexture, new HeadedHead(originalTexture, modelFunction, renderLayer, name, noteBlockSound, Arrays.asList(featureRenderers), false)); } + + public static boolean contains(String texture) { + for (Supplier supplier : MAP.keySet()) { + if (supplier.get().equals(texture)) return true; + } + return false; + } + + @Nullable + public static HeadedHead get(String texture) { + for (Map.Entry, HeadedHead> entry : MAP.entrySet()) { + if (entry.getKey().get().equals(texture)) return entry.getValue(); + } + return null; + } } \ No newline at end of file diff --git a/src/client/java/net/pedroricardo/mixin/client/HeadCollisionMixin.java b/src/client/java/net/pedroricardo/mixin/client/HeadCollisionMixin.java index 71ae5c3..64e7a2b 100644 --- a/src/client/java/net/pedroricardo/mixin/client/HeadCollisionMixin.java +++ b/src/client/java/net/pedroricardo/mixin/client/HeadCollisionMixin.java @@ -28,8 +28,8 @@ public class HeadCollisionMixin { @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) private void headedrewritten$getAccurateOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { - if (HeadedRewritten.CONFIG.changeHeadCollisions() && world.getBlockEntity(pos) instanceof SkullBlockEntity blockEntity && blockEntity.getOwner() != null && blockEntity.getOwner().getProperties().containsKey("textures") && TextureToHeadMap.MAP.containsKey(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(blockEntity.getOwner()).textureUrl())) { - SkullBlockEntityModel model = TextureToHeadMap.MAP.get(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(blockEntity.getOwner()).textureUrl()).getModel(MinecraftClient.getInstance().getEntityModelLoader()); + if (HeadedRewritten.CONFIG.changeHeadCollisions() && world.getBlockEntity(pos) instanceof SkullBlockEntity blockEntity && blockEntity.getOwner() != null && blockEntity.getOwner().getProperties().containsKey("textures") && TextureToHeadMap.contains(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(blockEntity.getOwner()).textureUrl())) { + SkullBlockEntityModel model = TextureToHeadMap.get(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(blockEntity.getOwner()).textureUrl()).getModel(MinecraftClient.getInstance().getEntityModelLoader()); Vector3f boxSize; if (model instanceof HeadedRewrittenModel headedRewrittenModel) { boxSize = headedRewrittenModel.getHeadSizeInPixels(); diff --git a/src/client/java/net/pedroricardo/mixin/client/RenderHeadedHeadItemMixin.java b/src/client/java/net/pedroricardo/mixin/client/RenderHeadedHeadItemMixin.java index a4463c2..2286c9b 100644 --- a/src/client/java/net/pedroricardo/mixin/client/RenderHeadedHeadItemMixin.java +++ b/src/client/java/net/pedroricardo/mixin/client/RenderHeadedHeadItemMixin.java @@ -17,9 +17,9 @@ public class RenderHeadedHeadItemMixin { @ModifyArg(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/block/entity/SkullBlockEntityRenderer;renderSkull(Lnet/minecraft/util/math/Direction;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/block/entity/SkullBlockEntityModel;Lnet/minecraft/client/render/RenderLayer;)V"), index = 6) private SkullBlockEntityModel headedrewritten$replaceItemModel(SkullBlockEntityModel model, @Local(ordinal = 0) AbstractSkullBlock block, @Local(ordinal = 0) GameProfile gameProfile) { - if (block.getSkullType() == SkullBlock.Type.PLAYER && gameProfile != null && gameProfile.getProperties().containsKey("textures") && TextureToHeadMap.MAP.containsKey(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(gameProfile).textureUrl())) { + if (block.getSkullType() == SkullBlock.Type.PLAYER && gameProfile != null && gameProfile.getProperties().containsKey("textures") && TextureToHeadMap.contains(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(gameProfile).textureUrl())) { HeadedContext.currentProfile = gameProfile; - return TextureToHeadMap.MAP.get(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(gameProfile).textureUrl()).getModel(MinecraftClient.getInstance().getEntityModelLoader()); + return TextureToHeadMap.get(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(gameProfile).textureUrl()).getModel(MinecraftClient.getInstance().getEntityModelLoader()); } return model; } diff --git a/src/client/java/net/pedroricardo/mixin/client/RenderHeadedHeadMixin.java b/src/client/java/net/pedroricardo/mixin/client/RenderHeadedHeadMixin.java index c4a4d94..336185e 100644 --- a/src/client/java/net/pedroricardo/mixin/client/RenderHeadedHeadMixin.java +++ b/src/client/java/net/pedroricardo/mixin/client/RenderHeadedHeadMixin.java @@ -31,16 +31,16 @@ public class RenderHeadedHeadMixin { @ModifyArg(method = "render(Lnet/minecraft/block/entity/SkullBlockEntity;FLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;II)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/block/entity/SkullBlockEntityRenderer;renderSkull(Lnet/minecraft/util/math/Direction;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/block/entity/SkullBlockEntityModel;Lnet/minecraft/client/render/RenderLayer;)V"), index = 6) private SkullBlockEntityModel headedrewritten$replaceModel(SkullBlockEntityModel model, @Local(ordinal = 0) SkullBlock.SkullType skullType, @Local(ordinal = 0) SkullBlockEntity blockEntity) { HeadedContext.currentProfile = blockEntity.getOwner(); - if (skullType == SkullBlock.Type.PLAYER && blockEntity.getOwner() != null && blockEntity.getOwner().getProperties().containsKey("textures") && TextureToHeadMap.MAP.containsKey(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(blockEntity.getOwner()).textureUrl())) { - return TextureToHeadMap.MAP.get(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(blockEntity.getOwner()).textureUrl()).getModel(MinecraftClient.getInstance().getEntityModelLoader()); + if (skullType == SkullBlock.Type.PLAYER && blockEntity.getOwner() != null && blockEntity.getOwner().getProperties().containsKey("textures") && TextureToHeadMap.contains(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(blockEntity.getOwner()).textureUrl())) { + return TextureToHeadMap.get(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(blockEntity.getOwner()).textureUrl()).getModel(MinecraftClient.getInstance().getEntityModelLoader()); } return model; } @Inject(method = "getRenderLayer", at = @At(value = "HEAD"), cancellable = true) private static void headedrewritten$replaceTexture(SkullBlock.SkullType type, GameProfile profile, CallbackInfoReturnable cir) { - if (type == SkullBlock.Type.PLAYER && profile != null && profile.getProperties().containsKey("textures") && TextureToHeadMap.MAP.containsKey(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(profile).textureUrl())) { - cir.setReturnValue(TextureToHeadMap.MAP.get(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(profile).textureUrl()).getRenderLayer()); + if (type == SkullBlock.Type.PLAYER && profile != null && profile.getProperties().containsKey("textures") && TextureToHeadMap.contains(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(profile).textureUrl())) { + cir.setReturnValue(TextureToHeadMap.get(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(profile).textureUrl()).getRenderLayer()); } } @@ -61,8 +61,8 @@ public class RenderHeadedHeadMixin { @Inject(method = "renderSkull", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/MatrixStack;pop()V", shift = At.Shift.AFTER)) private static void headedrewritten$renderFeatures(Direction direction, float yaw, float animationProgress, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, SkullBlockEntityModel model, RenderLayer renderLayer, CallbackInfo ci) { - if (HeadedContext.currentProfile != null && HeadedContext.currentProfile.getProperties().containsKey("textures") && TextureToHeadMap.MAP.containsKey(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(HeadedContext.currentProfile).textureUrl())) { - HeadedHead head = TextureToHeadMap.MAP.get(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(HeadedContext.currentProfile).textureUrl()); + if (HeadedContext.currentProfile != null && HeadedContext.currentProfile.getProperties().containsKey("textures") && TextureToHeadMap.contains(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(HeadedContext.currentProfile).textureUrl())) { + HeadedHead head = TextureToHeadMap.get(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(HeadedContext.currentProfile).textureUrl()); HeadedContext.currentProfile = null; for (Function featureRenderer : head.getFeatureRenderers()) { featureRenderer.apply(MinecraftClient.getInstance().getEntityModelLoader()).render(direction, yaw, animationProgress, matrices, vertexConsumers, light); diff --git a/src/client/java/net/pedroricardo/mixin/client/RenderHeadedHeadOnHeadMixin.java b/src/client/java/net/pedroricardo/mixin/client/RenderHeadedHeadOnHeadMixin.java index d081570..57db982 100644 --- a/src/client/java/net/pedroricardo/mixin/client/RenderHeadedHeadOnHeadMixin.java +++ b/src/client/java/net/pedroricardo/mixin/client/RenderHeadedHeadOnHeadMixin.java @@ -16,9 +16,9 @@ public class RenderHeadedHeadOnHeadMixin { @ModifyArg(method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/entity/LivingEntity;FFFFFF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/block/entity/SkullBlockEntityRenderer;renderSkull(Lnet/minecraft/util/math/Direction;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/block/entity/SkullBlockEntityModel;Lnet/minecraft/client/render/RenderLayer;)V"), index = 6) private SkullBlockEntityModel headedrewritten$replaceItemModel(SkullBlockEntityModel model, @Local(ordinal = 0) GameProfile gameProfile, @Local(ordinal = 0) SkullBlock.SkullType skullType) { - if (skullType == SkullBlock.Type.PLAYER && gameProfile != null && gameProfile.getProperties().containsKey("textures") && TextureToHeadMap.MAP.containsKey(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(gameProfile).textureUrl())) { + if (skullType == SkullBlock.Type.PLAYER && gameProfile != null && gameProfile.getProperties().containsKey("textures") && TextureToHeadMap.contains(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(gameProfile).textureUrl())) { HeadedContext.currentProfile = gameProfile; - return TextureToHeadMap.MAP.get(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(gameProfile).textureUrl()).getModel(MinecraftClient.getInstance().getEntityModelLoader()); + return TextureToHeadMap.get(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(gameProfile).textureUrl()).getModel(MinecraftClient.getInstance().getEntityModelLoader()); } return model; } diff --git a/src/client/java/net/pedroricardo/mixin/client/WallHeadCollisionMixin.java b/src/client/java/net/pedroricardo/mixin/client/WallHeadCollisionMixin.java index 378c4e9..2064c57 100644 --- a/src/client/java/net/pedroricardo/mixin/client/WallHeadCollisionMixin.java +++ b/src/client/java/net/pedroricardo/mixin/client/WallHeadCollisionMixin.java @@ -31,8 +31,8 @@ public class WallHeadCollisionMixin { @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) private void headedrewritten$getAccurateWallOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { - if (HeadedRewritten.CONFIG.changeHeadCollisions() && world.getBlockEntity(pos) instanceof SkullBlockEntity blockEntity && blockEntity.getOwner() != null && blockEntity.getOwner().getProperties().containsKey("textures") && TextureToHeadMap.MAP.containsKey(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(blockEntity.getOwner()).textureUrl())) { - SkullBlockEntityModel model = TextureToHeadMap.MAP.get(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(blockEntity.getOwner()).textureUrl()).getModel(MinecraftClient.getInstance().getEntityModelLoader()); + if (HeadedRewritten.CONFIG.changeHeadCollisions() && world.getBlockEntity(pos) instanceof SkullBlockEntity blockEntity && blockEntity.getOwner() != null && blockEntity.getOwner().getProperties().containsKey("textures") && TextureToHeadMap.contains(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(blockEntity.getOwner()).textureUrl())) { + SkullBlockEntityModel model = TextureToHeadMap.get(MinecraftClient.getInstance().getSkinProvider().getSkinTextures(blockEntity.getOwner()).textureUrl()).getModel(MinecraftClient.getInstance().getEntityModelLoader()); Vector3f boxSize; if (model instanceof HeadedRewrittenModel headedRewrittenModel) { boxSize = headedRewrittenModel.getHeadSizeInPixels(); diff --git a/src/main/resources/assets/headed-rewritten/lang/en_us.json b/src/main/resources/assets/headed-rewritten/lang/en_us.json index d671656..3dac600 100644 --- a/src/main/resources/assets/headed-rewritten/lang/en_us.json +++ b/src/main/resources/assets/headed-rewritten/lang/en_us.json @@ -3,5 +3,10 @@ "text.config.headed-rewritten.option.chargedCreeperDrops": "Charged Creeper Drops", "text.config.headed-rewritten.option.changeHeadCollisions": "Change Head Collisions", "text.config.headed-rewritten.category.headURLs": "Head IDs", - "text.config.headed-rewritten.title": "Headed Rewritten" + "text.config.headed-rewritten.title": "Headed Rewritten", + "commands.headed-rewritten.headed-rewritten.set.no_player": "Player is null", + "commands.headed-rewritten.headed-rewritten.set.item_is_not_a_head": "Item in player's hand is not a head", + "commands.headed-rewritten.headed-rewritten.set.invalid_nbt": "Invalid NBT", + "commands.headed-rewritten.headed-rewritten.set.success": "Set value of option %s to %s", + "argument.headed-rewritten.head_option.invalid": "Invalid head option %s" } \ No newline at end of file