Added Mutton Behavior

Sheep drops, villager trades, cooks, eats, dogs turn heads. everything works.
This commit is contained in:
arsenicviscera 2026-03-15 12:28:12 -07:00
parent f8963326fe
commit 06d10e1159
17 changed files with 2195 additions and 2012 deletions

View file

@ -395,7 +395,7 @@ void IUIScene_CreativeMenu::staticCtor()
DEF(eCreativeInventory_Food)
ITEM(Item::apple_Id)
ITEM(Item::apple_gold_Id)
ITEM_AUX(Item::apple_gold_Id,1) // Enchanted
ITEM_AUX(Item::apple_gold_Id, 1) // Enchanted
ITEM(Item::melon_Id)
ITEM(Item::mushroomStew_Id)
ITEM(Item::bread_Id)
@ -407,6 +407,8 @@ void IUIScene_CreativeMenu::staticCtor()
ITEM(Item::porkChop_raw_Id)
ITEM(Item::beef_cooked_Id)
ITEM(Item::beef_raw_Id)
ITEM(Item::mutton_cooked_Id)
ITEM(Item::mutton_raw_Id)
ITEM(Item::chicken_raw_Id)
ITEM(Item::chicken_cooked_Id)
ITEM(Item::rotten_flesh_Id)

View file

@ -446,6 +446,8 @@ void PreStitchedTextureMap::loadUVs()
ADD_ICON(6, 8, L"saddle")
ADD_ICON(6, 9, L"beefRaw")
ADD_ICON(6, 10, L"beefCooked")
ADD_ICON(11, 5, L"muttonRaw")
ADD_ICON(12, 5, L"muttonCooked")
ADD_ICON(6, 11, L"enderPearl")
ADD_ICON(6, 12, L"blazeRod")
ADD_ICON(6, 13, L"melon")

View file

@ -886,8 +886,16 @@ haben.</value>
<data name="IDS_DESC_BEEF_COOKED">
<value>Regeneriert 4{*ICON_SHANK_01*}.</value>
</data>
</data>
<data name="IDS_DESC_MUTTON_COOKED">
<value>Regeneriert 3{*ICON_SHANK_01*}.</value>
</data>
<data name="IDS_DESC_MUTTON_RAW">
<value>Regeneriert 1{*ICON_SHANK_01*}, kann dich aber krankmachen. Kann im Ofen gebraten werden.</value>
</data>
<data name="IDS_DESC_PORKCHOP_RAW">
<value>Erhält man durch Töten eines Schweins, regeneriert 1.5{*ICON_SHANK_01*}. Kann im Ofen gebraten werden.</value>
</data>
@ -2455,8 +2463,16 @@ statt nur 3.)</value>
<data name="IDS_ITEM_BEEF_COOKED">
<value>Steak</value>
</data>
</data>
<data name="IDS_ITEM_MUTTON_RAW">
<value>Rohes Lammfleisch</value>
</data>
<data name="IDS_ITEM_MUTTON_COOKED">
<value>Gebratenes Lammfleisch</value>
</data>
<data name="IDS_ITEM_ROTTEN_FLESH">
<value>Verrottetes Fleisch</value>
</data>

View file

@ -880,8 +880,16 @@ Los colores de la cama siempre son los mismos, independientemente del color de l
<data name="IDS_DESC_BEEF_COOKED">
<value>Restablece 4{*ICON_SHANK_01*}.</value>
</data>
</data>
<data name="IDS_DESC_MUTTON_COOKED">
<value>Restablece 3{*ICON_SHANK_01*}.</value>
</data>
<data name="IDS_DESC_MUTTON_RAW">
<value>Restablece 1{*ICON_SHANK_01*}, pero puede hacerte enfermar. Cocinar en un horno.</value>
</data>
<data name="IDS_DESC_PORKCHOP_RAW">
<value>Se consigue al matar un cerdo, restablece 1,5{*ICON_SHANK_01*} y se puede cocinar en un horno.</value>
</data>
@ -2459,8 +2467,19 @@ de tinta en vez de 3).</value>
<data name="IDS_ITEM_BEEF_COOKED">
<value>Filete</value>
</data>
</data>
<data name="IDS_ITEM_MUTTON_RAW">
<value>
Cordero crudo
</value>
</data>
<data name="IDS_ITEM_MUTTON_COOKED">
<value>
Cordero cocido
</value>
</data>
<data name="IDS_ITEM_ROTTEN_FLESH">
<value>Carne podrida</value>
</data>

