From f096a93b86c26d740eccecc42a5e09eb33698806 Mon Sep 17 00:00:00 2001 From: lordlogo2002 Date: Fri, 19 Dec 2025 17:49:13 +0100 Subject: [PATCH] milkl --- .../java/net/Chipperfluff/chipi/ChipiMod.java | 8 +- .../chipi/client/entity/MepRenderer.java | 2 +- .../chipi/entity/{custom => }/MepEntity.java | 73 ++++++++++++++++-- .../chipi/entity/ModEntities.java | 2 +- .../Chipperfluff/chipi/item/MepMilkItem.java | 30 +++++++ .../chipi/item/ModItemGroups.java | 5 +- .../net/Chipperfluff/chipi/item/ModItems.java | 22 ++++-- .../chipi/item/tool/ChipperToolMaterial.java | 2 +- .../Chipperfluff/chipi/sound/ModSounds.java | 23 ++++++ .../chipi/util/TickScheduler.java | 52 +++++++++++++ .../resources/assets/chipi/lang/en_us.json | 9 ++- .../assets/chipi/models/item/mep_milk.json | 6 ++ src/main/resources/assets/chipi/sounds.json | 7 ++ .../assets/chipi/sounds/mep_milk.ogg | Bin 0 -> 8761 bytes .../assets/chipi/sounds/mep_milk.wav | Bin 0 -> 39596 bytes .../chipi/textures/item/chipper_axe.png | Bin 279 -> 278 bytes .../chipi/textures/item/chipper_hoe.png | Bin 161 -> 262 bytes .../chipi/textures/item/chipper_pickaxe.png | Bin 181 -> 313 bytes .../chipi/textures/item/chipper_shovel.png | Bin 168 -> 267 bytes .../chipi/textures/item/chipper_sword.png | Bin 194 -> 326 bytes .../assets/chipi/textures/item/mep_milk.png | Bin 0 -> 336 bytes tools/recolor/color_maps/chipper_orange.py | 44 +++++++---- 22 files changed, 253 insertions(+), 32 deletions(-) rename src/main/java/net/Chipperfluff/chipi/entity/{custom => }/MepEntity.java (65%) create mode 100644 src/main/java/net/Chipperfluff/chipi/item/MepMilkItem.java create mode 100644 src/main/java/net/Chipperfluff/chipi/sound/ModSounds.java create mode 100644 src/main/java/net/Chipperfluff/chipi/util/TickScheduler.java create mode 100644 src/main/resources/assets/chipi/models/item/mep_milk.json create mode 100644 src/main/resources/assets/chipi/sounds.json create mode 100644 src/main/resources/assets/chipi/sounds/mep_milk.ogg create mode 100644 src/main/resources/assets/chipi/sounds/mep_milk.wav create mode 100644 src/main/resources/assets/chipi/textures/item/mep_milk.png diff --git a/src/main/java/net/Chipperfluff/chipi/ChipiMod.java b/src/main/java/net/Chipperfluff/chipi/ChipiMod.java index c26b89a..af6d378 100644 --- a/src/main/java/net/Chipperfluff/chipi/ChipiMod.java +++ b/src/main/java/net/Chipperfluff/chipi/ChipiMod.java @@ -8,13 +8,14 @@ import net.Chipperfluff.chipi.effect.ChipiHungerHandler; import net.Chipperfluff.chipi.effect.ModEffects; import net.Chipperfluff.chipi.entity.ModEntities; import net.Chipperfluff.chipi.entity.SpawnLogic; -import net.Chipperfluff.chipi.entity.custom.MepEntity; +import net.Chipperfluff.chipi.entity.MepEntity; import net.Chipperfluff.chipi.item.ModItemGroups; import net.Chipperfluff.chipi.item.ModItems; import net.Chipperfluff.chipi.server.ChipiServerEvents; - +import net.Chipperfluff.chipi.sound.ModSounds; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; +import net.Chipperfluff.chipi.util.TickScheduler; public class ChipiMod implements ModInitializer { @@ -33,6 +34,9 @@ public class ChipiMod implements ModInitializer { ChipiHungerHandler.register(); SpawnLogic.register(); + ModSounds.register(); + + TickScheduler.init(); CommandHandler.register(); FabricDefaultAttributeRegistry.register(ModEntities.MEP, MepEntity.createMepAttributes()); diff --git a/src/main/java/net/Chipperfluff/chipi/client/entity/MepRenderer.java b/src/main/java/net/Chipperfluff/chipi/client/entity/MepRenderer.java index 989a15b..842ab5b 100644 --- a/src/main/java/net/Chipperfluff/chipi/client/entity/MepRenderer.java +++ b/src/main/java/net/Chipperfluff/chipi/client/entity/MepRenderer.java @@ -1,7 +1,7 @@ package net.Chipperfluff.chipi.client.entity; import net.Chipperfluff.chipi.ChipiMod; -import net.Chipperfluff.chipi.entity.custom.MepEntity; +import net.Chipperfluff.chipi.entity.MepEntity; import net.minecraft.client.render.entity.BipedEntityRenderer; import net.minecraft.client.render.entity.EntityRendererFactory; import net.minecraft.client.render.entity.model.BipedEntityModel; diff --git a/src/main/java/net/Chipperfluff/chipi/entity/custom/MepEntity.java b/src/main/java/net/Chipperfluff/chipi/entity/MepEntity.java similarity index 65% rename from src/main/java/net/Chipperfluff/chipi/entity/custom/MepEntity.java rename to src/main/java/net/Chipperfluff/chipi/entity/MepEntity.java index 07846d1..ea4ac78 100644 --- a/src/main/java/net/Chipperfluff/chipi/entity/custom/MepEntity.java +++ b/src/main/java/net/Chipperfluff/chipi/entity/MepEntity.java @@ -1,4 +1,4 @@ -package net.Chipperfluff.chipi.entity.custom; +package net.Chipperfluff.chipi.entity; import net.minecraft.block.BlockState; import net.minecraft.block.SlabBlock; @@ -16,10 +16,19 @@ import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.mob.PathAwareEntity; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.sound.SoundCategory; import net.minecraft.state.property.Properties; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.Chipperfluff.chipi.item.ModItems; +import net.Chipperfluff.chipi.sound.ModSounds; +import net.Chipperfluff.chipi.util.TickScheduler; + public class MepEntity extends PathAwareEntity { private static final int FORGET_TARGET_AFTER_TICKS = 100; @@ -31,6 +40,8 @@ public class MepEntity extends PathAwareEntity { super(entityType, world); } + // === AI === + @Override protected void initGoals() { this.goalSelector.add(1, new SwimGoal(this)); @@ -58,6 +69,8 @@ public class MepEntity extends PathAwareEntity { .add(EntityAttributes.GENERIC_FOLLOW_RANGE, 32.0); } + // === Combat memory === + @Override public boolean damage(DamageSource source, float amount) { if (source.getAttacker() instanceof PlayerEntity) { @@ -74,12 +87,11 @@ public class MepEntity extends PathAwareEntity { LivingEntity target = this.getTarget(); if (!(target instanceof PlayerEntity player)) { - ticksSinceLastSeen = 0; angryAtPlayer = false; + ticksSinceLastSeen = 0; return; } - // Protected players instantly cancel targeting if (isPlayerProtected(player)) { clearTarget(); return; @@ -91,8 +103,6 @@ public class MepEntity extends PathAwareEntity { this.getNavigation().startMovingTo(player, 1.2D); } else { ticksSinceLastSeen++; - - // Keep chasing for a while even without LOS if (ticksSinceLastSeen <= FORGET_TARGET_AFTER_TICKS) { this.getNavigation().startMovingTo(player, 1.2D); } else { @@ -131,4 +141,57 @@ public class MepEntity extends PathAwareEntity { public boolean canImmediatelyDespawn(double distanceSquared) { return false; } + + // === MILKING (FEVER DREAM EDITION) === + + @Override + public ActionResult interactMob(PlayerEntity player, Hand hand) { + ItemStack stack = player.getStackInHand(hand); + + if (stack.isOf(Items.BUCKET) && !this.isBaby()) { + if (!player.getWorld().isClient) { + + stack.decrement(1); + player.giveItemStack(new ItemStack(ModItems.MEP_MILK)); + + // ---- base sound ---- + float basePitch = 0.3f + this.random.nextFloat() * 1.9f; + float baseVolume = 0.9f + this.random.nextFloat() * 0.6f; + + this.getWorld().playSound( + null, + this.getBlockPos(), + ModSounds.MEP_MILK, + SoundCategory.NEUTRAL, + baseVolume, + basePitch + ); + + // ---- single delayed echo (10% chance) ---- + if (this.random.nextFloat() < 0.10f) { + + int delay = 10 + this.random.nextInt(21); // 10–30 ticks + + float echoPitch = basePitch * 0.5f; + float echoVolume = baseVolume * 0.5f; + + TickScheduler.schedule(delay, () -> { + if (!this.isAlive()) return; + + this.getWorld().playSound( + null, + this.getBlockPos(), + ModSounds.MEP_MILK, + SoundCategory.NEUTRAL, + echoVolume, + echoPitch + ); + }); + } + } + return ActionResult.SUCCESS; + } + + return super.interactMob(player, hand); + } } diff --git a/src/main/java/net/Chipperfluff/chipi/entity/ModEntities.java b/src/main/java/net/Chipperfluff/chipi/entity/ModEntities.java index 8371741..43c1371 100644 --- a/src/main/java/net/Chipperfluff/chipi/entity/ModEntities.java +++ b/src/main/java/net/Chipperfluff/chipi/entity/ModEntities.java @@ -1,6 +1,6 @@ package net.Chipperfluff.chipi.entity; -import net.Chipperfluff.chipi.entity.custom.MepEntity; +import net.Chipperfluff.chipi.entity.MepEntity; import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder; diff --git a/src/main/java/net/Chipperfluff/chipi/item/MepMilkItem.java b/src/main/java/net/Chipperfluff/chipi/item/MepMilkItem.java new file mode 100644 index 0000000..88598d9 --- /dev/null +++ b/src/main/java/net/Chipperfluff/chipi/item/MepMilkItem.java @@ -0,0 +1,30 @@ +package net.Chipperfluff.chipi.item; + +import net.Chipperfluff.chipi.effect.ModEffects; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.world.World; + +public class MepMilkItem extends Item { + + public MepMilkItem(Settings settings) { + super(settings); + } + + @Override + public ItemStack finishUsing(ItemStack stack, World world, LivingEntity user) { + if (!world.isClient) { + user.addStatusEffect( + new StatusEffectInstance( + ModEffects.CHIPI_BLESSING, + 20 * 20, + 0 + ) + ); + } + return new ItemStack(Items.BUCKET); + } +} diff --git a/src/main/java/net/Chipperfluff/chipi/item/ModItemGroups.java b/src/main/java/net/Chipperfluff/chipi/item/ModItemGroups.java index 6e8fa08..cfd6aff 100644 --- a/src/main/java/net/Chipperfluff/chipi/item/ModItemGroups.java +++ b/src/main/java/net/Chipperfluff/chipi/item/ModItemGroups.java @@ -27,12 +27,15 @@ public class ModItemGroups { entries.add(ModBlocks.CHIPPER_ALLOY_BLOCK); // Items - entries.add(ModItems.NUT); entries.add(ModItems.RAW_CHIPPER_ORE); entries.add(ModItems.CHIPPER_INGOT); entries.add(ModItems.CHIPPER_ALLOY); entries.add(ModItems.MEP_SPAWN_EGG); + // Food + entries.add(ModItems.MEP_MILK); + entries.add(ModItems.NUT); + // Armor entries.add(ModItems.CHIPPER_HELMET); entries.add(ModItems.CHIPPER_CHESTPLATE); diff --git a/src/main/java/net/Chipperfluff/chipi/item/ModItems.java b/src/main/java/net/Chipperfluff/chipi/item/ModItems.java index a701813..66c2f7d 100644 --- a/src/main/java/net/Chipperfluff/chipi/item/ModItems.java +++ b/src/main/java/net/Chipperfluff/chipi/item/ModItems.java @@ -10,6 +10,8 @@ import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.util.Identifier; import net.Chipperfluff.chipi.item.tool.ChipperToolMaterial; +import net.Chipperfluff.chipi.item.MepMilkItem; +import net.minecraft.item.Items; public class ModItems { @@ -55,12 +57,6 @@ public class ModItems { // ===== NORMAL ITEMS ===== - public static final Item NUT = Registry.register( - Registries.ITEM, - new Identifier(ChipiMod.MOD_ID, "nut"), - new Item(new FabricItemSettings().food(ModFoodComponents.NUT)) - ); - public static final Item RAW_CHIPPER_ORE = Registry.register( Registries.ITEM, new Identifier(ChipiMod.MOD_ID, "raw_chipper_ore"), @@ -79,6 +75,20 @@ public class ModItems { new Item(new FabricItemSettings()) ); + // ===== FOOD ITEMS ===== + + public static final Item NUT = Registry.register( + Registries.ITEM, + new Identifier(ChipiMod.MOD_ID, "nut"), + new Item(new FabricItemSettings().food(ModFoodComponents.NUT)) + ); + + public static final Item MEP_MILK = Registry.register( + Registries.ITEM, + new Identifier(ChipiMod.MOD_ID, "mep_milk"), + new MepMilkItem(new Item.Settings().maxCount(1).recipeRemainder(Items.BUCKET)) + ); + // ===== ARMOR ===== public static final Item CHIPPER_HELMET = Registry.register( diff --git a/src/main/java/net/Chipperfluff/chipi/item/tool/ChipperToolMaterial.java b/src/main/java/net/Chipperfluff/chipi/item/tool/ChipperToolMaterial.java index c5728f1..f3b9398 100644 --- a/src/main/java/net/Chipperfluff/chipi/item/tool/ChipperToolMaterial.java +++ b/src/main/java/net/Chipperfluff/chipi/item/tool/ChipperToolMaterial.java @@ -10,7 +10,7 @@ public enum ChipperToolMaterial implements ToolMaterial { @Override public int getDurability() { - return 1561; // diamond-ish but cursed + return 5; } @Override diff --git a/src/main/java/net/Chipperfluff/chipi/sound/ModSounds.java b/src/main/java/net/Chipperfluff/chipi/sound/ModSounds.java new file mode 100644 index 0000000..72f4a09 --- /dev/null +++ b/src/main/java/net/Chipperfluff/chipi/sound/ModSounds.java @@ -0,0 +1,23 @@ +package net.Chipperfluff.chipi.sound; + +import net.Chipperfluff.chipi.ChipiMod; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.Identifier; + +public class ModSounds { + + public static final SoundEvent MEP_MILK = register("entity.mep.milk"); + + private static SoundEvent register(String id) { + Identifier identifier = new Identifier(ChipiMod.MOD_ID, id); + return Registry.register( + Registries.SOUND_EVENT, + identifier, + SoundEvent.of(identifier) + ); + } + + public static void register() {} +} diff --git a/src/main/java/net/Chipperfluff/chipi/util/TickScheduler.java b/src/main/java/net/Chipperfluff/chipi/util/TickScheduler.java new file mode 100644 index 0000000..a0c5299 --- /dev/null +++ b/src/main/java/net/Chipperfluff/chipi/util/TickScheduler.java @@ -0,0 +1,52 @@ +package net.Chipperfluff.chipi.util; + +import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents; +import net.minecraft.server.MinecraftServer; + +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +public class TickScheduler { + + private static final List TASKS = new LinkedList<>(); + private static boolean registered = false; + + public static void init() { + if (registered) return; + registered = true; + + ServerTickEvents.END_SERVER_TICK.register(TickScheduler::tick); + } + + public static void schedule(int delayTicks, Runnable action) { + TASKS.add(new ScheduledTask(delayTicks, action)); + } + + private static void tick(MinecraftServer server) { + Iterator it = TASKS.iterator(); + while (it.hasNext()) { + ScheduledTask task = it.next(); + task.ticks--; + + if (task.ticks <= 0) { + try { + task.action.run(); + } catch (Exception e) { + e.printStackTrace(); + } + it.remove(); + } + } + } + + private static class ScheduledTask { + int ticks; + Runnable action; + + ScheduledTask(int ticks, Runnable action) { + this.ticks = ticks; + this.action = action; + } + } +} diff --git a/src/main/resources/assets/chipi/lang/en_us.json b/src/main/resources/assets/chipi/lang/en_us.json index d4191d7..2ad533e 100644 --- a/src/main/resources/assets/chipi/lang/en_us.json +++ b/src/main/resources/assets/chipi/lang/en_us.json @@ -19,11 +19,13 @@ "item.chipi.chipper_portal": "Chipper Portal", "item.chipi.chipper_ore": "Chipper Ore", "item.chipi.chipper_alloy_block": "Chipper Alloy Block", - "item.chipi.nut": "Nut", "item.chipi.raw_chipper_ore": "Raw Chipper Ore", "item.chipi.chipper_ingot": "Chipper Ingot", "item.chipi.chipper_alloy": "Chipper Alloy", "item.chipi.mep_spawn_egg": "Mep Spawn Egg", + + "item.chipi.nut": "Nut", + "item.chipi.mep_milk": "Mep Milk", "item.chipi.chipper_helmet": "Chipper Helmet", "item.chipi.chipper_chestplate": "Chipper Chestplate", @@ -58,5 +60,8 @@ "tooltip.chipi.chipper_pickaxe": "§7Breaks stone.§r §8Breaks trust.", "tooltip.chipi.chipper_axe": "§7Heavy swing.§r §8Heavier consequence.", "tooltip.chipi.chipper_shovel": "§7Digs fast.§r §8Finds nothing good.", - "tooltip.chipi.chipper_hoe": "§7Makes things grow.§r §8They shouldn’t." + "tooltip.chipi.chipper_hoe": "§7Makes things grow.§r §8They shouldn’t.", + + "tooltip.chipi.mep_milk": "§7Warm.§r §8You probably shouldn't drink this." + } diff --git a/src/main/resources/assets/chipi/models/item/mep_milk.json b/src/main/resources/assets/chipi/models/item/mep_milk.json new file mode 100644 index 0000000..1c4724a --- /dev/null +++ b/src/main/resources/assets/chipi/models/item/mep_milk.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "chipi:item/mep_milk" + } +} diff --git a/src/main/resources/assets/chipi/sounds.json b/src/main/resources/assets/chipi/sounds.json new file mode 100644 index 0000000..5c349f7 --- /dev/null +++ b/src/main/resources/assets/chipi/sounds.json @@ -0,0 +1,7 @@ +{ + "entity.mep.milk": { + "sounds": [ + "chipi:mep_milk" + ] + } +} diff --git a/src/main/resources/assets/chipi/sounds/mep_milk.ogg b/src/main/resources/assets/chipi/sounds/mep_milk.ogg new file mode 100644 index 0000000000000000000000000000000000000000..793598d35059bc25f94a90ce019351f60fa07104 GIT binary patch literal 8761 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/chipi/sounds/mep_milk.wav b/src/main/resources/assets/chipi/sounds/mep_milk.wav new file mode 100644 index 0000000000000000000000000000000000000000..29ae4dc02ffd489aa00b793a9383dbeb1f9c74db GIT binary patch literal 39596 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 A4FCWD delta 251 zcmV zF1$ri$B54hDY{($85kHCo^oEgKc#I!*ra>-x%?_fPsO5Vb0}m zj88ea8RR8685na488|hR@hQgyo@S!|JJZ$wYshi`hq(ymDuQ0{G!y+VFTu%h;KEym z8;`!?REO0I#A+tW*@OU!>2$Rj18B%`ldqW)005}TV2g!(McV)X002ovPDHLkV1lM0 BdqV&K diff --git a/src/main/resources/assets/chipi/textures/item/chipper_hoe.png b/src/main/resources/assets/chipi/textures/item/chipper_hoe.png index f2d6cce23bd0d16f4cfbee536fd361ba64528993..b6a94e4fb5ab7a0b808d3f6f36439b9f8ea247d9 100644 GIT binary patch delta 246 zcmV%4 zUV@Wh#->M%3=9kmEcgtVbNL(0g8$ySJPf*W>bP0l+XkK66i04 diff --git a/src/main/resources/assets/chipi/textures/item/chipper_pickaxe.png b/src/main/resources/assets/chipi/textures/item/chipper_pickaxe.png index 405a2738be407912709b2a349cc7b8652af34f93..0d57dba1554951a6da27aa0e7f2b7427797bc2cc 100644 GIT binary patch delta 298 zcmV+_0oDGs0l5N@7=H)`0000V^Z#K00096=L_t(|oMT`ZXuya|qREE;Ke|}mk&hVa zu^P~1!~Z|PoR{Iv$G;38zx`!kU|?Y2=VE3!a^oAr@n38V@)Dd3Gd4Y9WME)mV8Lbp z)TaNBKK_P_dF%2p=*qD(u=5Hs%-{Y5E{@dzY|eek$^E}nkAH7vUYu9U|?Wih%)DANYUl`Pm}?kW}^Qc422jDTzJcHOV07*qoM6N<$f>dgYcmMzZ delta 165 zcmdnVw3Ts!L_G^L0|Ud`yN`l^lw5#Mh%1mbetlZ|_!{+1vpUn&GyLQ{%|!X^%{1h= zIaC##S6;aXRKZvh1)bjETX04ei zoC|L%^{6#SYVuB2cVLld;Mu@%cnPNfV_T=N0u#?1xd6r$Vj7E?&!#b0pXYb}qjho? P&_o7LS3j3^P66+g}ELE@l*YqQbz_O!R-63L^tQ7c+whKQqImUGLywKy#Gl&UE$v8gktKFBQxD zPtoQ2Pn1S<%?u0-4A?Z|bcUyy=zn<$PKE;)-ZI>H^p&LO#;_S5z%ZFqo8byP%|!n* zFfcGU7z#1W-~NPXXQQM8QZ-`$4LNS2{7qE=00b0Rle0mM8~^|S07*qoM6N<$f_$xP AzW@LL delta 151 zcmeBXTERF$vYwfNfk8u;KNv{K1^9%x0%=b(Q4Kk6j3Or1XMXUb*-;jIY)LXWO`Ku<$ zZhRiJu}r1WC|#geC%|x3z|XU)A7}`Jr>mdKI;Vst03mEL AtN;K2 diff --git a/src/main/resources/assets/chipi/textures/item/chipper_sword.png b/src/main/resources/assets/chipi/textures/item/chipper_sword.png index 2430c2f0ab1bb28e94ef7644173edddd88aa97c4..b06929f780c5da6fd47584830080de14adf19175 100644 GIT binary patch delta 310 zcmV-60m=Tt0mcH58Gi-<001BJ|6u?C0S!q+K~#90t&y>60zni-?_>>x0U21d2m~AJ zEli=!7HRGLi2Vb5i+nkAGkO7iMK408C=C-bRBa zj+CJ#JbZlqV45gaHn2(*+$)Ukfh~hcOpH{9PU{g-z|CmT#A% za>7;z<+}yw8~du|8oVQ!guW4qrQ^0bIUM?vB{Vs_0e+4M`dx?b0~s7ycEQ)Ju?uR{#J207*qo IM6N<$g6m9+K>z>% delta 177 zcmX@cbck_+WIZzj1A~Sxe=v|z3GfMV1=4)>W*n*t#;;E=`TIfp_!_yca?#|_3_m$f zGf@pW?#^^|sk81rKy{2IL4Lsu4$p3+0XaUNE{-7*mrMH&@*XhYVPaffHtF5|{QBOB zQUBiw9CEOqbT0YCPos|qKORPx$3Q0skR5(v#WS|f*V$*MGYWg3W`03N9G1Q|7z%)8LJA?HrC@7$qGk5M>Fdx|< zxB(!|AdU4b9Sj`$;S3BP?jtk{D1zBPF0N!~{8PcOckf=fAt(kMazD+$A#a8^RDL`> z#bCG76uSX1onV7Nt^fh3OJEvdYGB?#alzuniy1ClxWLfc+l$o|wzjqmDk>@r^XJdU z?gEej$N*#*2)ujuj^WOoJ76|Z2B@p6Gu*s+6YLsv1I*0Kz%Iny#R75C@mm|1G*Q`HG}kEq(qoEK$0K>KmiB>pg<&O0L&FILtqBr(v0B( iSQL_-nee7z9FhP-4BmE literal 0 HcmV?d00001 diff --git a/tools/recolor/color_maps/chipper_orange.py b/tools/recolor/color_maps/chipper_orange.py index 4da829b..e199661 100644 --- a/tools/recolor/color_maps/chipper_orange.py +++ b/tools/recolor/color_maps/chipper_orange.py @@ -1,19 +1,31 @@ from tools.recolor import Color, ColorMask COLOR_MAP = [ - # ---- item/armor (teal -> orange) ---- - ColorMask(Color( 8, 37, 32), Color(100, 45, 10)), - ColorMask(Color( 14, 62, 53), Color(130, 60, 15)), - ColorMask(Color( 26, 168, 165), Color(160, 80, 20)), - ColorMask(Color( 32, 195, 179), Color(190, 100, 25)), - ColorMask(Color( 73, 234, 214), Color(220, 120, 30)), - ColorMask(Color(159, 248, 229), Color(235, 140, 40)), - ColorMask(Color(252, 252, 252), Color(255, 220, 180)), - # ---- model/armor (old teal -> orange) ---- - ColorMask(Color( 44, 224, 216), Color(130, 60, 15)), - ColorMask(Color( 45, 196, 178), Color(160, 80, 20)), - ColorMask(Color( 48, 208, 190), Color(190, 100, 25)), + # ============================================================ + # item / tool teal → orange (all observed variants) + # ============================================================ + + ColorMask(Color( 8, 37, 32), Color(100, 45, 10)), + ColorMask(Color( 14, 63, 54), Color(130, 60, 15)), + ColorMask(Color( 21, 99, 85), Color(145, 70, 18)), + ColorMask(Color( 30, 138, 119), Color(160, 80, 20)), + ColorMask(Color( 39, 178, 154), Color(190, 100, 25)), + ColorMask(Color( 43, 199, 172), Color(210, 115, 28)), + ColorMask(Color( 51, 235, 203), Color(220, 120, 30)), + ColorMask(Color( 73, 234, 214), Color(235, 140, 40)), + ColorMask(Color(107, 243, 227), Color(245, 160, 60)), + ColorMask(Color(137, 248, 240), Color(255, 180, 100)), + ColorMask(Color(159, 248, 229), Color(255, 200, 140)), + ColorMask(Color(164, 253, 240), Color(255, 220, 180)), + + # ============================================================ + # model / armor teal variants (older & lighter) + # ============================================================ + + ColorMask(Color( 44, 224, 216), Color(160, 80, 20)), + ColorMask(Color( 45, 196, 178), Color(190, 100, 25)), + ColorMask(Color( 48, 208, 190), Color(210, 115, 28)), ColorMask(Color( 74, 237, 217), Color(220, 120, 30)), ColorMask(Color(107, 243, 227), Color(235, 140, 40)), ColorMask(Color(154, 248, 240), Color(245, 160, 60)), @@ -21,11 +33,17 @@ COLOR_MAP = [ ColorMask(Color(180, 253, 238), Color(255, 200, 140)), ColorMask(Color(229, 255, 250), Color(255, 220, 180)), - # ---- already orange (identity, makes it safe to rerun) ---- + # ============================================================ + # already-orange safety (idempotent) + # ============================================================ + ColorMask(Color(100, 45, 10), Color(100, 45, 10)), ColorMask(Color(130, 60, 15), Color(130, 60, 15)), + ColorMask(Color(145, 70, 18), Color(145, 70, 18)), ColorMask(Color(160, 80, 20), Color(160, 80, 20)), + ColorMask(Color(175, 90, 22), Color(175, 90, 22)), ColorMask(Color(190, 100, 25), Color(190, 100, 25)), + ColorMask(Color(210, 115, 28), Color(210, 115, 28)), ColorMask(Color(220, 120, 30), Color(220, 120, 30)), ColorMask(Color(235, 140, 40), Color(235, 140, 40)), ColorMask(Color(245, 160, 60), Color(245, 160, 60)),