Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of SakeysCozyClutter v1.0.6
BepInEx/plugins/Sakey's Cozy Clutter/Sakey's Cozy Clutter.dll
Decompiled a week ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Jotunn.Configs; using Jotunn.Entities; using Jotunn.Managers; using Jotunn.Utils; using TMPro; using UnityEngine; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyCompany("Sakey's Cozy Clutter")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Sakey's Cozy Clutter")] [assembly: AssemblyTitle("Sakey's Cozy Clutter")] [assembly: AssemblyVersion("1.0.0.0")] namespace SakeysClutter; [BepInPlugin("com.sakey.clutter", "Sakey's Cozy Clutter", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class SakeysClutterPlugin : BaseUnityPlugin { private class ClutterItemData { public string PrefabName; public string AssetName; public string IconName; public string NameKey; public string DescriptionKey; public string DisplayName; public string Description; public string Category; public string Material; public int Amount; public int Comfort; } public const string PluginGUID = "com.sakey.clutter"; public const string PluginName = "Sakey's Cozy Clutter"; public const string PluginVersion = "1.0.0"; private const string LOG_PREFIX = "[Sakey's Cozy Clutter]"; public const string ASSET_BUNDLE_NAME = "cozyclutter"; public static AssetBundle AssetBundle; public const string TOOL_PREFAB_NAME = "SakeysClutterTool"; public const string TOOL_MODEL_NAME = "clutter_tool"; public const string TOOL_ICON_NAME = "icon_clutter_tool"; public const string PIECE_TABLE_NAME = "SakeysClutterTable"; private readonly ClutterItemData[] clutterItems = new ClutterItemData[125] { new ClutterItemData { PrefabName = "DollDverger", AssetName = "doll_dverger", IconName = "icon_doll_dverger", NameKey = "$DollDverger", DescriptionKey = "$DollDvergerDesc", DisplayName = "ドヴェルグのぬいぐるみ", Description = "ドヴェルグを模したかわいいぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollDvergerBig", AssetName = "doll_dvergerbig", IconName = "icon_doll_dvergerbig", NameKey = "$DollDvergerBig", DescriptionKey = "$DollDvergerBigDesc", DisplayName = "ドヴェルグのBIGぬいぐるみ", Description = "ドヴェルグを模した大きなぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollTroll", AssetName = "doll_troll", IconName = "icon_doll_troll", NameKey = "$DollTroll", DescriptionKey = "$DollTrollDesc", DisplayName = "トロルのぬいぐるみ", Description = "トロルを模したかわいいぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollTrollBig", AssetName = "doll_trollbig", IconName = "icon_doll_trollbig", NameKey = "$DollTrollBig", DescriptionKey = "$DollTrollBigDesc", DisplayName = "トロルのBIGぬいぐるみ", Description = "トロルを模した大きなぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollRion", AssetName = "doll_rion", IconName = "icon_doll_rion", NameKey = "$DollRion", DescriptionKey = "$DollRionDesc", DisplayName = "りおんのぬいぐるみ", Description = "Vtuber幸島梨苑のかわいいぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollRionBig", AssetName = "doll_rionbig", IconName = "icon_doll_rionbig", NameKey = "$DollRionBig", DescriptionKey = "$DollRionBigDesc", DisplayName = "りおんBIGぬいぐるみ", Description = "Vtuber幸島梨苑のBIGぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollEikthyr", AssetName = "doll_eikthyr", IconName = "icon_doll_eikthyr", NameKey = "$DollEikthyr", DescriptionKey = "$DollEikthyrDesc", DisplayName = "エイクスュルのぬいぐるみ", Description = "エイクスュルを模したかわいいぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollEikthyrBIG", AssetName = "doll_eikthyrbig", IconName = "icon_doll_eikthyrbig", NameKey = "$DollEikthyrBig", DescriptionKey = "$DollEikthyrBigDesc", DisplayName = "エイクスュルのBIGぬいぐるみ", Description = "エイクスュルを模した大きいかわいいぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollGoblin", AssetName = "doll_goblin", IconName = "icon_doll_goblin", NameKey = "$DollGoblin", DescriptionKey = "$DollGoblinDesc", DisplayName = "フーリングのぬいぐるみ", Description = "フーリングを模したかわいいぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollGoblinBig", AssetName = "doll_goblinbig", IconName = "icon_doll_goblinbig", NameKey = "$DollGoblinBig", DescriptionKey = "$DollGoblinBigDesc", DisplayName = "フーリングのBIGぬいぐるみ", Description = "フーリングを模した大きなぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollNeck", AssetName = "doll_neck", IconName = "icon_doll_neck", NameKey = "$DollNeck", DescriptionKey = "$DollNeckDesc", DisplayName = "ネックのぬいぐるみ", Description = "星2のネックを模したかわいいぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollNeckBig", AssetName = "doll_neckbig", IconName = "icon_doll_neckbig", NameKey = "$DollNeckBig", DescriptionKey = "$DollNeckBigDesc", DisplayName = "ネックのBIGぬいぐるみ", Description = "星2のネックを模した大きなぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollGreyling", AssetName = "doll_greyling", IconName = "icon_doll_greyling", NameKey = "$DollGreyling", DescriptionKey = "$DollGreylingDesc", DisplayName = "グレイリングのぬいぐるみ", Description = "グレイリングを模したぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollSheep", AssetName = "doll_sheep", IconName = "icon_doll_sheep", NameKey = "$DollSheep", DescriptionKey = "$DollSheepDesc", DisplayName = "おやすみ羊のぬいぐるみ", Description = "眠る羊のぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollModer", AssetName = "doll_moder", IconName = "icon_doll_moder", NameKey = "$DollModer", DescriptionKey = "$DollModerDesc", DisplayName = "モデルのぬいぐるみ", Description = "モデルを模したかわいいぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollModerBig", AssetName = "doll_moderbig", IconName = "icon_doll_moderbig", NameKey = "$DollModerBig", DescriptionKey = "$DollModerBigDesc", DisplayName = "モデルのBIGぬいぐるみ", Description = "モデルを模した大きなぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollElder", AssetName = "doll_elder", IconName = "icon_doll_elder", NameKey = "$DollElder", DescriptionKey = "$DollElderDesc", DisplayName = "長老のぬいぐるみ", Description = "長老を模したかわいいぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollElderBig", AssetName = "doll_elderbig", IconName = "icon_doll_elderbig", NameKey = "$DollElderBig", DescriptionKey = "$DollElderBigDesc", DisplayName = "長老のBIGぬいぐるみ", Description = "長老を模した大きなぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollLox", AssetName = "doll_lox", IconName = "icon_doll_lox", NameKey = "$DollLox", DescriptionKey = "$DollLoxDesc", DisplayName = "ロックスのぬいぐるみ", Description = "ロックスを模したかわいいぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollLoxBig", AssetName = "doll_loxbig", IconName = "icon_doll_loxbig", NameKey = "$DollLoxBig", DescriptionKey = "$DollLoxBigDesc", DisplayName = "ロックスのBIGぬいぐるみ", Description = "ロックスを模した大きなぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollHildir", AssetName = "doll_hildir", IconName = "icon_doll_hildir", NameKey = "$DollHildir", DescriptionKey = "$DollHildirDesc", DisplayName = "ヒルディルのぬいぐるみ", Description = "ヒルディルを模したかわいいぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollHildirBig", AssetName = "doll_hildirbig", IconName = "icon_doll_hildirbig", NameKey = "$DollHildirBig", DescriptionKey = "$DollHildirBigDesc", DisplayName = "ヒルディルのBIGぬいぐるみ", Description = "ヒルディルを模した大きなぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollDraugr", AssetName = "doll_draugr", IconName = "icon_doll_draugr", NameKey = "$DollDraugr", DescriptionKey = "$DollDraugrDesc", DisplayName = "ドラウグルのぬいぐるみ", Description = "ドラウグルを模したかわいいぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollDraugrBig", AssetName = "doll_draugrbig", IconName = "icon_doll_draugrbig", NameKey = "$DollDraugrBig", DescriptionKey = "$DollDraugrBigDesc", DisplayName = "ドラウグルのBIGぬいぐるみ", Description = "ドラウグルを模した大きなぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollGreyShaman", AssetName = "doll_greyshaman", IconName = "icon_doll_greyshaman", NameKey = "$DollGreyShaman", DescriptionKey = "$DollGreyShamanDesc", DisplayName = "灰色ドワーフのシャーマンのぬいぐるみ", Description = "灰色ドワーフのシャーマンを模したかわいいぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollGreyShamanBig", AssetName = "doll_greyshamanbig", IconName = "icon_doll_greyshamanbig", NameKey = "$DollGreyShamanBig", DescriptionKey = "$DollGreyShamanBigDesc", DisplayName = "灰色ドワーフのシャーマンのBIGぬいぐるみ", Description = "灰色ドワーフのシャーマンを模した大きなぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollGreyBrute", AssetName = "doll_greybrute", IconName = "icon_doll_greybrute", NameKey = "$DollGreyBrute", DescriptionKey = "$DollGreyBruteDesc", DisplayName = "灰色ドワーフの暴漢のぬいぐるみ", Description = "灰色ドワーフの暴漢を模したかわいいぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollGreyBruteBig", AssetName = "doll_greybrutebig", IconName = "icon_doll_greybrutebig", NameKey = "$DollGreyBruteBig", DescriptionKey = "$DollGreyBruteBigDesc", DisplayName = "灰色ドワーフの暴漢のBIGぬいぐるみ", Description = "灰色ドワーフの暴漢を模した大きなぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollValkyrie", AssetName = "doll_valkyrie", IconName = "icon_doll_valkyrie", NameKey = "$DollValkyrie", DescriptionKey = "$DollValkyrieDesc", DisplayName = "堕ちたヴァルキリー人形", Description = "堕ちたヴァルキリーを模した人形。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollValkyrieBig", AssetName = "doll_valkyriebig", IconName = "icon_doll_valkyriebig", NameKey = "$DollValkyrieBig", DescriptionKey = "$DollValkyrieBigDesc", DisplayName = "堕ちたヴァルキリーBIG人形", Description = "堕ちたヴァルキリーを模した大きな人形。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollPiggy", AssetName = "doll_piggy", IconName = "icon_doll_piggy", NameKey = "$DollPiggy", DescriptionKey = "$DollPiggyDesc", DisplayName = "ウリ坊のぬいぐるみ", Description = "かわいいウリ坊のぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollCat", AssetName = "doll_cat", IconName = "icon_doll_cat", NameKey = "$DollCat", DescriptionKey = "$DollCatDesc", DisplayName = "ねこのぬいぐるみ", Description = "ねこのぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollCatBig", AssetName = "doll_catbig", IconName = "icon_doll_catbig", NameKey = "$DollCatBig", DescriptionKey = "$DollCatBigDesc", DisplayName = "ねこのBIGぬいぐるみ", Description = "ねこの大きなぬいぐるみ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollSilverArmor", AssetName = "doll_silverarmor", IconName = "icon_doll_silverarmor", NameKey = "$DollSilverArmor", DescriptionKey = "$DollSilverArmorDesc", DisplayName = "銀装備の戦士のぬいぐるみ", Description = "銀装備かっこいいよね。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollSilverArmorBig", AssetName = "doll_silverarmorbig", IconName = "icon_doll_silverarmorbig", NameKey = "$DollSilverArmorBig", DescriptionKey = "$DollSilverArmorBigDesc", DisplayName = "銀装備の戦士のBIGぬいぐるみ", Description = "銀装備かっこいいよね。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollSakey", AssetName = "doll_sakey", IconName = "icon_doll_sakey", NameKey = "$DollSakey", DescriptionKey = "$DollSakeyDesc", DisplayName = "女の子のぬいぐるみ", Description = "膝ペタ座り", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollSakeyBig", AssetName = "doll_sakeybig", IconName = "icon_doll_sakeybig", NameKey = "$DollSakeyBig", DescriptionKey = "$DollSakeyBigDesc", DisplayName = "女の子のBIGぬいぐるみ", Description = "膝ペタ座り", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "DollStone", AssetName = "doll_stone", IconName = "icon_doll_stone", NameKey = "$DollStone", DescriptionKey = "$DollStoneDesc", DisplayName = "石のぬいぐるみ", Description = "海外では人気らしいアレっぽいやつ。", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollHiryu", AssetName = "doll_hiryu", IconName = "icon_doll_hiryu", NameKey = "$DollHiryu", DescriptionKey = "$DollHiryuDesc", DisplayName = "男の子のぬいぐるみ", Description = "ツノ付き男の子のぬいぐるみ", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollHimarin", AssetName = "doll_himarin", IconName = "icon_doll_himarin", NameKey = "$DollHimarin", DescriptionKey = "$DollHimarinDesc", DisplayName = "ひまりんのぬいぐるみ", Description = "バーテン姿のぬいぐるみ", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "DollHimarinBig", AssetName = "doll_himarinbig", IconName = "icon_doll_himarinbig", NameKey = "$DollHimarinBig", DescriptionKey = "$DollHimarinBigDesc", DisplayName = "ひまりんのBIGぬいぐるみ", Description = "バーテン姿のぬいぐるみ", Category = "Doll", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "HobbyDiscoball", AssetName = "hobby_discoball", IconName = "icon_hobbydiscoball", NameKey = "$HobbyDiscoball", DescriptionKey = "$HobbyDiscoballDesc", DisplayName = "ミラーボール", Description = "パーティーピーポー。", Category = "Hobby", Material = "Stone", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "HobbyTank1", AssetName = "hobby_tank1", IconName = "icon_hobbytank1", NameKey = "$HobbyTank1", DescriptionKey = "$HobbyTank1Desc", DisplayName = "ミリタリーフィギュア", Description = "小さな飾り。", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyGamepad1", AssetName = "hobby_gamepad1", IconName = "icon_hobbygamepad1", NameKey = "$HobbyGamepad1", DescriptionKey = "$HobbyGamepad1Desc", DisplayName = "ゲームのコントローラー", Description = "ゲームには欠かせない。", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "HobbyGamepad2", AssetName = "hobby_gamepad2", IconName = "icon_hobbygamepad2", NameKey = "$HobbyGamepad2", DescriptionKey = "$HobbyGamepad2Desc", DisplayName = "ゲームのコントローラー", Description = "ボタン表記に混乱する。", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "HobbyGame1", AssetName = "hobby_game1", IconName = "icon_hobbygame1", NameKey = "$HobbyGame1", DescriptionKey = "$HobbyGame1Desc", DisplayName = "ゲーム1", Description = "ゲームコンソール機", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyGame2", AssetName = "hobby_game2", IconName = "icon_hobbygame2", NameKey = "$HobbyGame2", DescriptionKey = "$HobbyGame2Desc", DisplayName = "ゲーム2", Description = "ゲームコンソール機", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyGame3", AssetName = "hobby_game3", IconName = "icon_hobbygame3", NameKey = "$HobbyGame3", DescriptionKey = "$HobbyGame3Desc", DisplayName = "ゲーム3", Description = "ゲームコンソール機", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyGame4", AssetName = "hobby_game4", IconName = "icon_hobbygame4", NameKey = "$HobbyGame4", DescriptionKey = "$HobbyGame4Desc", DisplayName = "ゲーム4", Description = "ゲームコンソール機", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyGame5", AssetName = "hobby_game5", IconName = "icon_hobbygame5", NameKey = "$HobbyGame5", DescriptionKey = "$HobbyGame5Desc", DisplayName = "ゲーム5", Description = "ゲームコンソール機", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyHeadset1", AssetName = "hobby_headset1", IconName = "icon_hobbyheadset1", NameKey = "$HobbyHeadset1", DescriptionKey = "$HobbyHeadset1Desc", DisplayName = "猫耳ヘッドホン", Description = "猫耳ヘッドセット。ゲーマー向け。", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "HobbyHeadset2", AssetName = "hobby_headset2", IconName = "icon_hobbyheadset2", NameKey = "$HobbyHeadset2", DescriptionKey = "$HobbyHeadset2Desc", DisplayName = "ゲーミング用ヘッドセット", Description = "マイク付きヘッドセット。ゲーマー向け。", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "HobbyKeyblue", AssetName = "hobby_keyblue", IconName = "icon_hobbykeyblue", NameKey = "$HobbyKeyblue", DescriptionKey = "$HobbyKeyblueDesc", DisplayName = "PC用キーボード(青)", Description = "青色のキーボード", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyKeygreen", AssetName = "hobby_keygreen", IconName = "icon_hobbykeygreen", NameKey = "$HobbyKeygreen", DescriptionKey = "$HobbyKeygreenDesc", DisplayName = "PC用キーボード(緑)", Description = "緑色のキーボード", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyKeypink", AssetName = "hobby_keypink", IconName = "icon_hobbykeypink", NameKey = "$HobbyKeypink", DescriptionKey = "$HobbyKeypinkDesc", DisplayName = "PC用キーボード(ピンク)", Description = "ピンク色のキーボード", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyKeypurple", AssetName = "hobby_keypurple", IconName = "icon_hobbykeypurple", NameKey = "$HobbyKeypurple", DescriptionKey = "$HobbyKeypurpleDesc", DisplayName = "PC用キーボード(パープル)", Description = "パープル色のキーボード", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyKeyred", AssetName = "hobby_keyred", IconName = "icon_hobbykeyred", NameKey = "$HobbyKeyred", DescriptionKey = "$HobbyKeyredDesc", DisplayName = "PC用キーボード(赤)", Description = "赤いキーボード", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyKeywhite", AssetName = "hobby_keywhite", IconName = "icon_hobbykeywhite", NameKey = "$HobbyKeywhite", DescriptionKey = "$HobbyKeywhiteDesc", DisplayName = "PC用キーボード(黒)", Description = "黒のキーボード", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyMouse", AssetName = "hobby_mouse", IconName = "icon_hobbymouse", NameKey = "$Hobbymouse", DescriptionKey = "$HobbymouseDesc", DisplayName = "PC用の無線マウス", Description = "動きが悪いとストレスになります。", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "HobbyPCblue", AssetName = "hobby_pcblue", IconName = "icon_hobbypcblue", NameKey = "$HobbyPCblue", DescriptionKey = "$HobbypcblueDesc", DisplayName = "ゲーミングPC(青)", Description = "時々エアダスターで掃除してあげましょう。", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyPCgreen", AssetName = "hobby_pcgreen", IconName = "icon_hobbypcgreen", NameKey = "$HobbyPCgreen", DescriptionKey = "$HobbypcgreenDesc", DisplayName = "ゲーミングPC(緑)", Description = "メモリの増設が高すぎて出来ない。", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyPCpink", AssetName = "hobby_pcpink", IconName = "icon_hobbypcpink", NameKey = "$HobbyPCpink", DescriptionKey = "$HobbypcpinkDesc", DisplayName = "ゲーミングPC(ピンク)", Description = "常に空き容量との闘い。", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyPCpurple", AssetName = "hobby_pcpurple", IconName = "icon_hobbypcpurple", NameKey = "$HobbyPCpurple", DescriptionKey = "$HobbypcpurpleDesc", DisplayName = "ゲーミングPC(パープル)", Description = "MOD入れ過ぎて重い。", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyPCred", AssetName = "hobby_pcred", IconName = "icon_hobbypcred", NameKey = "$HobbyPCred", DescriptionKey = "$HobbypcredDesc", DisplayName = "ゲーミングPC(赤)", Description = "更新後にOBSの音声周りのチェック。", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyPCwhite", AssetName = "hobby_pcwhite", IconName = "icon_hobbypcwhite", NameKey = "$HobbyPCwhite", DescriptionKey = "$HobbypcwhiteDesc", DisplayName = "ゲーミングPC(黒)", Description = "とりあえずSteam見ちゃう。", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyPCmoniter", AssetName = "hobby_pcmoniter", IconName = "icon_hobbypcmoniter", NameKey = "$Hobbypcmoniter", DescriptionKey = "$HobbypcmoniterDesc", DisplayName = "パソコンモニター", Description = "Valheimを起動中。", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyPCretro", AssetName = "hobby_pcretro", IconName = "icon_hobbypcretro", NameKey = "$Hobbypcretro", DescriptionKey = "$HobbypcretroDesc", DisplayName = "レトロなパソコン", Description = "98か95ぐらいかな?", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "HobbyPentab", AssetName = "hobby_pentab", IconName = "icon_hobbypentab", NameKey = "$HobbyPentab", DescriptionKey = "$HobbyPentabDesc", DisplayName = "ペンタブレット", Description = "絵描きには必須。", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "HobbyMicro", AssetName = "hobby_micro", IconName = "icon_hobbymicro", NameKey = "$HobbyMicro", DescriptionKey = "$HobbymicroDesc", DisplayName = "マイク", Description = "PC用マイク。", Category = "Hobby", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "FoodApple", AssetName = "food_apple", IconName = "icon_foodapple", NameKey = "$FoodApple", DescriptionKey = "$FoodappleDesc", DisplayName = "りんご箱", Description = "青りんごの入った箱。", Category = "Foods", Material = "Raspberry", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "FoodLafrance", AssetName = "food_lafrance", IconName = "icon_foodlafrance", NameKey = "$FoodLafrance", DescriptionKey = "$FoodlafranceDesc", DisplayName = "洋ナシの箱", Description = "洋ナシの入った箱。", Category = "Foods", Material = "Raspberry", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "FoodBerryBowl", AssetName = "food_berrybowl", IconName = "icon_foodberrybowl", NameKey = "$FoodBerryBowl", DescriptionKey = "$FoodBerryBowlDesc", DisplayName = "ベリーボール", Description = "ミックスベリーの入ったボウル。", Category = "Foods", Material = "Raspberry", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "FoodStrawberry", AssetName = "food_strawberry", IconName = "icon_foodstrawberry", NameKey = "$FoodStrawberry", DescriptionKey = "$FoodStrawberryDesc", DisplayName = "いちご", Description = "赤いいちご。", Category = "Foods", Material = "Raspberry", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenFlowerpot1", AssetName = "garden_flowerpot1", IconName = "icon_gardenflowerpot1", NameKey = "$GardenFlowerpot1", DescriptionKey = "$GardenFlowerpot1Desc", DisplayName = "植木鉢1", Description = "植物を植える鉢", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "GardenFlowerpot2", AssetName = "garden_flowerpot2", IconName = "icon_gardenflowerpot2", NameKey = "$GardenFlowerpot2", DescriptionKey = "$GardenFlowerpot2Desc", DisplayName = "植木鉢2", Description = "植物を植える鉢", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "GardenFlowerpot3", AssetName = "garden_flowerpot3", IconName = "icon_gardenflowerpot3", NameKey = "$GardenFlowerpot3", DescriptionKey = "$GardenFlowerpot3Desc", DisplayName = "植木鉢3", Description = "植物を植える鉢", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "GardenStrawberry", AssetName = "garden_strawberry", IconName = "icon_gardenstrawberry", NameKey = "$GardenStrawberry", DescriptionKey = "$GardenStrawberryDesc", DisplayName = "いちご", Description = "赤いいちご", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenChristmasRose1", AssetName = "garden_christmasrose1", IconName = "icon_gardenchristmasrose1", NameKey = "$GardenChristmasRose1", DescriptionKey = "$GardenChristmasRose1Desc", DisplayName = "クリスマスローズ(白)", Description = "冬に咲く人気のお花。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenChristmasRose2", AssetName = "garden_christmasrose2", IconName = "icon_gardenchristmasrose2", NameKey = "$GardenChristmasRose2", DescriptionKey = "$GardenChristmasRose2Desc", DisplayName = "クリスマスローズ(ピンク)", Description = "冬に咲く人気のお花。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenChristmasRose3", AssetName = "garden_christmasrose3", IconName = "icon_gardenchristmasrose3", NameKey = "$GardenChristmasRose3", DescriptionKey = "$GardenChristmasRose3Desc", DisplayName = "クリスマスローズ(多色)", Description = "冬に咲く人気のお花。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenCyclamen1", AssetName = "garden_cyclamen1", IconName = "icon_gardencyclamen1", NameKey = "$GardenCyclamen1", DescriptionKey = "$GardenCyclamen1Desc", DisplayName = "ガーデンシクラメン(赤)", Description = "外に植えるのに適したシクラメン。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenCyclamen2", AssetName = "garden_cyclamen2", IconName = "icon_gardencyclamen2", NameKey = "$GardenCyclamen2", DescriptionKey = "$GardenCyclamen2Desc", DisplayName = "ガーデンシクラメン(ピンク)", Description = "外に植えるのに適したシクラメン。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenGlobeamaranth", AssetName = "garden_globeamaranth", IconName = "icon_gardenglobeamaranth", NameKey = "$GardenGlobeamaranth", DescriptionKey = "$GardenGlobeamaranthDesc", DisplayName = "千日紅", Description = "夏によく植えられる園芸花。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenHeuchera", AssetName = "garden_heuchera", IconName = "icon_gardenheuchera", NameKey = "$GardenHeuchera", DescriptionKey = "$GardenHeucheraDesc", DisplayName = "ヒューケラ", Description = "人気のカラーリーフ。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenKasumisou", AssetName = "garden_kasumisou", IconName = "icon_gardenkasumisou", NameKey = "$GardenKasumisou", DescriptionKey = "$GardenKasumisouDesc", DisplayName = "カスミソウ", Description = "ピンク色の園芸向けのカスミソウ。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "GardenKasumisou2", AssetName = "garden_kasumisou2", IconName = "icon_gardenkasumisou2", NameKey = "$GardenKasumisou2", DescriptionKey = "$GardenKasumisou2Desc", DisplayName = "カスミソウ(白)", Description = "白い小花。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenLavender", AssetName = "garden_lavender", IconName = "icon_gardenlavender", NameKey = "$GardenLavender", DescriptionKey = "$GardenLavenderDesc", DisplayName = "ラベンダー", Description = "装飾用のラベンダー。良い香り。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenOrnamentKale", AssetName = "garden_ornamentkale", IconName = "icon_gardenornamentkale", NameKey = "$GardenOrnamentKale", DescriptionKey = "$GardenOrnamentKaleDesc", DisplayName = "葉ボタン", Description = "冬の定番の園芸草花の1つ。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenPrimrose1", AssetName = "garden_primrose1", IconName = "icon_gardenprimrose1", NameKey = "$GardenPrimrose1", DescriptionKey = "$GardenPrimrose1Desc", DisplayName = "プリムラ(ピンク)", Description = "冬から春にかけて人気の園芸草花", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenPrimrose2", AssetName = "garden_primrose2", IconName = "icon_gardenprimrose2", NameKey = "$GardenPrimrose2", DescriptionKey = "$GardenPrimrose2Desc", DisplayName = "プリムラ(黄色)", Description = "冬から春にかけて人気の園芸草花。黄色はなぜか良い香りがする。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenPrimrose3", AssetName = "garden_primrose3", IconName = "icon_gardenprimrose3", NameKey = "$GardenPrimrose3", DescriptionKey = "$GardenPrimrose3Desc", DisplayName = "プリムラ(紫)", Description = "冬から春に咲く花", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenPrimrose4", AssetName = "garden_primrose4", IconName = "icon_gardenprimrose4", NameKey = "$GardenPrimrose4", DescriptionKey = "$GardenPrimrose4Desc", DisplayName = "プリムラ(薄ピンク)", Description = "冬から春に咲く花", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenTulip1", AssetName = "garden_tulip1", IconName = "icon_gardentulip1", NameKey = "$GardenTulip1", DescriptionKey = "$GardenTulip1Desc", DisplayName = "チューリップ(赤)", Description = "春先に咲く花", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenTulip2", AssetName = "garden_tulip2", IconName = "icon_gardentulip2", NameKey = "$GardenTulip2", DescriptionKey = "$GardenTulip2Desc", DisplayName = "チューリップ(オレンジ)", Description = "春先に咲く花", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenTulip3", AssetName = "garden_tulip3", IconName = "icon_gardentulip3", NameKey = "$GardenTulip3", DescriptionKey = "$GardenTulip3Desc", DisplayName = "チューリップ(ピンク)", Description = "春先に咲く花", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenLeaf", AssetName = "garden_leaf", IconName = "icon_gardenleaf", NameKey = "$GardenLeaf", DescriptionKey = "$GardenLeafDesc", DisplayName = "シュガーバイン", Description = "ツル性の葉", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenSilverleaf", AssetName = "garden_silverleaf", IconName = "icon_gardensilverleaf", NameKey = "$GardenSilverleaf", DescriptionKey = "$GardenSilverleafDesc", DisplayName = "シルバーリーフ", Description = "寄せ植えで映えるシルバーリーフ。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 0 }, new ClutterItemData { PrefabName = "GardenPoinsettia", AssetName = "garden_poinsettia", IconName = "icon_gardenpoinsettia", NameKey = "$GardenPoinsettia", DescriptionKey = "$GardenPoinsettiaDesc", DisplayName = "ポインセチア", Description = "クリスマスシーズンによく出回る。実は花に見える部分は花ではない。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "GardenSakuraBonsai", AssetName = "garden_sakurabonsai", IconName = "icon_gardensakurabonsai", NameKey = "$GardenSakuraBonsai", DescriptionKey = "$GardenSakuraBonsaiDesc", DisplayName = "一才桜", Description = "小さい桜の園芸品種。可愛いサイズ。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "GardenYoseue1", AssetName = "garden_yoseue1", IconName = "icon_gardenyoseue1", NameKey = "$GardenYoseue1", DescriptionKey = "$GardenYoseue1Desc", DisplayName = "コリウスの寄せ植え", Description = "秋に黄葉するコリウスの鉢植え", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "GardenYoseue2", AssetName = "garden_yoseue2", IconName = "icon_gardenyoseue2", NameKey = "$GardenYoseue2", DescriptionKey = "$GardenYoseue2Desc", DisplayName = "バラ咲きプリムラの寄せ植え", Description = "冬向けの寄せ植え。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "GardenRanunculus", AssetName = "garden_ranunculus", IconName = "icon_gardenranunculus", NameKey = "$GardenRanunculus", DescriptionKey = "$GardenRanunculusDesc", DisplayName = "ラナンキュラス", Description = "バラのような花弁の園芸草花。球根は戻してから植える。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "GardenRose", AssetName = "garden_rose", IconName = "icon_gardenrose", NameKey = "$GardenRose", DescriptionKey = "$GardenroseDesc", DisplayName = "バラの花瓶", Description = "赤いバラの花瓶。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "GardenKinmokusei", AssetName = "garden_kinmokusei", IconName = "icon_gardenkinmokusei", NameKey = "$GardenKinmokusei", DescriptionKey = "$Gardenkinmokusei3Desc", DisplayName = "金木犀の鉢植え", Description = "秋には良い香りがする。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "GardenPlant", AssetName = "garden_plant", IconName = "icon_gardenplant", NameKey = "$GardenPlant", DescriptionKey = "$GardenplantDesc", DisplayName = "ヤシの鉢植え", Description = "室内観葉植物。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "GardenPlant2", AssetName = "garden_plant2", IconName = "icon_gardenplant2", NameKey = "$GardenPlant2", DescriptionKey = "$Gardenplant2Desc", DisplayName = "グリーン鉢植え", Description = "室内観葉植物。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "GardenPlant3", AssetName = "garden_plant3", IconName = "icon_gardenplant3", NameKey = "$GardenPlant3", DescriptionKey = "$Gardenplant3Desc", DisplayName = "サボテンの鉢植え", Description = "室内観葉植物。", Category = "Garden", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "OtherTatami", AssetName = "other_tatami", IconName = "icon_othertatami", NameKey = "$OtherTatami", DescriptionKey = "$OtherTatamiDesc", DisplayName = "たたみ", Description = "昔ながらの日本の家屋の床。", Category = "Other", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "OtherSign1", AssetName = "other_sign1", IconName = "icon_othersign1", NameKey = "$OtherSign1", DescriptionKey = "$OtherSign1Desc", DisplayName = "看板1 イノシシ", Description = "壁付け看板", Category = "Other", Material = "Wood", Amount = 1 }, new ClutterItemData { PrefabName = "OtherSign2", AssetName = "other_sign2", IconName = "icon_othersign2", NameKey = "$OtherSign2", DescriptionKey = "$OtherSign2Desc", DisplayName = "看板2 ネック", Description = "壁付け看板", Category = "Other", Material = "Wood", Amount = 1 }, new ClutterItemData { PrefabName = "OtherSign3", AssetName = "other_sign3", IconName = "icon_othersign3", NameKey = "$OtherSign3", DescriptionKey = "$OtherSign3Desc", DisplayName = "看板3 オオカミ", Description = "壁付け看板", Category = "Other", Material = "Wood", Amount = 1 }, new ClutterItemData { PrefabName = "OtherSign4", AssetName = "other_sign4", IconName = "icon_othersign4", NameKey = "$OtherSign4", DescriptionKey = "$OtherSign4Desc", DisplayName = "看板4 ロックス", Description = "壁付け看板", Category = "Other", Material = "Wood", Amount = 1 }, new ClutterItemData { PrefabName = "OtherSign5", AssetName = "other_sign5", IconName = "icon_othersign5", NameKey = "$OtherSign5", DescriptionKey = "$OtherSign5Desc", DisplayName = "看板5 アスクスヴィン", Description = "壁付け看板", Category = "Other", Material = "Wood", Amount = 1 }, new ClutterItemData { PrefabName = "OtherSign6", AssetName = "other_sign6", IconName = "icon_othersign6", NameKey = "$OtherSign6", DescriptionKey = "$OtherSign6Desc", DisplayName = "看板6 Noトロル", Description = "壁付け看板", Category = "Other", Material = "Wood", Amount = 1 }, new ClutterItemData { PrefabName = "OtherBirikensan", AssetName = "other_birikensan", IconName = "icon_otherbirikensan", NameKey = "$OtherBirikensan", DescriptionKey = "$OtherBirikensanDesc", DisplayName = "ビリケンさん(ミニ)", Description = "小さいビリケンさん。気軽に飾れる。", Category = "Other", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "OtherBirikensanBig", AssetName = "other_birikensanbig", IconName = "icon_otherbirikensanbig", NameKey = "$OtherBirikensanBig", DescriptionKey = "$OtherBirikensanBigDesc", DisplayName = "ビリケンさん", Description = "通天閣に登らなくても実はあちこちある。足の裏をなでなでしよう。", Category = "Other", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "OtherKadomatsu", AssetName = "other_kadomatsu", IconName = "icon_otherkadomatsu", NameKey = "$OtherKadomatsu", DescriptionKey = "$OtherKadomatsuDesc", DisplayName = "角松(ミニ)", Description = "小型の角松。気軽に飾れる。", Category = "Other", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "OtherKadomatsuBig", AssetName = "other_kadomatsubig", IconName = "icon_otherkadomatsubig", NameKey = "$OtherKadomatsuBig", DescriptionKey = "$OtherKadomatsuBigDesc", DisplayName = "角松", Description = "日本の新年の飾り物。もはやコンビニでもどこでも飾られる。", Category = "Other", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "OtherManekineko", AssetName = "other_manekineko", IconName = "icon_othermanekineko", NameKey = "$OtherManekineko", DescriptionKey = "$OtherManekinekoDesc", DisplayName = "招き猫(ミニ)", Description = "小さめの招き猫。気軽に飾れる。", Category = "Other", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "OtherManekinekoBig", AssetName = "other_manekinekobig", IconName = "icon_othermanekinekobig", NameKey = "$OtherManekinekoBig", DescriptionKey = "$OtherManekinekoBigDesc", DisplayName = "招き猫", Description = "日本のお店に飾られる伝統的な猫の置物。", Category = "Other", Material = "Wood", Amount = 1, Comfort = 2 }, new ClutterItemData { PrefabName = "OtherTanuki", AssetName = "other_tanuki", IconName = "icon_othertanuki", NameKey = "$OtherTanuki", DescriptionKey = "$OtherTanukiDesc", DisplayName = "たぬき", Description = "日本のお店に飾られる伝統的な狸の像。", Category = "Other", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "OtherHachiko", AssetName = "other_hachiko", IconName = "icon_otherhachiko", NameKey = "$OtherHachiko", DescriptionKey = "$OtherHachikoDesc", DisplayName = "ハチ公", Description = "待ってる犬の像。", Category = "Other", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "OtherSimenawa", AssetName = "other_simenawa", IconName = "icon_othersimenawa", NameKey = "$OtherSimenawa", DescriptionKey = "$OtherSimenawaDesc", DisplayName = "しめ縄", Description = "日本の年末年始に飾るもの", Category = "Other", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "OtherOpenflower", AssetName = "other_openflower", IconName = "icon_otheropenflower", NameKey = "$OtherOpenflower", DescriptionKey = "$OtherOpenflowerDesc", DisplayName = "開店の花", Description = "お店がオープンするときに大体飾られる。", Category = "Other", Material = "Wood", Amount = 1, Comfort = 1 }, new ClutterItemData { PrefabName = "OtherLocker", AssetName = "other_locker", IconName = "icon_otherlocker", NameKey = "$OtherLocker", DescriptionKey = "$OtherLockerDesc", DisplayName = "ロッカー", Description = "荷物入れ。", Category = "Other", Material = "Wood", Amount = 1, Comfort = 1 } }; private static ConfigEntry<bool> enableClutterTool; private Harmony categoryHarmony; private static bool categoryRefreshNeeded; private void Awake() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Expected O, but got Unknown //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Expected O, but got Unknown ((BaseUnityPlugin)this).Logger.LogInfo((object)"[Sakey's Cozy Clutter] 起動しました。"); categoryHarmony = new Harmony("com.sakey.clutter.CategoryFix"); categoryHarmony.PatchAll(); enableClutterTool = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "EnableClutterTool", true, "家具作成ツールを有効にするかどうか"); string text = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "cozyclutter"); ((BaseUnityPlugin)this).Logger.LogInfo((object)("[Sakey's Cozy Clutter] AssetBundle読み込み開始: " + text)); try { AssetBundle = AssetUtils.LoadAssetBundle(text); } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("[Sakey's Cozy Clutter] AssetBundleの読み込み中に例外が発生しました:\n" + ex)); AssetBundle = null; } if ((Object)(object)AssetBundle == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)("[Sakey's Cozy Clutter] AssetBundleの読み込みに失敗しました:\n" + text)); return; } ((BaseUnityPlugin)this).Logger.LogInfo((object)"[Sakey's Cozy Clutter] AssetBundle loaded: cozyclutter"); try { PieceManager instance = PieceManager.Instance; PieceTableConfig val = new PieceTableConfig(); val.CanRemovePieces = true; val.UseCategories = false; val.UseCustomCategories = true; val.CustomCategories = new string[5] { "Doll", "Hobby", "Foods", "Garden", "Other" }; instance.AddPieceTable(new CustomPieceTable("SakeysClutterTable", val)); ((BaseUnityPlugin)this).Logger.LogInfo((object)"[Sakey's Cozy Clutter] 専用PieceTableを登録しました。"); } catch (Exception ex2) { ((BaseUnityPlugin)this).Logger.LogError((object)("[Sakey's Cozy Clutter] PieceTable登録中に例外が発生しました:\n" + ex2)); return; } LocalizationManager.OnLocalizationAdded += AddCustomLocalizations; AddCustomLocalizations(); PrefabManager.OnPrefabsRegistered += OnPrefabsRegistered; ((BaseUnityPlugin)this).Logger.LogInfo((object)"[Sakey's Cozy Clutter] 初期化処理が完了しました。"); } private void OnDestroy() { PrefabManager.OnPrefabsRegistered -= OnPrefabsRegistered; LocalizationManager.OnLocalizationAdded -= AddCustomLocalizations; if (categoryHarmony != null) { categoryHarmony.UnpatchSelf(); categoryHarmony = null; } categoryRefreshNeeded = false; AssetBundle = null; ((BaseUnityPlugin)this).Logger.LogInfo((object)"[Sakey's Cozy Clutter] 終了しました。"); } private void AddCustomLocalizations() { try { CustomLocalization localization = LocalizationManager.Instance.GetLocalization(); string text = "Japanese"; localization.AddTranslation(ref text, new Dictionary<string, string> { { "SakeysClutterTool", "ツール CozyTool Stick" }, { "SakeysClutterToolDesc", "Sakey's Cozy Clutterのツール。雑多な家具や飾りを設置するための道具。" }, { "DollDverger", "ドヴェルグのぬいぐるみ" }, { "DollDvergerDesc", "ドヴェルグを模したかわいいぬいぐるみ。" }, { "DollDvergerBig", "ドヴェルグのBIGぬいぐるみ" }, { "DollDvergerBigDesc", "ドヴェルグを模した大きなぬいぐるみ。" }, { "DollTroll", "トロルのぬいぐるみ" }, { "DollTrollDesc", "トロルを模したかわいいぬいぐるみ。" }, { "DollTrollBig", "トロルのBIGぬいぐるみ" }, { "DollTrollBigDesc", "トロルを模した大きいぬいぐるみ。" }, { "DollRion", "りおんぬいぐるみ" }, { "DollRionDesc", "Vtuber幸島梨苑のぬいぐるみ。https://www.youtube.com/@kojima-rion/featured" }, { "DollRionBig", "りおんのBIGぬいぐるみ" }, { "DollRionBigDesc", "Vtuber幸島梨苑のBIGぬいぐるみ。https://www.youtube.com/@kojima-rion/featured" }, { "DollEikthyr", "エイクスュルのぬいぐるみ" }, { "DollEikthyrDesc", "エイクスュルを模したかわいいぬいぐるみ。" }, { "DollEikthyrBig", "エイクスュルのBIGぬいぐるみ" }, { "DollEikthyrBigDesc", "エイクスュルを模した大きいぬいぐるみ。" }, { "DollGoblin", "フーリングのぬいぐるみ" }, { "DollGoblinDesc", "フーリングを模したかわいいぬいぐるみ。" }, { "DollGoblinBig", "フーリングのBIGぬいぐるみ" }, { "DollGoblinBigDesc", "フーリングを模した大きいぬいぐるみ。" }, { "DollGreyling", "グレイリングのぬいぐるみ" }, { "DollGreylingDesc", "グレイリングを模したかわいいぬいぐるみ。" }, { "DollNeck", "ネックのぬいぐるみ" }, { "DollNeckDesc", "星2ネックを模したかわいいぬいぐるみ。" }, { "DollNeckBig", "ネックのBIGぬいぐるみ" }, { "DollNeckBigDesc", "星2ネックを模した大きいぬいぐるみ。" }, { "DollSheep", "おやすみ羊のぬいぐるみ" }, { "DollSheepDesc", "おやすみ羊のかわいいぬいぐるみ。" }, { "DollModer", "モデルのぬいぐるみ" }, { "DollModerDesc", "モデルを模したかわいいぬいぐるみ。" }, { "DollModerBig", "モデルのBIGぬいぐるみ" }, { "DollModerBigDesc", "モデルを模した大きいぬいぐるみ。" }, { "DollElder", "長老のぬいぐるみ" }, { "DollElderDesc", "長老を模したかわいいぬいぐるみ。" }, { "DollElderBig", "長老のBIGぬいぐるみ" }, { "DollElderBigDesc", "長老を模した大きいぬいぐるみ。" }, { "DollLox", "ロックスのぬいぐるみ" }, { "DollLoxDesc", "ロックスを模したかわいいぬいぐるみ" }, { "DollLoxBig", "ロックスのBIGぬいぐるみ" }, { "DollLoxBigDesc", "ロックスを模した大きいぬいぐるみ" }, { "DollHildir", "ヒルディルのぬいぐるみ" }, { "DollHildirDesc", "ヒルディルを模したかわいいぬいぐるみ" }, { "DollHildirBig", "ヒルディルのBIGぬいぐるみ" }, { "DollHildirBigDesc", "ヒルディルを模した大きいぬいぐるみ" }, { "DollDraugr", "ドラウグルのぬいぐるみ" }, { "DollDraugrDesc", "ドラウグルを模したかわいいぬいぐるみ。" }, { "DollDraugrBig", "ドラウグルのBIGぬいぐるみ" }, { "DollDraugrBigDesc", "ドラウグルを模した大きなぬいぐるみ。" }, { "DollGreyShaman", "灰色ドワーフのシャーマンのぬいぐるみ" }, { "DollGreyShamanDesc", "灰色ドワーフのシャーマンを模したかわいいぬいぐるみ。" }, { "DollGreyShamanBig", "灰色ドワーフのシャーマンのBIGぬいぐるみ" }, { "DollGreyShamanBigDesc", "灰色ドワーフのシャーマンを模した大きなぬいぐるみ。" }, { "DollGreyBrute", "灰色ドワーフの暴漢のぬいぐるみ" }, { "DollGreyBruteDesc", "灰色ドワーフの暴漢を模したかわいいぬいぐるみ。" }, { "DollGreyBruteBig", "灰色ドワーフの暴漢のBIGぬいぐるみ" }, { "DollGreyBruteBigDesc", "灰色ドワーフの暴漢を模した大きなぬいぐるみ。" }, { "DollValkyrie", "堕ちたヴァルキリー人形" }, { "DollValkyrieDesc", "堕ちたヴァルキリーを模した人形。" }, { "DollValkyrieBig", "堕ちたヴァルキリーBIG人形" }, { "DollValkyrieBigDesc", "堕ちたヴァルキリーを模した大きな人形。" }, { "DollCat", "猫のぬいぐるみ" }, { "DollCatDesc", "猫のぬいぐるみ。" }, { "DollCatBig", "猫のBIGぬいぐるみ" }, { "DollCatBigDesc", "おおきな猫のぬいぐるみ。" }, { "DollPiggy", "ウリ坊のぬいぐるみ" }, { "DollPiggyDesc", "かわいいウリ坊のぬいぐるみ。" }, { "DollSilverArmor", "銀装備の兵士のぬいぐるみ" }, { "DollSilverArmorDesc", "銀装備かっこいいよね。" }, { "DollSilverArmorBig", "銀装備の兵士のBIGぬいぐるみ" }, { "DollSilverArmorBigDesc", "銀装備かっこいいよね。" }, { "DollSakey", "女の子のぬいぐるみ" }, { "DollSakeyDesc", "膝ペタ座りで無表情" }, { "DollSakeyBig", "女の子のBIGぬいぐるみ" }, { "DollSakeyBigDesc", "膝ペタ座りで無表情" }, { "DollHiryu", "男の子のぬいぐるみ" }, { "DollHiryuDesc", "デビルパーカーの男の子" }, { "DollStone", "ただの石のぬいぐるみ" }, { "DollStoneDesc", "海外でこういうの人気らしい…?" }, { "DollHimarin", "ひまりんのぬいぐるみ" }, { "DollHimarinDesc", "バーテン姿のぬいぐるみ" }, { "DollHimarinBig", "ひまりんのBIGぬいぐるみ" }, { "DollHimarinBigDesc", "大きいぬいぐるみ" }, { "HobbyDiscoball", "ディスコボール" }, { "HobbyDiscoballDesc", "ミラーボール" }, { "HobbyTank1", "ミリタリーフィギュア" }, { "HobbyTank1Desc", "のってきたぞ~!" }, { "HobbyGamepad1", "ゲームコントローラー" }, { "HobbyGamepad1Desc", "ゲーム用のコントローラー" }, { "HobbyGamepad2", "ゲームコントローラー" }, { "HobbyGamepad2Desc", "ゲーム用のコントローラー" }, { "HobbyHeadset1", "猫耳ヘッドホン" }, { "HobbyHeadset1Desc", "猫耳付きの飾りヘッドセット" }, { "HobbyHeadset2", "マイク付きゲーミングヘッドセット" }, { "HobbyHeadset2Desc", "マルチプレイやボイスチャットには欠かせない" }, { "HobbyKeyblue", "PC用キーボード(青)" }, { "HobbyKeyblueDesc", "青色のキーボード" }, { "HobbyKeygreen", "PC用キーボード(緑)" }, { "HobbyKeygreenDesc", "緑色のキーボード" }, { "HobbyKeypink", "PC用キーボード(ピンク)" }, { "HobbyKeypinkDesc", "ピンク色のキーボード" }, { "HobbyKeypurple", "PC用キーボード(パープル)" }, { "HobbyKeypurpleDesc", "紫色のキーボード" }, { "HobbyKeyred", "PC用キーボード(赤)" }, { "HobbyKeyredDesc", "赤いキーボード" }, { "HobbyKeywhite", "PC用キーボード(黒)" }, { "HobbyKeywhiteDesc", "黒のキーボード" }, { "Hobbymouse", "PC用のマウス" }, { "HobbymouseDesc", "動きが悪いとストレスになります。" }, { "HobbyMicro", "マイク" }, { "HobbymicroDesc", "PC用マイク" }, { "HobbyPCblue", "ゲーミングPC(青)" }, { "HobbypcblueDesc", "時々エアダスターで掃除してあげましょう。" }, { "HobbyPCgreen", "ゲーミングPC(緑)" }, { "HobbypcgreenDesc", "メモリの増設が高すぎて出来ない。" }, { "HobbyPCpink", "ゲーミングPC(ピンク)" }, { "HobbypcpinkDesc", "常に空き容量との闘い。" }, { "HobbyPCpurple", "ゲーミングPC(パープル)" }, { "HobbypcpurpleDesc", "MOD入れ過ぎて重い。" }, { "HobbyPCred", "ゲーミングPC(赤)" }, { "HobbypcredDesc", "更新後にOBSの音声周りのチェック" }, { "HobbyPCwhite", "ゲーミングPC(黒)" }, { "HobbypcwhiteDesc", "とりあえずSteam見ちゃう" }, { "Hobbypcmoniter", "パソコンモニター" }, { "HobbypcmoniterDesc", "Valheimを起動中" }, { "Hobbypcretro", "レトロなパソコン" }, { "HobbypcretroDesc", "98か95ぐらいかな?" }, { "HobbyPentab", "ペンタブレット" }, { "HobbyPentabDesc", "絵描きには必須" }, { "GardenChristmasRose1", "クリスマスローズ(白)" }, { "GardenChristmasRose1Desc", "冬に咲く人気のお花。" }, { "GardenChristmasRose2", "クリスマスローズ(ピンク)" }, { "GardenChristmasRose2Desc", "冬に咲く人気のお花。" }, { "GardenChristmasRose3", "クリスマスローズ(多色)" }, { "GardenChristmasRose3Desc", "冬に咲く人気のお花。" }, { "GardenCyclamen1", "ガーデンシクラメン(赤)" }, { "GardenCyclamen1Desc", "外に植えるのに適したシクラメン。" }, { "GardenCyclamen2", "ガーデンシクラメン(ピンク)" }, { "GardenCyclamen2Desc", "外に植えるのに適したシクラメン。" }, { "GardenFlowerpot1", "植木鉢1" }, { "GardenFlowerpot1Desc", "植物を植える鉢" }, { "GardenFlowerpot2", "植木鉢2" }, { "GardenFlowerpot2Desc", "植物を植える鉢" }, { "GardenFlowerpot3", "植木鉢3" }, { "GardenFlowerpot3Desc", "植物を植える鉢" }, { "GardenGlobeamaranth", "千日紅" }, { "GardenGlobeamaranthDesc", "夏によく植えられる園芸花。" }, { "GardenHeuchera", "ヒューケラ" }, { "GardenHeucheraDesc", "人気のカラーリーフ。" }, { "GardenKasumisou", "カスミソウ" }, { "GardenKasumisouDesc", "ピンク色の園芸向けのカスミソウ。" }, { "GardenLavender", "ラベンダー" }, { "GardenLavenderDesc", "装飾用のラベンダー。良い香り。" }, { "GardenOrnamentKale", "葉ボタン" }, { "GardenOrnamentKaleDesc", "冬の定番の園芸草花の1つ。" }, { "GardenPoinsettia", "ポインセチア" }, { "GardenPoinsettiaDesc", "クリスマスシーズンによく出回る。実は花に見える部分は花ではない。" }, { "GardenPrimrose1", "プリムラ(ピンク)" }, { "GardenPrimrose1Desc", "冬から春にかけて人気の園芸草花" }, { "GardenPrimrose2", "プリムラ(黄色)" }, { "GardenPrimrose2Desc", "冬から春にかけて人気の園芸草花。黄色はなぜか良い香りがする。" }, { "GardenRanunculus", "ラナンキュラス" }, { "GardenRanunculusDesc", "バラのような花弁の園芸草花。球根は戻してから植える。" }, { "GardenSakuraBonsai", "一才桜" }, { "GardenSakuraBonsaiDesc", "小さい桜の園芸品種。可愛いサイズ。" }, { "GardenSilverleaf", "シルバーリーフ" }, { "GardenSilverleafDesc", "寄せ植えで映えるシルバーリーフ。" }, { "GardenYoseue1", "コリウスの寄せ植え" }, { "GardenYoseue1Desc", "秋に黄葉するコリウスの鉢植え" }, { "GardenYoseue2", "バラ咲きプリムラの寄せ植え" }, { "GardenYoseue2Desc", "冬向けの寄せ植え。" }, { "OtherBirikensan", "ビリケンさん(ミニ)" }, { "OtherBirikensanDesc", "小さいビリケンさん。気軽に飾れる。" }, { "OtherBirikensanBig", "ビリケンさん" }, { "OtherBirikensanBigDesc", "通天閣に登らなくても実はあちこちある。足の裏をなでなでしよう。" }, { "OtherKadomatsu", "角松(ミニ)" }, { "OtherKadomatsuDesc", "小型の角松。気軽に飾れる。" }, { "OtherKadomatsuBig", "角松" }, { "OtherKadomatsuBigDesc", "日本の新年の飾り物。もはやコンビニでもどこでも飾られる。" }, { "OtherManekineko", "招き猫(ミニ)" }, { "OtherManekinekoDesc", "小さめの招き猫。気軽に飾れる。" }, { "OtherManekinekoBig", "招き猫" }, { "OtherManekinekoBigDesc", "日本のお店に飾られる伝統的な猫の置物。" }, { "OtherTanuki", "たぬき" }, { "OtherTanukiDesc", "日本のお店に飾られる伝統的な狸の像。" }, { "GardenStrawberry", "いちごの鉢植え" }, { "GardenStrawberryDesc", "赤いいちごの鉢植え。" }, { "GardenRose", "バラの鉢植え" }, { "GardenroseDesc", "バラの鉢植え" }, { "GardenPlant", "ヤシの鉢植え" }, { "GardenplantDesc", "室内観葉植物" }, { "GardenPlant2", "グリーンの鉢植え" }, { "Gardenplant2Desc", "室内観葉植物" }, { "GardenPlant3", "サボテンの鉢植え" }, { "Gardenplant3Desc", "室内観葉植物" }, { "GardenKinmokusei", "金木犀の鉢植え" }, { "GardenkinmokuseiDesc", "秋は良い香りがする" }, { "FoodBerryBowl", "ベリーボール" }, { "FoodBerryBowlDesc", "ミックスベリーの入ったボウル。" }, { "FoodStrawberry", "いちご" }, { "FoodStrawberryDesc", "赤いいちご。" }, { "FoodApple", "リンゴ" }, { "FoodappleDesc", "箱に入った青りんご" }, { "FoodLafrance", "洋ナシ" }, { "FoodlafranceDesc", "洋ナシの入ったカゴ" }, { "OtherTatami", "たたみ" }, { "OtherTatamiDesc", "日本の家屋の床" }, { "OtherTatamiBed", "寝られるたたみ" }, { "OtherTatamiBedDesc", "畳の上でそのまま寝られる、雑魚寝用のたたみ。" }, { "OtherSign1", "看板1イノシシ" }, { "OtherSign1Desc", "壁付けの看板" }, { "OtherSign2", "看板2 ネック" }, { "OtherSign2Desc", "壁付けの看板" }, { "OtherSign3", "看板3 オオカミ" }, { "OtherSign3Desc", "壁付けの看板" }, { "OtherSign4", "看板4 ロックス" }, { "OtherSign4Desc", "壁付けの看板" }, { "OtherSign5", "看板5 アスクスヴィン" }, { "OtherSign5Desc", "壁付けの看板" }, { "OtherSign6", "看板6 NOトロル" }, { "OtherSign6Desc", "壁付けの看板" }, { "GardenTulip1", "チューリップ(赤)" }, { "GardenTulip1Desc", "春先に咲く花" }, { "GardenTulip2", "チューリップ(オレンジ)" }, { "GardenTulip2Desc", "春先に咲く花" }, { "GardenTulip3", "チューリップ(ピンク)" }, { "GardenTulip3Desc", "春先に咲く花" }, { "GardenPrimrose3", "プリムラ(紫)" }, { "GardenPrimrose3Desc", "冬から春に咲く花" }, { "GardenPrimrose4", "プリムラ(薄ピンク)" }, { "GardenPrimrose4Desc", "冬から春に咲く花" }, { "GardenKasumisou2", "カスミソウ(白)" }, { "GardenKasumisou2Desc", "白い小花。" }, { "GardenLeaf", "シュガーバイン" }, { "GardenLeafDesc", "ツル性の葉" }, { "HobbyGame1", "ゲーム1" }, { "HobbyGame1Desc", "ゲームコンソール機" }, { "HobbyGame2", "ゲーム2" }, { "HobbyGame2Desc", "ゲームコンソール機" }, { "HobbyGame3", "ゲーム3" }, { "HobbyGame3Desc", "ゲームコンソール機" }, { "HobbyGame4", "ゲーム4" }, { "HobbyGame4Desc", "ゲームコンソール機" }, { "HobbyGame5", "ゲーム5" }, { "HobbyGame5Desc", "ゲームコンソール機" }, { "OtherHachiko", "ハチ公" }, { "OtherHachikoDesc", "待ってる犬の像。" }, { "OtherSimenawa", "しめ縄" }, { "OtherSimenawaDesc", "日本の年末年始に飾るもの" }, { "OtherOpenflower", "開店の花" }, { "OtherOpenflowerDesc", "お店がオープンするときに大体飾られる。" }, { "OtherLocker", "ロッカー" }, { "OtherLockerDesc", "荷物入れ。" }, { "OtherLockerBig", "ロッカー(大)" }, { "OtherLockerBigDesc", "大きめのロッカー。飾りとしても使いやすい。" }, { "jotunn_cat_doll", "Doll" }, { "jotunn_cat_hobby", "Hobby" }, { "jotunn_cat_foods", "Foods" }, { "jotunn_cat_garden", "Garden" }, { "jotunn_cat_other", "Other" } }); text = "English"; localization.AddTranslation(ref text, new Dictionary<string, string> { { "SakeysClutterTool", "CozyTool Stick" }, { "SakeysClutterToolDesc", "A tool for placing various decorative furniture and clutter. (Sakey's Cozy Clutter)" }, { "DollDverger", "Dvergr Plushie" }, { "DollDvergerDesc", "A cute plushie modeled after a Dvergr." }, { "DollDvergerBig", "Big Dvergr Plushie" }, { "DollDvergerBigDesc", "A large plushie modeled after a Dvergr." }, { "DollTroll", "Troll Plushie" }, { "DollTrollDesc", "A cute plushie modeled after a Troll." }, { "DollTrollBig", "Big Troll Plushie" }, { "DollTrollBigDesc", "A large plushie modeled after a Troll." }, { "DollRion", "Rion Plushie" }, { "DollRionDesc", "A cute plushie modeled after Japanese Vtuber Kojima Rion. https://www.youtube.com/@kojima-rion/featured" }, { "DollRionBig", "Rion BIG Plushie" }, { "DollRionBigDesc", "A large Rion plushie. Japanese Vtuber Kojima Rion. https://www.youtube.com/@kojima-rion/featured" }, { "DollGreyling", "Greyling Plushie" }, { "DollGreylingDesc", "A cute plushie modeled after a Greyling." }, { "DollGoblin", "Goblin Plushie" }, { "DollGoblinDesc", "A cute plushie modeled after a Goblin." }, { "DollGoblinBig", "Big Goblin Plushie" }, { "DollGoblinBigDesc", "A large plushie modeled after a Goblin." }, { "DollNeck", "Neck Plushie" }, { "DollNeckDesc", "A cute plushie modeled after a Neck." }, { "DollNeckBig", "Big Neck Plushie" }, { "DollNeckBigDesc", "A large plushie modeled after a Neck." }, { "DollEikthyr", "Eikthyr Plushie" }, { "DollEikthyrDesc", "A cute plushie modeled after Eikthyr." }, { "DollEikthyrBig", "Big Eikthyr Plushie" }, { "DollEikthyrBigDesc", "A large plushie modeled after Eikthyr." }, { "DollElder", "Elder Plushie" }, { "DollElderDesc", "A cute plushie modeled after the Elder." }, { "DollElderBig", "Big Elder Plushie" }, { "DollElderBigDesc", "A large plushie modeled after the Elder." }, { "DollModer", "Moder Plushie" }, { "DollModerDesc", "A cute plushie modeled after Moder." }, { "DollModerBig", "Big Moder Plushie" }, { "DollModerBigDesc", "A large plushie modeled after Moder." }, { "DollLox", "Lox Plushie" }, { "DollLoxDesc", "A cute plushie modeled after Lox." }, { "DollLoxBig", "Big Lox Plushie" }, { "DollLoxBigDesc", "A large plushie modeled after Lox." }, { "DollHildir", "Hildir Plushie" }, { "DollHildirDesc", "A cute plushie modeled after Hildir." }, { "DollHildirBig", "Big Hildir Plushie" }, { "DollHildirBigDesc", "A large plushie modeled after Hildir." }, { "DollSheep", "Sleep Sheep Plushie" }, { "DollSheepDesc", "A cute sleeping sheep plushie." }, { "DollDraugr", "Draugr Plushie" }, { "DollDraugrDesc", "A cute plushie modeled after a Draugr." }, { "DollDraugrBig", "Big Draugr Plushie" }, { "DollDraugrBigDesc", "A large plushie modeled after a Draugr." }, { "DollGreyShaman", "Grey Dwarf Shaman Plushie" }, { "DollGreyShamanDesc", "A cute plushie modeled after a Grey Dwarf Shaman." }, { "DollGreyShamanBig", "Big Grey Dwarf Shaman Plushie" }, { "DollGreyShamanBigDesc", "A large plushie modeled after a Grey Dwarf Shaman." }, { "DollGreyBrute", "Grey Dwarf Brute Plushie" }, { "DollGreyBruteDesc", "A cute plushie modeled after a Grey Dwarf Brute." }, { "DollGreyBruteBig", "Big Grey Dwarf Brute Plushie" }, { "DollGreyBruteBigDesc", "A large plushie modeled after a Grey Dwarf Brute." }, { "DollValkyrie", "Fallen Valkyrie Doll" }, { "DollValkyrieDesc", "A doll modeled after a Fallen Valkyrie." }, { "DollValkyrieBig", "Big Fallen Valkyrie Doll" }, { "DollValkyrieBigDesc", "A large doll modeled after a Fallen Valkyrie." }, { "DollPiggy", "Piglet Plushie" }, { "DollPiggyDesc", "A cute piglet plushie." }, { "DollCat", "Cat Doll" }, { "DollCatDesc", "A doll modeled after a Cat." }, { "DollCatBig", "Big Cat Doll" }, { "DollCatBigDesc", "A large doll modeled after a Cat." }, { "DollSilverArmor", "Silver Armor Warrior Plushie" }, { "DollSilverArmorDesc", "So Cool Armor! " }, { "DollSilverArmorBig", "Big Silver Armor Warrior Plushie" }, { "DollSilverArmorBigDesc", "So Cool Armor!" }, { "DollSakey", "Girl Plushie" }, { "DollSakeyDesc", "Girl Plushie" }, { "DollSakeyBig", "Big Girl Plushie" }, { "DollSakeyBigDesc", "Big Girl Plushie" }, { "DollHiryu", "Boy Plushie" }, { "DollHiryuDesc", "Boy Plushie" }, { "DollStone", "Rocky!?" }, { "DollStoneDesc", "like a Pet ROCK Plushie" }, { "DollHimarin", "Himarin Plushie" }, { "DollHimarinDesc", "Himarin Plushie" }, { "DollHimarinBig", "Big Himarin Plushie" }, { "DollHimarinBigDesc", "Big Himarin Plushie" }, { "HobbyDiscoball", "Disco Ball" }, { "HobbyDiscoballDesc", "Mirror ball" }, { "HobbyTank1", "Military Figure" }, { "HobbyTank1Desc", "Military figure" }, { "HobbyGamepad1", "Game Controller 1" }, { "HobbyGamepad1Desc", "Gaming controller" }, { "HobbyGamepad2", "Game Controller 2" }, { "HobbyGamepad2Desc", "Gaming controller" }, { "HobbyHeadset1", "Cat Ear Headphones" }, { "HobbyHeadset1Desc", "Decorative cat-ear headset" }, { "HobbyHeadset2", "Gaming Headset" }, { "HobbyHeadset2Desc", "Essential for multiplayer and voice chat" }, { "HobbyKeyblue", "PC Keyboard (Blue)" }, { "HobbyKeyblueDesc", "Blue keyboard" }, { "HobbyKeygreen", "PC Keyboard (Green)" }, { "HobbyKeygreenDesc", "Green keyboard" }, { "HobbyKeypink", "PC Keyboard (Pink)" }, { "HobbyKeypinkDesc", "Pink keyboard" }, { "HobbyKeypurple", "PC Keyboard (Purple)" }, { "HobbyKeypurpleDesc", "Purple keyboard" }, { "HobbyKeyred", "PC Keyboard (Red)" }, { "HobbyKeyredDesc", "Red keyboard" }, { "HobbyKeywhite", "PC Keyboard (Black & White)" }, { "HobbyKeywhiteDesc", "Black and white keyboard" }, { "Hobbymouse", "PC Mouse" }, { "HobbymouseDesc", "A PC mouse" }, { "HobbyMicro", "Microphone" }, { "HobbymicroDesc", "PC microphone" }, { "HobbyPCblue", "Gaming PC (Blue)" }, { "HobbypcblueDesc", "Gaming PC" }, { "HobbyPCgreen", "Gaming PC (Green)" }, { "HobbypcgreenDesc", "Gaming PC" }, { "HobbyPCpink", "Gaming PC (Pink)" }, { "HobbypcpinkDesc", "Gaming PC" }, { "HobbyPCpurple", "Gaming PC (Purple)" }, { "HobbypcpurpleDesc", "Gaming PC" }, { "HobbyPCred", "Gaming PC (Red)" }, { "HobbypcredDesc", "Gaming PC" }, { "HobbyPCwhite", "Gaming PC (Black & White)" }, { "HobbypcwhiteDesc", "Gaming PC" }, { "Hobbypcmoniter", "PC Monitor" }, { "HobbypcmoniterDesc", "PC Monitor" }, { "Hobbypcretro", "Retro PC" }, { "HobbypcretroDesc", "Maybe Windows 98 or 95?" }, { "HobbyPentab", "Pen Tablet" }, { "HobbyPentabDesc", "Essential for drawing" }, { "GardenChristmasRose1", "Christmas Rose (White)" }, { "GardenChristmasRose1Desc", "A popular flower that blooms in winter." }, { "GardenChristmasRose2", "Christmas Rose (Pink)" }, { "GardenChristmasRose2Desc", "A popular flower that blooms in winter." }, { "GardenChristmasRose3", "Christmas Rose (Multi-color)" }, { "GardenChristmasRose3Desc", "A popular flower that blooms in winter." }, { "GardenCyclamen1", "Garden Cyclamen (Red)" }, { "GardenCyclamen1Desc", "A cyclamen suitable for planting outdoors." }, { "GardenCyclamen2", "Garden Cyclamen (Pink)" }, { "GardenCyclamen2Desc", "A cyclamen suitable for planting outdoors." }, { "GardenFlowerpot1", "Flower Pot 1" }, { "GardenFlowerpot1Desc", "A pot for planting flowers." }, { "GardenFlowerpot2", "Flower Pot 2" }, { "GardenFlowerpot2Desc", "A pot for planting flowers." }, { "GardenFlowerpot3", "Flower Pot 3" }, { "GardenFlowerpot3Desc", "A pot for planting flowers." }, { "GardenGlobeamaranth", "Globe Amaranth" }, { "GardenGlobeamaranthDesc", "An ornamental flower often planted in summer." }, { "GardenHeuchera", "Heuchera" }, { "GardenHeucheraDesc", "A popular colorful foliage plant." }, { "GardenKasumisou", "Baby’s Breath" }, { "GardenKasumisouDesc", "Pink baby’s breath for gardening." }, { "GardenLavender", "Lavender" }, { "GardenLavenderDesc", "Decorative lavender with a pleasant scent." }, { "GardenOrnamentKale", "Ornamental Kale" }, { "GardenOrnamentKaleDesc", "One of the classic ornamental plants for winter." }, { "GardenPoinsettia", "Poinsettia" }, { "GardenPoinsettiaDesc", "Commonly seen during the Christmas season. The colorful parts are not actually flowers." }, { "GardenPrimrose1", "Primrose (Pink)" }, { "GardenPrimrose1Desc", "A popular ornamental flower from winter to spring." }, { "GardenPrimrose2", "Primrose (Yellow)" }, { "GardenPrimrose2Desc", "A popular ornamental flower from winter to spring. The yellow variety has a surprisingly pleasant scent." }, { "GardenRanunculus", "Ranunculus" }, { "GardenRanunculusDesc", "An ornamental flower with rose-like petals. Soak the bulb before planting." }, { "GardenSakuraBonsai", "Miniature Cherry Blossom" }, { "GardenSakuraBonsaiDesc", "A small ornamental variety of cherry tree. Cute and compact." }, { "GardenSilverleaf", "Silver Leaf" }, { "GardenSilverleafDesc", "Silver foliage that looks great in mixed plantings." }, { "GardenYoseue1", "Potted Coleus Arrangement" }, { "GardenYoseue1Desc", "A potted coleus arrangement that turns yellow in autumn." }, { "GardenYoseue2", "Potted Primrose Arrangement" }, { "GardenYoseue2Desc", "A mixed planting for winter." }, { "OtherBirikensan", "Mini Billiken" }, { "OtherBirikensanDesc", "A small Billiken that is easy to display." }, { "OtherBirikensanBig", "Billiken" }, { "OtherBirikensanBigDesc", "You can find them in many places without climbing Tsutenkaku. Give the soles of his feet a rub." }, { "OtherKadomatsu", "Mini Kadomatsu" }, { "OtherKadomatsuDesc", "A small kadomatsu that is easy to display." }, { "OtherKadomatsuBig", "Kadomatsu" }, { "OtherKadomatsuBigDesc", "A traditional Japanese New Year decoration, now seen everywhere from convenience stores to homes." }, { "OtherManekineko", "Mini Maneki-neko" }, { "OtherManekinekoDesc", "A small maneki-neko that is easy to display." }, { "OtherManekinekoBig", "Maneki-neko" }, { "OtherManekinekoBigDesc", "A traditional Japanese cat figurine displayed in shops." }, { "OtherTanuki", "Tanuki" }, { "OtherTanukiDesc", "A traditional Japanese tanuki statue displayed at shops." }, { "GardenStrawberry", "Potted Strawberry Plant" }, { "GardenStrawberryDesc", "A potted strawberry plant." }, { "GardenRose", "Rose" }, { "GardenroseDesc", "Rose in a vase" }, { "GardenPlant", "Plant" }, { "GardenplantDesc", "Indoor plant" }, { "GardenPlant2", "Plant" }, { "Gardenplant2Desc", "Indoor plant" }, { "GardenPlant3", "Plant" }, { "Gardenplant3Desc", "Indoor plant" }, { "GardenKinmokusei", "fragrant olive" }, { "GardenkinmokuseiDesc", "Autumn has a pleasant scent." }, { "FoodBerryBowl", "Berry Bowl" }, { "FoodBerryBowlDesc", "A bowl of mixed berries." }, { "FoodStrawberry", "Strawberry" }, { "FoodStrawberryDesc", "A ripe strawberry." }, { "FoodApple", "Apple" }, { "FoodAppleDesc", "Green apples in a box" }, { "FoodLafrance", "La France Pear" }, { "FoodlafranceDesc", "La France pears in a basket" }, { "OtherTatami", "Tatami" }, { "OtherTatamiDesc", "Flooring in traditional Japanese houses" }, { "OtherTatamiBed", "Tatami Bed" }, { "OtherTatamiBedDesc", "A tatami floor you can sleep on. Perfect for a casual nap." }, { "OtherSign1", "Sign2 Boar " }, { "OtherSign1Desc", "Wall-mounted sign" }, { "OtherSign2", "Sign2 Neck" }, { "OtherSign2Desc", "Wall-mounted sign" }, { "OtherSign3", "Sign3 Wolf" }, { "OtherSign3Desc", "Wall-mounted sign" }, { "OtherSign4", "Sign4 Lox" }, { "OtherSign4Desc", "Wall-mounted sign" }, { "OtherSign5", "Sign5 Asksvin" }, { "OtherSign5Desc", "Wall-mounted sign" }, { "OtherSign6", "Sign6 NO!Troll" }, { "OtherSign6Desc", "Wall-mounted sign" }, { "GardenTulip1", "Red Tulip" }, { "GardenTulip1Desc", "A flower that blooms in early spring." }, { "GardenTulip2", "Orange Tulip" }, { "GardenTulip2Desc", "A flower that blooms in early spring." }, { "GardenTulip3", "Pink Tulip" }, { "GardenTulip3Desc", "A flower that blooms in early spring." }, { "GardenPrimrose3", "Purple Primrose" }, { "GardenPrimrose3Desc", "A flower that blooms from winter to spring." }, { "GardenPrimrose4", "Light Pink Primrose" }, { "GardenPrimrose4Desc", "A flower that blooms from winter to spring." }, { "GardenKasumisou2", "White Baby's Breath" }, { "GardenKasumisou2Desc", "Small white flowers." }, { "GardenLeaf", "Sugar Vine" }, { "GardenLeafDesc", "Trailing vine leaves." }, { "HobbyGame1", "Game Console 1" }, { "HobbyGame1Desc", "A game console." }, { "HobbyGame2", "Game Console 2" }, { "HobbyGame2Desc", "A game console." }, { "HobbyGame3", "Game Console 3" }, { "HobbyGame3Desc", "A game console." }, { "HobbyGame4", "Game Console 4" }, { "HobbyGame4Desc", "A game console." }, { "HobbyGame5", "Game Console 5" }, { "HobbyGame5Desc", "A game console." }, { "OtherHachiko", "Hachiko" }, { "OtherHachikoDesc", "A statue of a dog waiting for its owner." }, { "OtherSimenawa", "Shimenawa" }, { "OtherSimenawaDesc", "A traditional New Year's decoration in Japan." }, { "OtherOpenflower", "Opening Flower Stand" }, { "OtherOpenflowerDesc", "Flowers commonly displayed when a shop opens." }, { "OtherLocker", "Locker" }, { "OtherLockerDesc", "A storage locker." }, { "OtherLockerBig", "Large Locker" }, { "OtherLockerBigDesc", "A larger storage locker, useful as decoration." }, { "jotunn_cat_doll", "Doll" }, { "jotunn_cat_hobby", "Hobby" }, { "jotunn_cat_foods", "Foods" }, { "jotunn_cat_garden", "Garden" }, { "jotunn_cat_other", "Other" } }); ((BaseUnityPlugin)this).Logger.LogInfo((object)"[Sakey's Cozy Clutter] 日本語・英語のLocalizationを登録しました。"); } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogError((object)("[Sakey's Cozy Clutter] Localization登録中にエラー:\n" + ex)); } } private static int GetVanillaMaxCategoryOrDefault() { try { return (int)Enum.Parse(typeof(PieceCategory), "Max"); } catch (ArgumentException) { return 9; } } private static int GetModifiedMaxCategory() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected I4, but got Unknown int num = 0; foreach (PieceCategory key in PieceManager.Instance.GetPieceCategoriesMap().Keys) { num = Math.Max(num, (int)key); } return num + 1; } private static IEnumerable<CodeInstruction> CozyUpdateAvailableTranspiler(IEnumerable<CodeInstruction> instructions) { int vanillaMax = GetVanillaMaxCategoryOrDefault(); MethodInfo replacement = AccessTools.Method(typeof(SakeysClutterPlugin), "GetModifiedMaxCategory", (Type[])null, (Type[])null); foreach (CodeInstruction instruction in instructions) { if (CodeInstructionExtensions.LoadsConstant(instruction, (long)vanillaMax)) { yield return new CodeInstruction(OpCodes.Call, (object)replacement); } else { yield return instruction; } } } [HarmonyPatch(typeof(PieceTable), "UpdateAvailable")] [HarmonyPrefix] [HarmonyPriority(800)] private static void InitializePieceCategoryLists(PieceTable __instance) { if (!((Object)(object)__instance == (Object)null) && __instance.m_availablePiecesByCategory != null) { int modifiedMaxCategory = GetModifiedMaxCategory(); while (__instance.m_availablePiecesByCategory.Count < modifiedMaxCategory) { __instance.m_availablePiecesByCategory.Add(new List<Piece>()); } if (__instance.m_selectedPiece.Length < modifiedMaxCategory) { Array.Resize(ref __instance.m_selectedPiece, modifiedMaxCategory); } if (__instance.m_lastSelectedPiece.Length < modifiedMaxCategory) { Array.Resize(ref __instance.m_lastSelectedPiece, modifiedMaxCategory); } } } [HarmonyPatch(typeof(PieceTable), "UpdateAvailable")] [HarmonyTranspiler] private static IEnumerable<CodeInstruction> PatchPieceTableUpdateAvailable(IEnumerable<CodeInstruction> instructions) { return CozyUpdateAvailableTranspiler(instructions); } private static void ApplyCozyCategory(Piece piece, string categoryName) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)piece == (Object)null) && !string.IsNullOrEmpty(categoryName)) { PieceCategory? pieceCategory = PieceManager.Instance.GetPieceCategory(categoryName); if (pieceCategory.HasValue) { piece.m_category = pieceCategory.Value; } } } private static void RebuildCozyPieceTableCategories(PieceTable pieceTable) { //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)pieceTable == (Object)null || ((Object)pieceTable).name != "SakeysClutterTable") { return; } List<PieceCategory> list = new List<PieceCategory>(); string[] array = new string[5] { "Doll", "Hobby", "Foods", "Garden", "Other" }; foreach (string text in array) { PieceCategory? pieceCategory = PieceManager.Instance.GetPieceCategory(text); if (!pieceCategory.HasValue) { continue; } bool flag = false; foreach (GameObject piece in pieceTable.m_pieces) { if (!((Object)(object)piece == (Object)null)) { Piece component = piece.GetComponent<Piece>(); if ((Object)(object)component != (Object)null && component.m_category == pieceCategory.Value) { flag = true; break; } } } if (flag && !list.Contains(pieceCategory.Value)) { list.Add(pieceCategory.Value); } } pieceTable.m_categories.Clear(); pieceTable.m_categoryLabels.Clear(); foreach (PieceCategory item2 in list) { pieceTable.m_categories.Add(item2); string item = PieceCategoryLabelFor(item2); pieceTable.m_categoryLabels.Add(item); } } private static string PieceCategoryLabelFor(PieceCategory category) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) if (PieceManager.Instance.GetPieceCategoriesMap().TryGetValue(category, out var value)) { if (string.Equals(value, "Doll", StringComparison.OrdinalIgnoreCase)) { return "$jotunn_cat_doll"; } if (string.Equals(value, "Hobby", StringComparison.OrdinalIgnoreCase)) { return "$jotunn_cat_hobby"; } if (string.Equals(value, "Foods", StringComparison.OrdinalIgnoreCase)) { return "$jotunn_cat_foods"; } if (string.Equals(value, "Garden", StringComparison.OrdinalIgnoreCase)) { return "$jotunn_cat_garden"; } if (string.Equals(value, "Other", StringComparison.OrdinalIgnoreCase)) { return "$jotunn_cat_other"; } } return string.Empty; } [HarmonyPatch(typeof(Player), "SetPlaceMode")] [HarmonyPostfix] private static void RefreshCozyCategoriesAfterSetPlaceMode(Player __instance) { if (!((Object)(object)__instance == (Object)null) && !((Object)(object)__instance.m_buildPieces == (Object)null) && !(((Object)__instance.m_buildPieces).name != "SakeysClutterTable")) { RebuildCozyPieceTableCategories(__instance.m_buildPieces); categoryRefreshNeeded = true; CreateCozyCategoryTabs(); RepositionCozyCategories(); __instance.UpdateAvailablePiecesList(); } } private static void CreateCozyCategoryTabs() { if ((Object)(object)Hud.instance == (Object)null || Hud.instance.m_pieceCategoryTabs == null || Hud.instance.m_pieceCategoryTabs.Length == 0) { return; } int modifiedMaxCategory = GetModifiedMaxCategory(); while (Hud.instance.m_pieceCategoryTabs.Length < modifiedMaxCategory) { GameObject val = Hud.instance.m_pieceCategoryTabs[0]; if ((Object)(object)val == (Object)null) { break; } GameObject val2 = Object.Instantiate<GameObject>(val, val.transform.parent); val2.SetActive(false); Hud.instance.m_pieceCategoryTabs = Hud.instance.m_pieceCategoryTabs.Concat((IEnumerable<GameObject>)(object)new GameObject[1] { val2 }).ToArray(); } } private static void RepositionCozyCategories() { //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)Hud.instance == (Object)null || Hud.instance.m_pieceCategoryTabs == null || Hud.instance.m_pieceCategoryTabs.Length == 0 || (Object)(object)Player.m_localPlayer == (Object)null || (Object)(object)Player.m_localPlayer.m_buildPieces == (Object)null) { return; } PieceTable buildPieces = Player.m_localPlayer.m_buildPieces; if (((Object)buildPieces).name != "SakeysClutterTable") { return; } RebuildCozyPieceTableCategories(buildPieces); GameObject val = Hud.instance.m_pieceCategoryTabs[0]; if ((Object)(object)val == (Object)null) { return; } Transform parent = val.transform.parent; if ((Object)(object)parent == (Object)null) { return; } GridLayoutGroup val2 = ((Component)parent).GetComponent<GridLayoutGroup>(); if ((Object)(object)val2 == (Object)null) { val2 = ((Component)parent).gameObject.AddComponent<GridLayoutGroup>(); } RectTransform component = val.GetComponent<RectTransform>(); if ((Object)(object)component != (Object)null) { GridLayoutGroup obj = val2; Rect rect = component.rect; obj.cellSize = ((Rect)(ref rect)).size; } val2.spacing = new Vector2(0f, 1f); val2.constraint = (Constraint)1; val2.constraintCount = 5; ((LayoutGroup)val2).childAlignment = (TextAnchor)4; int count = buildPieces.m_categories.Count; for (int i = 0; i < Hud.instance.m_pieceCategoryTabs.Length; i++) { GameObject val3 = Hud.instance.m_pieceCategoryTabs[i]; if ((Object)(object)val3 == (Object)null) { continue; } if (i >= count) { val3.SetActive(false); continue; } val3.SetActive(true); string text = ((i < buildPieces.m_categoryLabels.Count) ? buildPieces.m_categoryLabels[i] : string.Empty); TMP_Text componentInChildren = val3.GetComponentInChildren<TMP_Text>(true); if ((Object)(object)componentInChildren != (Object)null) { componentInChildren.text = Localization.instance.Localize(text); } } Player.m_localPlayer.UpdateAvailablePiecesList(); } [HarmonyPatch(typeof(Hud), "Awake")] [HarmonyPostfix] private static void RefreshCozyCategoriesAfterHudAwake() { categoryRefreshNeeded = true; CreateCozyCategoryTabs(); if ((Object)(object)Player.m_localPlayer != (Object)null && (Object)(object)Player.m_localPlayer.m_buildPieces != (Object)null && ((Object)Player.m_localPlayer.m_buildPieces).name == "SakeysClutterTable") { RepositionCozyCategories(); } } [HarmonyPatch(typeof(Hud), "UpdateBuild")] [HarmonyPostfix] private static void RefreshCozyCategoriesAfterHudUpdateBuild() { if (categoryRefreshNeeded && !((Object)(object)Player.m_localPlayer == (Object)null) && !((Object)(object)Player.m_localPlayer.m_buildPieces == (Object)null) && !(((Object)Player.m_localPlayer.m_buildPieces).name != "SakeysClutterTable")) { categoryRefreshNeeded = false; CreateCozyCategoryTabs(); RepositionCozyCategories(); } } private void OnPrefabsRegistered() { PrefabManager.OnPrefabsRegistered -= OnPrefabsRegistered; ((BaseUnityPlugin)this).Logger.LogInfo((object)"[Sakey's Cozy Clutter] Prefab登録処理を開始します。"); try { if (enableClutterTool.Value) { ((BaseUnityPlugin)this).Logger.LogInfo((object)"[Sakey's Cozy Clutter] 家具作成ツール登録開始。"); CreateClutterTool(); } int num = 0; int num2 = 0; ClutterItemData[] array = clutterItems; foreach (ClutterItemData clutterItemData in array) { if (clutterItemData == null) { ((BaseUnityPlugin)this).Logger.LogError((object)"[Sakey's Cozy Clutter] 家具データがnullです。"); num2++; continue; } ((BaseUnityPlugin)this).Logger.LogInfo((object)("[Sakey's Cozy Clutter] 家具登録開始: " + clutterItemData.PrefabName)); try { RegisterClutterPiece(clutterItemData); num++; } catch (Exception ex) { num2++; ((BaseUnityPlugin)this).Logger.LogError((object)("[Sakey's Cozy Clutter] 家具登録中に例外が発生しました: " + clutterItemData.PrefabName + "\n" + ex)); } } ((BaseUnityPlugin)this).Logger.LogInfo((object)("[Sakey's Cozy Clutter] 家具登録処理終了。成功: " + num + " / 失敗: " + num2)); RegisterTatamiBed(); PieceTable pieceTable = PieceManager.Instance.GetPieceTable("SakeysClutterTable"); if ((Object)(object)pieceTable != (Object)null) { RebuildCozyPieceTableCategories(pieceTable); categoryRefreshNeeded = true; if ((Object)(object)Hud.instance != (Object)null) { CreateCozyCategoryTabs(); RepositionCozyCategories(); } } } catch (Exception ex2) { ((BaseUnityPlugin)this).Logger.LogError((object)("[Sakey's Cozy Clutter] Prefab登録中にエラー:\n" + ex2)); } } private void CreateClutterTool() { //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Expected O, but got Unknown //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Expected O, but got Unknown //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Expected O, but got Unknown //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_0286: Unknown result type (might be due to invalid IL or missing references) //IL_0297: Unknown result type (might be due to invalid IL or missing references) //IL_03ce: Unknown result type (might be due to invalid IL or missing references) //IL_03ee: Unknown result type (might be due to invalid IL or missing references) //IL_03ff: Unknown result type (might be due to invalid IL or missing references) //IL_0362: Unknown result type (might be due to invalid IL or missing references) //IL_037f: Unknown result type (might be due to invalid IL or missing references) //IL_039a: Unknown result type (might be due to invalid IL or missing references) //IL_03a6: Unknown result type (might be due to invalid IL or missing references) ((BaseUnityPlugin)this).Logger.LogInfo((object)"[Sakey's Cozy Clutter] CreateClutterTool開始。"); if ((Object)(object)AssetBundle == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)"[Sakey's Cozy Clutter] AssetBundleが読み込まれていないため、家具作成ツールを作成できません。"); return; } GameObject val = AssetBundle.LoadAsset<GameObject>("clutter_tool"); if ((Object)(object)val == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)"[Sakey's Cozy Clutter] clutter_tool がAssetBundleにありません。"); return; } ((BaseUnityPlugin)this).Logger.LogInfo((object)"[Sakey's Cozy Clutter] ツールモデルを発見しました: clutter_tool"); Sprite val2 = AssetBundle.LoadAsset<Sprite>("icon_clutter_tool"); if ((Object)(object)val2 == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)"[Sakey's Cozy Clutter] icon_clutter_tool がAssetBundleにありません。"); return; } ItemConfig val3 = new ItemConfig(); val3.Name = "$SakeysClutterTool"; val3.Description = "$SakeysClutterToolDesc"; val3.PieceTable = "SakeysClutterTable"; val3.CraftingStation = "piece_workbench"; val3.MinStationLevel = 1; val3.Weight = 1f; val3.Requirements = (RequirementConfig[])(object)new RequirementConfig[1] { new RequirementConfig("Wood", 1, 0, true) }; ItemConfig val4 = val3; CustomItem val5 = new CustomItem("SakeysClutterTool", "Hammer", val4); if (val5 == null || (Object)(object)val5.ItemPrefab == (Object)null) { ((BaseUnityPlugin)this).Logger.LogError((object)"[Sakey's Cozy Clutter] 家具作成ツールPrefabの作成に失敗しました。"); return; } GameObject itemPrefab = val5.ItemPrefab; ItemDrop component = itemPrefab.GetComponent<ItemDrop>(); if ((Object)(object)component == (Object)null || component.m_itemData == null || component.m_itemData.m_shared == null) { ((BaseUnityPlugin)this).Logger.LogError((object)"[Sakey's Cozy Clutter] 家具作成ツールのItemDataが正常に取得できません。"); return; } component.m_itemData.m_shared.m_name = "$SakeysClutterTool"; component.m_itemData.m_shared.m_description = "$SakeysClutterToolDesc"; component.m_itemData.m_shared.m_maxStackSize = 1; component.m_itemData.m_shared.m_weight = 1f; component.m_itemData.m_shared.m_itemType = (ItemType)19; component.m_itemData.m_quality = 1; component.m_itemData.m_stack = 1; component.m_itemData.m_dropPrefab = itemPrefab; component.m_itemData.m_shared.m_icons = (Sprite[])(object)new Sprite[1] { val2 }; Renderer[] componentsInChildren = itemPrefab.GetComponentsInChildren<Renderer>(true); foreach (Renderer val6 in componentsInChildren) { if ((Object)(object)val6 != (Object)null) { val6.enabled = false; } } GameObject val7 = Object.Instantiate<GameObject>(val, itemPrefab.transform); ((Object)val7).name = "ClutterToolModel"; val7.transform.localPosition = Vector3.zero; val7.transform.localRotation = Quaternion.identity; val7.transform.localScale = Vector3.one; Collider[] componentsInChildren2 = val7.GetComponentsInChildren<Collider>(true); foreach (Collider val8 in componentsInChildren2) { if ((Object)(object)val8 != (Object)null) { Object.DestroyImmediate((Object)(object)val8); } } Rigidbody[] componentsInChildren3 = val7.GetComponentsInChildren<Rigidbody>(true); foreach (Rigidbody val9 in componentsInChildren3) { if ((Object)(object)val9 != (Object)null) { Object.DestroyImmediate((Object)(object)val9); } } LODGroup[] componentsInChildren4 = val7.GetComponentsInChildren<LODGroup>(true); foreach (LODGroup val10 in componentsInChildren4) { if ((Object)(object)val10 != (Object)null) { Object.DestroyImmediate((Object)(object)val10); } } Transform val11 = itemPrefab.transform.Find("attach"); if ((Object)(object)val11 == (Object)null) { val11 = new GameObject("attach").transform; val11.SetParent(itemPrefab.transform, false); val11.localPosition = Vector3.zero; val11.localRotation = Quaternion.Euler(0f, 0f, 90f); val11.localScale = Vector3.one; } GameObject val12 = Object.Instantiate<GameObject>(val7, val11); ((Object)val12).name = "ClutterToolStandMode