View file

@ -883,8 +883,16 @@ La couleur des lits est toujours la même.</value>
<data name="IDS_DESC_BEEF_COOKED">
<value>Restitue 4{*ICON_SHANK_01*}.</value>
</data>
</data>
<data name="IDS_DESC_MUTTON_COOKED">
<value>Restitue 3{*ICON_SHANK_01*} mais peut vous rendre malade. Se cuisine dans un four.</value>
</data>
<data name="IDS_DESC_MUTTON_RAW">
<value>Restitue 1{*ICON_SHANK_01*} mais peut vous rendre malade. Se cuisine dans un four.</value>
</data>
<data name="IDS_DESC_PORKCHOP_RAW">
<value>Prélevée sur les cadavres de cochons, restitue 1,5{*ICON_SHANK_01*} et se cuisine dans un four.</value>
</data>
@ -2450,8 +2458,19 @@ Remarque : vous pouvez aussi combiner colorant gris et poudre d'os pour en produ
<data name="IDS_ITEM_BEEF_COOKED">
<value>Steak</value>
</data>
</data>
<data name="IDS_ITEM_MUTTON_RAW">
<value>
Mouton cru
</value>
</data>
<data name="IDS_ITEM_MUTTON_COOKED">
<value>
mouton cuit
</value>
</data>
<data name="IDS_ITEM_ROTTEN_FLESH">
<value>Chair putréfiée</value>
</data>

View file

@ -880,8 +880,16 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
<data name="IDS_DESC_BEEF_COOKED">
<value>Reintegra 4{*ICON_SHANK_01*}.</value>
</data>
</data>
<data name="IDS_DESC_MUTTON_COOKED">
<value>Reintegra 3{*ICON_SHANK_01*}</value>
</data>
<data name="IDS_DESC_MUTTON_RAW">
<value>Reintegra 1{*ICON_SHANK_01*}, ma può farti star male. Cucinare in una fornace.</value>
</data>
<data name="IDS_DESC_PORKCHOP_RAW">
<value>Si ottiene uccidendo un maiale e si può cucinare nella fornace. Reintegra 1,5{*ICON_SHANK_01*}.</value>
</data>
@ -2446,8 +2454,13 @@ I colori sono sempre gli stessi, qualunque sia la lana usata.</value>
<data name="IDS_ITEM_BEEF_COOKED">
<value>Bistecca</value>
</data>
</data>
<data name="IDS_ITEM_MUTTON_RAW">
<value>Montone crudo</value>
</data>
<data name="IDS_ITEM_MUTTON_COOKED">
<value>Montone cotto</value>
</data>
<data name="IDS_ITEM_ROTTEN_FLESH">
<value>Carne guasta</value>
</data>

View file

@ -875,8 +875,16 @@ Minecraft に登場する動物は繁殖能力を持ち、自分たちの赤ち
<data name="IDS_DESC_BEEF_COOKED">
<value>4{*ICON_SHANK_01*} 回復する</value>
</data>
</data>
<data name="IDS_DESC_MUTTON_COOKED">
<value>3{*ICON_SHANK_01*} 回復する。生の羊肉をかまどで調理して作る</value>
</data>
<data name="IDS_DESC_MUTTON_RAW">
<value>1{*ICON_SHANK_01*} 回復するが、病気になる場合もある。かまどで調理できる</value>
</data>
<data name="IDS_DESC_PORKCHOP_RAW">
<value>豚を倒すと手に入る。かまどで調理できる。1.5{*ICON_SHANK_01*} 回復する</value>
</data>
@ -2441,8 +2449,15 @@ Minecraft に登場する動物は繁殖能力を持ち、自分たちの赤ち
<data name="IDS_ITEM_BEEF_COOKED">
<value>ステーキ</value>
</data>
</data>
<data name="IDS_ITEM_MUTTON_RAW">
<value>生の羊肉</value>
</data>
<data name="IDS_ITEM_MUTTON_COOKED">
<value>焼いた羊肉</value>
</data>
<data name="IDS_ITEM_ROTTEN_FLESH">
<value>腐肉</value>
</data>

View file

@ -880,8 +880,16 @@ Ender에 들어서면 친구가 그들의 지도에서 요새 내부에 있는 E
<data name="IDS_DESC_BEEF_COOKED">
<value>{*ICON_SHANK_01*}를 4만큼 회복합니다.</value>
</data>
</data>
<data name="IDS_DESC_MUTTON_COOKED">
<value>{*ICON_SHANK_01*}를 3만큼 회복합니다. 생의 양고기를 화로에서 조리하여 만듭니다.</value>
</data>
<data name="IDS_DESC_MUTTON_RAW">
<value>{*ICON_SHANK_01*}를 1만큼 회복하지만 병에 걸릴 수 있습니다. 화로에서 조리가 가능합니다.</value>
</data>
<data name="IDS_DESC_PORKCHOP_RAW">
<value>돼지를 잡으면 얻을 수 있으며 {*ICON_SHANK_01*}를 1.5만큼 회복합니다. 화로에서 조리가 가능합니다.</value>
</data>
@ -2446,8 +2454,16 @@ Ender에 들어서면 친구가 그들의 지도에서 요새 내부에 있는 E
<data name="IDS_ITEM_BEEF_COOKED">
<value>스테이크</value>
</data>
</data>
<data name="IDS_ITEM_BEEF_RAW">
<value>소 날고기</value>
</data>
<data name="IDS_ITEM_BEEF_COOKED">
<value>스테이크</value>
</data>
<data name="IDS_ITEM_ROTTEN_FLESH">
<value>썩은 살점</value>
</data>

View file

@ -874,8 +874,16 @@ As cores da cama são sempre as mesmas, independentemente da cor da lã usada.</
<data name="IDS_DESC_BEEF_COOKED">
<value>Restaura 4{*ICON_SHANK_01*}.</value>
</data>
</data>
<data name="IDS_DESC_MUTTON_COOKED">
<value>Restaura 3{*ICON_SHANK_01*}. Criada ao cozinhar carne de cordeiro crua na fornalha.</value>
</data>
<data name="IDS_DESC_MUTTON_RAW">
<value>Restaura 1{*ICON_SHANK_01*}, ou pode ser cozida na fornalha.</value>
</data>
<data name="IDS_DESC_PORKCHOP_RAW">
<value>Coletada ao matar um porco, restaura 1.5{*ICON_SHANK_01*}, e pode ser cozida na fornalha.</value>
</data>
@ -2440,7 +2448,14 @@ Também pode ser usado para pouca iluminação.</value>
<data name="IDS_ITEM_BEEF_COOKED">
<value>Bife</value>
</data>
</data>
<data name="IDS_ITEM_MUTTON_RAW">
<value>Carne de Cordeiro Crua</value>
</data>
<data name="IDS_ITEM_MUTTON_COOKED">
<value>Carne de Cordeiro Cozida</value>
</data>
<data name="IDS_ITEM_ROTTEN_FLESH">
<value>Carne Podre</value>

View file

@ -1081,8 +1081,16 @@ The colors of the bed are always the same, regardless of the colors of wool used
<data name="IDS_DESC_BEEF_COOKED">
<value>Restores 4{*ICON_SHANK_01*}. Created by cooking raw beef in a furnace.</value>
</data>
</data>
<data name="IDS_DESC_MUTTON_COOKED">
<value>Restores 3{*ICON_SHANK_01*}. Created by cooking raw mutton in a furnace.</value>
</data>
<data name="IDS_DESC_MUTTON_RAW">
<value>Restores 1{*ICON_SHANK_01*}, or can be cooked in a furnace.</value>
</data>
<data name="IDS_DESC_PORKCHOP_RAW">
<value>Restores 1.5{*ICON_SHANK_01*}, or can be cooked in a furnace.</value>
</data>
@ -2764,11 +2772,17 @@ Can also be used for low-level lighting.</value>
<data name="IDS_ITEM_BEEF_RAW">
<value>Raw Beef</value>
</data>
<data name="IDS_ITEM_BEEF_COOKED">
<value>Steak</value>
</data>
</data>
<data name="IDS_ITEM_MUTTON_RAW">
<value>Raw Mutton</value>
</data>
<data name="IDS_ITEM_MUTTON_COOKED">
<value>Cooked Mutton</value>
</data>
<data name="IDS_ITEM_ROTTEN_FLESH">
<value>Rotten Flesh</value>
</data>

View file

@ -879,8 +879,16 @@ Minecraft 是一款可讓您放置方塊來建造夢想世界的遊戲。但千
<data name="IDS_DESC_BEEF_COOKED">
<value>可回復 4 個 {*ICON_SHANK_01*}。</value>
</data>
</data>
<data name="IDS_DESC_MUTTON_COOKED">
<value>可回復 3 個 {*ICON_SHANK_01*}。可在熔爐中烹煮生羊肉來製作。</value>
</data>
<data name="IDS_DESC_MUTTON_RAW">
<value>可回復 1 個 {*ICON_SHANK_01*},或可在熔爐中烹煮。</value>
</data>
<data name="IDS_DESC_PORKCHOP_RAW">
<value>殺死豬即可獲得,能回復 1.5 個 {*ICON_SHANK_01*}。可在熔爐中烹煮。</value>
</data>
@ -2445,7 +2453,14 @@ Minecraft 是一款可讓您放置方塊來建造夢想世界的遊戲。但千
<data name="IDS_ITEM_BEEF_COOKED">
<value>牛排</value>
</data>
</data>
<data name="IDS_ITEM_MUTTON_RAW">
<value>生羊肉</value>
</data>
<data name="IDS_ITEM_MUTTON_COOKED">
<value>熟羊肉</value>
</data>
<data name="IDS_ITEM_ROTTEN_FLESH">
<value>腐肉</value>

File diff suppressed because it is too large Load diff

View file

@ -24,6 +24,7 @@ FurnaceRecipes::FurnaceRecipes()
addFurnaceRecipy(Item::porkChop_raw_Id, new ItemInstance(Item::porkChop_cooked), .35f);
addFurnaceRecipy(Item::beef_raw_Id, new ItemInstance(Item::beef_cooked), .35f);
addFurnaceRecipy(Item::chicken_raw_Id, new ItemInstance(Item::chicken_cooked), .35f);
addFurnaceRecipy(Item::mutton_raw_Id, new ItemInstance(Item::mutton_cooked), .35f);
addFurnaceRecipy(Item::fish_raw_Id, new ItemInstance(Item::fish_cooked), .35f);
addFurnaceRecipy(Tile::cobblestone_Id, new ItemInstance(Tile::stone), .1f);
addFurnaceRecipy(Item::clay_Id, new ItemInstance(Item::brick), .3f);

View file

@ -251,6 +251,9 @@ Item *Item::horseArmorDiamond = nullptr;
Item *Item::lead = nullptr;
Item *Item::nameTag = nullptr;
//Custom Items here
Item* Item::mutton_raw = nullptr;
Item* Item::mutton_cooked = nullptr;
void Item::staticCtor()
{
@ -493,7 +496,11 @@ void Item::staticCtor()
Item::horseArmorGold = (new Item(162)) ->setIconName(L"gold_horse_armor")->setMaxStackSize(1)->setDescriptionId(IDS_ITEM_GOLD_HORSE_ARMOR)->setUseDescriptionId(IDS_DESC_GOLD_HORSE_ARMOR);
Item::horseArmorDiamond = (new Item(163)) ->setIconName(L"diamond_horse_armor")->setMaxStackSize(1)->setDescriptionId(IDS_ITEM_DIAMOND_HORSE_ARMOR)->setUseDescriptionId(IDS_DESC_DIAMOND_HORSE_ARMOR);
Item::lead = (new LeashItem(164)) ->setBaseItemTypeAndMaterial(eBaseItemType_pockettool, eMaterial_undefined)->setIconName(L"lead")->setDescriptionId(IDS_ITEM_LEAD)->setUseDescriptionId(IDS_DESC_LEAD);
Item::nameTag = (new NameTagItem(165)) ->setIconName(L"name_tag")->setDescriptionId(IDS_ITEM_NAME_TAG)->setUseDescriptionId(IDS_DESC_NAME_TAG);}
Item::nameTag = (new NameTagItem(165)) ->setIconName(L"name_tag")->setDescriptionId(IDS_ITEM_NAME_TAG)->setUseDescriptionId(IDS_DESC_NAME_TAG);
Item::mutton_raw = (new FoodItem(166, 2, FoodConstants::FOOD_SATURATION_LOW, true)) ->setIconName(L"muttonRaw")->setDescriptionId(IDS_ITEM_MUTTON_RAW)->setUseDescriptionId(IDS_DESC_MUTTON_RAW);
Item::mutton_cooked = (new FoodItem(167, 6, FoodConstants::FOOD_SATURATION_GOOD, true)) ->setIconName(L"muttonCooked")->setDescriptionId(IDS_ITEM_MUTTON_COOKED)->setUseDescriptionId(IDS_DESC_MUTTON_COOKED);
}
// 4J Stu - We need to do this after the staticCtor AND after staticCtors for other class

View file

@ -328,6 +328,8 @@ public:
static Item *beef_cooked;
static Item *chicken_raw;
static Item *chicken_cooked;
static Item *mutton_raw;
static Item *mutton_cooked;
static Item *rotten_flesh;
static Item *enderPearl;
@ -618,6 +620,11 @@ public:
static const int lead_Id = 420;
static const int nameTag_Id = 421;
//Custom IDs here
static const int mutton_raw_Id = 422;
static const int mutton_cooked_Id = 423;
public:
const int id;

View file

@ -110,6 +110,19 @@ void Sheep::dropDeathLoot(bool wasKilledByPlayer, int playerBonusLevel)
// killing a non-sheared sheep will drop a single block of cloth
spawnAtLocation(std::make_shared<ItemInstance>(Tile::wool_Id, 1, getColor()), 0.0f);
}
int count = random->nextInt(3) + 1 + random->nextInt(1 + playerBonusLevel);
for (int i = 0; i < count; i++)
{
if (isOnFire())
{
spawnAtLocation(Item::mutton_cooked_Id, 1);
}
else
{
spawnAtLocation(Item::mutton_raw_Id, 1);
}
}
}
int Sheep::getDeathLoot()

View file

@ -427,6 +427,7 @@ void Villager::addOffers(int addCount)
addItemForTradeIn(newOffers, Item::coal_Id, random, getRecipeChance(.7f));
addItemForTradeIn(newOffers, Item::porkChop_raw_Id, random, getRecipeChance(.5f));
addItemForTradeIn(newOffers, Item::beef_raw_Id, random, getRecipeChance(.5f));
addItemForTradeIn(newOffers, Item::mutton_raw_Id, random, getRecipeChance(.5f));
addItemForPurchase(newOffers, Item::saddle_Id, random, getRecipeChance(.1f));
addItemForPurchase(newOffers, Item::chestplate_leather_Id, random, getRecipeChance(.3f));
addItemForPurchase(newOffers, Item::boots_leather_Id, random, getRecipeChance(.3f));
@ -434,6 +435,7 @@ void Villager::addOffers(int addCount)
addItemForPurchase(newOffers, Item::leggings_leather_Id, random, getRecipeChance(.3f));
addItemForPurchase(newOffers, Item::porkChop_cooked_Id, random, getRecipeChance(.3f));
addItemForPurchase(newOffers, Item::beef_cooked_Id, random, getRecipeChance(.3f));
addItemForPurchase(newOffers, Item::mutton_cooked_Id, random, getRecipeChance(.3f));
break;
case PROFESSION_SMITH:
addItemForTradeIn(newOffers, Item::coal_Id, random, getRecipeChance(.7f));
@ -549,6 +551,7 @@ void Villager::staticCtor()
MIN_MAX_VALUES[Item::porkChop_raw_Id] = pair<int,int>(14, 18);
MIN_MAX_VALUES[Item::beef_raw_Id] = pair<int,int>(14, 18);
MIN_MAX_VALUES[Item::chicken_raw_Id] = pair<int,int>(14, 18);
MIN_MAX_VALUES[Item::mutton_raw_Id] = pair<int,int>(14, 18);
MIN_MAX_VALUES[Item::fish_cooked_Id] = pair<int,int>(9, 13);
MIN_MAX_VALUES[Item::seeds_wheat_Id] = pair<int,int>(34, 48);
MIN_MAX_VALUES[Item::seeds_melon_Id] = pair<int,int>(30, 38);
@ -599,6 +602,8 @@ void Villager::staticCtor()
MIN_MAX_PRICES[Tile::glowstone_Id] = pair<int,int>(-3, -1);
MIN_MAX_PRICES[Item::porkChop_cooked_Id] = pair<int,int>(-7, -5);
MIN_MAX_PRICES[Item::beef_cooked_Id] = pair<int,int>(-7, -5);
//Mutton is kind of an in-between of pork and beef, so it's a little cheaper than both
MIN_MAX_PRICES[Item::mutton_cooked_Id] = pair<int,int>(-8, -5);
MIN_MAX_PRICES[Item::chicken_cooked_Id] = pair<int,int>(-8, -6);
MIN_MAX_PRICES[Item::eyeOfEnder_Id] = pair<int,int>(7, 11);
MIN_MAX_PRICES[Item::arrow_Id] = pair<int,int>(-12, -8);