From e958af08182d8b96cf08064c20ba5d35064e876d Mon Sep 17 00:00:00 2001 From: "markrewey@gmail.com" Date: Thu, 13 May 2021 17:13:52 -0500 Subject: [PATCH] First Commit --- .classpath | 420 ++++++++++ .gitignore | 16 + .project | 17 + README.md | 4 + build.gradle | 56 ++ elements/Amethystplatinum.mod.json | 46 ++ elements/Amethystsapphire.mod.json | 46 ++ elements/BankGUI.mod.json | 125 +++ elements/BankInputCalc.mod.json | 7 + elements/BankOpenGUI.mod.json | 7 + elements/BankOutputCalc.mod.json | 7 + elements/BankTransfer.mod.json | 7 + elements/Coinamethyst.mod.json | 35 + elements/Coincopper.mod.json | 35 + elements/Coindiamond.mod.json | 35 + elements/Coinemerald.mod.json | 35 + elements/Coingold.mod.json | 35 + elements/Coiniron.mod.json | 35 + elements/Coinloot.mod.json | 178 +++++ elements/Coinnetherite.mod.json | 35 + elements/Coinplatinum.mod.json | 35 + elements/Coinruby.mod.json | 35 + elements/Coins.mod.json | 50 ++ elements/Coinsapphire.mod.json | 35 + elements/Coinstone.mod.json | 35 + elements/Coinwood.mod.json | 35 + elements/Copperiron.mod.json | 46 ++ elements/Copperstone.mod.json | 46 ++ elements/Diamondnetherite.mod.json | 46 ++ elements/Diamondruby.mod.json | 46 ++ elements/Emeraldruby.mod.json | 46 ++ elements/Emeraldsapphire.mod.json | 46 ++ elements/Endcity.mod.json | 62 ++ elements/Goldiron.mod.json | 46 ++ elements/Goldplatinum.mod.json | 46 ++ elements/Ironcopper.mod.json | 46 ++ elements/Irongold.mod.json | 46 ++ elements/Makebronze.mod.json | 23 + elements/Makeiron.mod.json | 23 + elements/Makestone.mod.json | 20 + elements/Makestone2.mod.json | 23 + elements/Makewood.mod.json | 23 + elements/Makewood1.mod.json | 23 + elements/Makewood2.mod.json | 23 + elements/Mineshaft.mod.json | 76 ++ elements/Netheritediamond.mod.json | 46 ++ elements/OpenBank.mod.json | 12 + elements/Piggybank.mod.json | 27 + elements/Platinumamethyst.mod.json | 46 ++ elements/Platinumgold.mod.json | 46 ++ elements/Rottenflesh2Leather.mod.json | 20 + elements/Rubydiamond.mod.json | 46 ++ elements/Rubyemerald.mod.json | 46 ++ elements/Sapphireamethyst.mod.json | 46 ++ elements/Sapphireemerald.mod.json | 46 ++ elements/Starter.mod.json | 30 + elements/Stonecopper.mod.json | 46 ++ elements/Stonewood.mod.json | 46 ++ elements/Woodstone.mod.json | 46 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54413 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 172 +++++ gradlew.bat | 84 ++ markscoins.mcreator | 716 ++++++++++++++++++ mcreator.gradle | 0 .../net/rewey/markscoins/MarkscoinsMod.java | 100 +++ .../markscoins/MarkscoinsModElements.java | 126 +++ .../markscoins/MarkscoinsModVariables.java | 161 ++++ .../net/rewey/markscoins/gui/BankGUIGui.java | 448 +++++++++++ .../markscoins/gui/BankGUIGuiWindow.java | 100 +++ .../markscoins/item/CoinamethystItem.java | 58 ++ .../rewey/markscoins/item/CoincopperItem.java | 58 ++ .../markscoins/item/CoindiamondItem.java | 58 ++ .../markscoins/item/CoinemeraldItem.java | 58 ++ .../rewey/markscoins/item/CoingoldItem.java | 58 ++ .../rewey/markscoins/item/CoinironItem.java | 58 ++ .../markscoins/item/CoinnetheriteItem.java | 66 ++ .../markscoins/item/CoinplatinumItem.java | 66 ++ .../rewey/markscoins/item/CoinrubyItem.java | 58 ++ .../markscoins/item/CoinsapphireItem.java | 58 ++ .../rewey/markscoins/item/CoinstoneItem.java | 58 ++ .../rewey/markscoins/item/CoinwoodItem.java | 58 ++ .../keybind/OpenBankKeyBinding.java | 104 +++ .../procedures/BankInputCalcProcedure.java | 655 ++++++++++++++++ .../procedures/BankOpenGUIProcedure.java | 80 ++ .../procedures/BankOutputCalcProcedure.java | 537 +++++++++++++ .../procedures/BankTransferProcedure.java | 100 +++ src/main/resources/META-INF/mods.toml | 23 + .../assets/markscoins/lang/en_us.json | 32 + .../markscoins/models/item/coinamethyst.json | 6 + .../markscoins/models/item/coincopper.json | 6 + .../markscoins/models/item/coindiamond.json | 6 + .../markscoins/models/item/coinemerald.json | 6 + .../markscoins/models/item/coingold.json | 6 + .../markscoins/models/item/coiniron.json | 6 + .../markscoins/models/item/coinnetherite.json | 6 + .../markscoins/models/item/coinplatinum.json | 6 + .../markscoins/models/item/coinruby.json | 6 + .../markscoins/models/item/coinsapphire.json | 6 + .../markscoins/models/item/coinstone.json | 6 + .../markscoins/models/item/coinwood.json | 6 + .../resources/assets/markscoins/sounds.json | 1 + .../assets/markscoins/textures/bank_gui.png | Bin 0 -> 683 bytes .../assets/markscoins/textures/cashout.png | Bin 0 -> 994 bytes .../markscoins/textures/coin_diamond.png | Bin 0 -> 183 bytes .../textures/items/coin_amethyst.png | Bin 0 -> 116 bytes .../markscoins/textures/items/coin_bronze.png | Bin 0 -> 206 bytes .../textures/items/coin_diamond.png | Bin 0 -> 183 bytes .../textures/items/coin_emerald.png | Bin 0 -> 198 bytes .../markscoins/textures/items/coin_gold.png | Bin 0 -> 182 bytes .../markscoins/textures/items/coin_iron.png | Bin 0 -> 182 bytes .../textures/items/coin_netherite.png | Bin 0 -> 116 bytes .../textures/items/coin_platinum.png | Bin 0 -> 118 bytes .../markscoins/textures/items/coin_ruby.png | Bin 0 -> 109 bytes .../textures/items/coin_sapphire.png | Bin 0 -> 114 bytes .../markscoins/textures/items/coin_stone.png | Bin 0 -> 181 bytes .../markscoins/textures/items/coin_wood.png | Bin 0 -> 180 bytes .../assets/markscustom/textures/cashout.png | Bin 0 -> 10524 bytes .../markscustom/textures/coin_diamond.png | Bin 0 -> 183 bytes .../textures/items/coin_amethyst.png | Bin 0 -> 116 bytes .../textures/items/coin_bronze.png | Bin 0 -> 206 bytes .../textures/items/coin_diamond.png | Bin 0 -> 183 bytes .../textures/items/coin_emerald.png | Bin 0 -> 198 bytes .../markscustom/textures/items/coin_gold.png | Bin 0 -> 182 bytes .../markscustom/textures/items/coin_iron.png | Bin 0 -> 182 bytes .../textures/items/coin_netherite.png | Bin 0 -> 116 bytes .../textures/items/coin_platinum.png | Bin 0 -> 118 bytes .../markscustom/textures/items/coin_ruby.png | Bin 0 -> 109 bytes .../textures/items/coin_sapphire.png | Bin 0 -> 114 bytes .../markscustom/textures/items/coin_stone.png | Bin 0 -> 181 bytes .../markscustom/textures/items/coin_wood.png | Bin 0 -> 180 bytes .../data/forge/tags/items/coins.json | 17 + .../markscoins/advancements/piggybank.json | 40 + .../data/markscoins/advancements/starter.json | 33 + .../data/markscoins/loot_tables/coinloot.json | 201 +++++ .../markscoins/recipes/amethystplatinum.json | 13 + .../markscoins/recipes/amethystsapphire.json | 22 + .../data/markscoins/recipes/copperiron.json | 22 + .../data/markscoins/recipes/copperstone.json | 13 + .../markscoins/recipes/diamondnetherite.json | 22 + .../data/markscoins/recipes/diamondruby.json | 13 + .../data/markscoins/recipes/emeraldruby.json | 22 + .../markscoins/recipes/emeraldsapphire.json | 13 + .../data/markscoins/recipes/goldiron.json | 13 + .../data/markscoins/recipes/goldplatinum.json | 22 + .../data/markscoins/recipes/ironcopper.json | 13 + .../data/markscoins/recipes/irongold.json | 22 + .../data/markscoins/recipes/makebronze.json | 12 + .../data/markscoins/recipes/makeiron.json | 12 + .../data/markscoins/recipes/makestone.json | 9 + .../data/markscoins/recipes/makestone_2.json | 12 + .../data/markscoins/recipes/makewood.json | 12 + .../data/markscoins/recipes/makewood_1.json | 12 + .../data/markscoins/recipes/makewood_2.json | 12 + .../markscoins/recipes/netheritediamond.json | 13 + .../markscoins/recipes/platinumamethyst.json | 22 + .../data/markscoins/recipes/platinumgold.json | 13 + .../recipes/rottenflesh_2_leather.json | 12 + .../data/markscoins/recipes/rubydiamond.json | 22 + .../data/markscoins/recipes/rubyemerald.json | 13 + .../markscoins/recipes/sapphireamethyst.json | 13 + .../markscoins/recipes/sapphireemerald.json | 22 + .../data/markscoins/recipes/stonecopper.json | 22 + .../data/markscoins/recipes/stonewood.json | 13 + .../data/markscoins/recipes/woodstone.json | 22 + .../chests/abandoned_mineshaft.json | 78 ++ .../loot_tables/chests/end_city_treasure.json | 59 ++ src/main/resources/logo.png | Bin 0 -> 183 bytes src/main/resources/pack.mcmeta | 6 + 169 files changed, 7851 insertions(+) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 README.md create mode 100644 build.gradle create mode 100644 elements/Amethystplatinum.mod.json create mode 100644 elements/Amethystsapphire.mod.json create mode 100644 elements/BankGUI.mod.json create mode 100644 elements/BankInputCalc.mod.json create mode 100644 elements/BankOpenGUI.mod.json create mode 100644 elements/BankOutputCalc.mod.json create mode 100644 elements/BankTransfer.mod.json create mode 100644 elements/Coinamethyst.mod.json create mode 100644 elements/Coincopper.mod.json create mode 100644 elements/Coindiamond.mod.json create mode 100644 elements/Coinemerald.mod.json create mode 100644 elements/Coingold.mod.json create mode 100644 elements/Coiniron.mod.json create mode 100644 elements/Coinloot.mod.json create mode 100644 elements/Coinnetherite.mod.json create mode 100644 elements/Coinplatinum.mod.json create mode 100644 elements/Coinruby.mod.json create mode 100644 elements/Coins.mod.json create mode 100644 elements/Coinsapphire.mod.json create mode 100644 elements/Coinstone.mod.json create mode 100644 elements/Coinwood.mod.json create mode 100644 elements/Copperiron.mod.json create mode 100644 elements/Copperstone.mod.json create mode 100644 elements/Diamondnetherite.mod.json create mode 100644 elements/Diamondruby.mod.json create mode 100644 elements/Emeraldruby.mod.json create mode 100644 elements/Emeraldsapphire.mod.json create mode 100644 elements/Endcity.mod.json create mode 100644 elements/Goldiron.mod.json create mode 100644 elements/Goldplatinum.mod.json create mode 100644 elements/Ironcopper.mod.json create mode 100644 elements/Irongold.mod.json create mode 100644 elements/Makebronze.mod.json create mode 100644 elements/Makeiron.mod.json create mode 100644 elements/Makestone.mod.json create mode 100644 elements/Makestone2.mod.json create mode 100644 elements/Makewood.mod.json create mode 100644 elements/Makewood1.mod.json create mode 100644 elements/Makewood2.mod.json create mode 100644 elements/Mineshaft.mod.json create mode 100644 elements/Netheritediamond.mod.json create mode 100644 elements/OpenBank.mod.json create mode 100644 elements/Piggybank.mod.json create mode 100644 elements/Platinumamethyst.mod.json create mode 100644 elements/Platinumgold.mod.json create mode 100644 elements/Rottenflesh2Leather.mod.json create mode 100644 elements/Rubydiamond.mod.json create mode 100644 elements/Rubyemerald.mod.json create mode 100644 elements/Sapphireamethyst.mod.json create mode 100644 elements/Sapphireemerald.mod.json create mode 100644 elements/Starter.mod.json create mode 100644 elements/Stonecopper.mod.json create mode 100644 elements/Stonewood.mod.json create mode 100644 elements/Woodstone.mod.json create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 markscoins.mcreator create mode 100644 mcreator.gradle create mode 100644 src/main/java/net/rewey/markscoins/MarkscoinsMod.java create mode 100644 src/main/java/net/rewey/markscoins/MarkscoinsModElements.java create mode 100644 src/main/java/net/rewey/markscoins/MarkscoinsModVariables.java create mode 100644 src/main/java/net/rewey/markscoins/gui/BankGUIGui.java create mode 100644 src/main/java/net/rewey/markscoins/gui/BankGUIGuiWindow.java create mode 100644 src/main/java/net/rewey/markscoins/item/CoinamethystItem.java create mode 100644 src/main/java/net/rewey/markscoins/item/CoincopperItem.java create mode 100644 src/main/java/net/rewey/markscoins/item/CoindiamondItem.java create mode 100644 src/main/java/net/rewey/markscoins/item/CoinemeraldItem.java create mode 100644 src/main/java/net/rewey/markscoins/item/CoingoldItem.java create mode 100644 src/main/java/net/rewey/markscoins/item/CoinironItem.java create mode 100644 src/main/java/net/rewey/markscoins/item/CoinnetheriteItem.java create mode 100644 src/main/java/net/rewey/markscoins/item/CoinplatinumItem.java create mode 100644 src/main/java/net/rewey/markscoins/item/CoinrubyItem.java create mode 100644 src/main/java/net/rewey/markscoins/item/CoinsapphireItem.java create mode 100644 src/main/java/net/rewey/markscoins/item/CoinstoneItem.java create mode 100644 src/main/java/net/rewey/markscoins/item/CoinwoodItem.java create mode 100644 src/main/java/net/rewey/markscoins/keybind/OpenBankKeyBinding.java create mode 100644 src/main/java/net/rewey/markscoins/procedures/BankInputCalcProcedure.java create mode 100644 src/main/java/net/rewey/markscoins/procedures/BankOpenGUIProcedure.java create mode 100644 src/main/java/net/rewey/markscoins/procedures/BankOutputCalcProcedure.java create mode 100644 src/main/java/net/rewey/markscoins/procedures/BankTransferProcedure.java create mode 100644 src/main/resources/META-INF/mods.toml create mode 100644 src/main/resources/assets/markscoins/lang/en_us.json create mode 100644 src/main/resources/assets/markscoins/models/item/coinamethyst.json create mode 100644 src/main/resources/assets/markscoins/models/item/coincopper.json create mode 100644 src/main/resources/assets/markscoins/models/item/coindiamond.json create mode 100644 src/main/resources/assets/markscoins/models/item/coinemerald.json create mode 100644 src/main/resources/assets/markscoins/models/item/coingold.json create mode 100644 src/main/resources/assets/markscoins/models/item/coiniron.json create mode 100644 src/main/resources/assets/markscoins/models/item/coinnetherite.json create mode 100644 src/main/resources/assets/markscoins/models/item/coinplatinum.json create mode 100644 src/main/resources/assets/markscoins/models/item/coinruby.json create mode 100644 src/main/resources/assets/markscoins/models/item/coinsapphire.json create mode 100644 src/main/resources/assets/markscoins/models/item/coinstone.json create mode 100644 src/main/resources/assets/markscoins/models/item/coinwood.json create mode 100644 src/main/resources/assets/markscoins/sounds.json create mode 100644 src/main/resources/assets/markscoins/textures/bank_gui.png create mode 100644 src/main/resources/assets/markscoins/textures/cashout.png create mode 100644 src/main/resources/assets/markscoins/textures/coin_diamond.png create mode 100644 src/main/resources/assets/markscoins/textures/items/coin_amethyst.png create mode 100644 src/main/resources/assets/markscoins/textures/items/coin_bronze.png create mode 100644 src/main/resources/assets/markscoins/textures/items/coin_diamond.png create mode 100644 src/main/resources/assets/markscoins/textures/items/coin_emerald.png create mode 100644 src/main/resources/assets/markscoins/textures/items/coin_gold.png create mode 100644 src/main/resources/assets/markscoins/textures/items/coin_iron.png create mode 100644 src/main/resources/assets/markscoins/textures/items/coin_netherite.png create mode 100644 src/main/resources/assets/markscoins/textures/items/coin_platinum.png create mode 100644 src/main/resources/assets/markscoins/textures/items/coin_ruby.png create mode 100644 src/main/resources/assets/markscoins/textures/items/coin_sapphire.png create mode 100644 src/main/resources/assets/markscoins/textures/items/coin_stone.png create mode 100644 src/main/resources/assets/markscoins/textures/items/coin_wood.png create mode 100644 src/main/resources/assets/markscustom/textures/cashout.png create mode 100644 src/main/resources/assets/markscustom/textures/coin_diamond.png create mode 100644 src/main/resources/assets/markscustom/textures/items/coin_amethyst.png create mode 100644 src/main/resources/assets/markscustom/textures/items/coin_bronze.png create mode 100644 src/main/resources/assets/markscustom/textures/items/coin_diamond.png create mode 100644 src/main/resources/assets/markscustom/textures/items/coin_emerald.png create mode 100644 src/main/resources/assets/markscustom/textures/items/coin_gold.png create mode 100644 src/main/resources/assets/markscustom/textures/items/coin_iron.png create mode 100644 src/main/resources/assets/markscustom/textures/items/coin_netherite.png create mode 100644 src/main/resources/assets/markscustom/textures/items/coin_platinum.png create mode 100644 src/main/resources/assets/markscustom/textures/items/coin_ruby.png create mode 100644 src/main/resources/assets/markscustom/textures/items/coin_sapphire.png create mode 100644 src/main/resources/assets/markscustom/textures/items/coin_stone.png create mode 100644 src/main/resources/assets/markscustom/textures/items/coin_wood.png create mode 100644 src/main/resources/data/forge/tags/items/coins.json create mode 100644 src/main/resources/data/markscoins/advancements/piggybank.json create mode 100644 src/main/resources/data/markscoins/advancements/starter.json create mode 100644 src/main/resources/data/markscoins/loot_tables/coinloot.json create mode 100644 src/main/resources/data/markscoins/recipes/amethystplatinum.json create mode 100644 src/main/resources/data/markscoins/recipes/amethystsapphire.json create mode 100644 src/main/resources/data/markscoins/recipes/copperiron.json create mode 100644 src/main/resources/data/markscoins/recipes/copperstone.json create mode 100644 src/main/resources/data/markscoins/recipes/diamondnetherite.json create mode 100644 src/main/resources/data/markscoins/recipes/diamondruby.json create mode 100644 src/main/resources/data/markscoins/recipes/emeraldruby.json create mode 100644 src/main/resources/data/markscoins/recipes/emeraldsapphire.json create mode 100644 src/main/resources/data/markscoins/recipes/goldiron.json create mode 100644 src/main/resources/data/markscoins/recipes/goldplatinum.json create mode 100644 src/main/resources/data/markscoins/recipes/ironcopper.json create mode 100644 src/main/resources/data/markscoins/recipes/irongold.json create mode 100644 src/main/resources/data/markscoins/recipes/makebronze.json create mode 100644 src/main/resources/data/markscoins/recipes/makeiron.json create mode 100644 src/main/resources/data/markscoins/recipes/makestone.json create mode 100644 src/main/resources/data/markscoins/recipes/makestone_2.json create mode 100644 src/main/resources/data/markscoins/recipes/makewood.json create mode 100644 src/main/resources/data/markscoins/recipes/makewood_1.json create mode 100644 src/main/resources/data/markscoins/recipes/makewood_2.json create mode 100644 src/main/resources/data/markscoins/recipes/netheritediamond.json create mode 100644 src/main/resources/data/markscoins/recipes/platinumamethyst.json create mode 100644 src/main/resources/data/markscoins/recipes/platinumgold.json create mode 100644 src/main/resources/data/markscoins/recipes/rottenflesh_2_leather.json create mode 100644 src/main/resources/data/markscoins/recipes/rubydiamond.json create mode 100644 src/main/resources/data/markscoins/recipes/rubyemerald.json create mode 100644 src/main/resources/data/markscoins/recipes/sapphireamethyst.json create mode 100644 src/main/resources/data/markscoins/recipes/sapphireemerald.json create mode 100644 src/main/resources/data/markscoins/recipes/stonecopper.json create mode 100644 src/main/resources/data/markscoins/recipes/stonewood.json create mode 100644 src/main/resources/data/markscoins/recipes/woodstone.json create mode 100644 src/main/resources/data/minecraft/loot_tables/chests/abandoned_mineshaft.json create mode 100644 src/main/resources/data/minecraft/loot_tables/chests/end_city_treasure.json create mode 100644 src/main/resources/logo.png create mode 100644 src/main/resources/pack.mcmeta diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..f71ca66 --- /dev/null +++ b/.classpath @@ -0,0 +1,420 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b536c54 --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +# Gradle build system ignores +.gradle/ +build/ + +# Other IDE related folders +.idea/ +.settings/ + +# MCreator workspace +.mcreator/ + +# Minecraft client/server files +run/ + +# MacOS system files +.DS_STORE \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..aa7bdf8 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + markscoins + + + + org.eclipse.jdt.core.javanature + + + + org.eclipse.jdt.core.javabuilder + + + + + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..d169582 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# coinmod +Simple Coin mod + +Textures based off of Varied Commodities Mod diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..d4c7e55 --- /dev/null +++ b/build.gradle @@ -0,0 +1,56 @@ +buildscript { + repositories { + maven { url = 'https://maven.minecraftforge.net' } + mavenCentral() + } + dependencies { + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '4.1.+', changing: true + } +} +apply plugin: 'net.minecraftforge.gradle' +apply plugin: 'eclipse' + +version = '1.0' +group = 'com.yourname.modid' +archivesBaseName = 'modid' + +java.toolchain.languageVersion = JavaLanguageVersion.of(8) + +minecraft { + mappings channel: 'snapshot', version: '20201028-1.16.3' + + runs { + client { + workingDirectory project.file('run') + + property 'forge.logging.markers', 'REGISTRIES' + property 'forge.logging.console.level', 'debug' + + mods { + examplemod { + source sourceSets.main + } + } + } + + server { + workingDirectory project.file('run') + + property 'forge.logging.markers', 'REGISTRIES' + property 'forge.logging.console.level', 'debug' + + mods { + examplemod { + source sourceSets.main + } + } + } + } +} + +dependencies { + minecraft 'net.minecraftforge:forge:1.16.5-36.1.0' +} + +apply from: 'mcreator.gradle' + diff --git a/elements/Amethystplatinum.mod.json b/elements/Amethystplatinum.mod.json new file mode 100644 index 0000000..e9fb999 --- /dev/null +++ b/elements/Amethystplatinum.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 4, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinamethyst" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coinplatinum" + }, + "name": "amethystplatinum", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Amethystsapphire.mod.json b/elements/Amethystsapphire.mod.json new file mode 100644 index 0000000..feb024b --- /dev/null +++ b/elements/Amethystsapphire.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "CUSTOM:Coinamethyst" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinamethyst" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinamethyst" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinamethyst" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coinsapphire" + }, + "name": "amethystsapphire", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/BankGUI.mod.json b/elements/BankGUI.mod.json new file mode 100644 index 0000000..e6eb977 --- /dev/null +++ b/elements/BankGUI.mod.json @@ -0,0 +1,125 @@ +{ + "_fv": 18, + "_type": "gui", + "definition": { + "type": 1, + "width": 176, + "height": 166, + "inventoryOffsetX": 0, + "inventoryOffsetY": 0, + "renderBgLayer": true, + "doesPauseGame": false, + "components": [ + { + "type": "label", + "data": { + "text": "Balance", + "color": { + "value": -16777216, + "falpha": 0.0 + }, + "name": "Balance", + "x": 131, + "y": 42 + } + }, + { + "type": "inputslot", + "data": { + "inputLimit": { + "value": "" + }, + "id": 0, + "disableStackInteraction": false, + "dropItemsWhenNotBound": false, + "onSlotChanged": { + "name": "BankInputCalc" + }, + "name": "Slot #0", + "x": 149, + "y": 89 + } + }, + { + "type": "outputslot", + "data": { + "id": 1, + "disableStackInteraction": true, + "dropItemsWhenNotBound": false, + "onTakenFromSlot": { + "name": "BankOutputCalc" + }, + "name": "Slot #1", + "x": 257, + "y": 89 + } + }, + { + "type": "label", + "data": { + "text": "", + "color": { + "value": -16777215, + "falpha": 0.0 + }, + "name": "", + "x": 130, + "y": 53 + } + }, + { + "type": "image", + "data": { + "image": "cashout.png", + "use1Xscale": true, + "name": "cashout.png", + "x": 196, + "y": 77 + } + }, + { + "type": "button", + "data": { + "text": "Take", + "onClick": { + "name": "BankTransfer" + }, + "width": 30, + "height": 20, + "name": "Take", + "x": 251, + "y": 53 + } + }, + { + "type": "label", + "data": { + "text": "Deposit", + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "name": "Deposit", + "x": 140, + "y": 78 + } + }, + { + "type": "label", + "data": { + "text": "Withdraw", + "color": { + "value": -12829636, + "falpha": 0.0 + }, + "name": "Withdraw", + "x": 245, + "y": 78 + } + } + ], + "onTick": { + "name": "BankOutputCalc" + } + } +} \ No newline at end of file diff --git a/elements/BankInputCalc.mod.json b/elements/BankInputCalc.mod.json new file mode 100644 index 0000000..55cd1e7 --- /dev/null +++ b/elements/BankInputCalc.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 18, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_trigger1CUSTOM:Coinwood0global:moneyADDglobal:money00CUSTOM:Coinstone0global:moneyADDglobal:moneyMULTIPLY040CUSTOM:Coincopper0global:moneyADDglobal:moneyMULTIPLY0160CUSTOM:Coiniron0global:moneyADDglobal:moneyMULTIPLY0640CUSTOM:Coingold0global:moneyADDglobal:moneyMULTIPLY02560CUSTOM:Coinplatinum0global:moneyADDglobal:moneyMULTIPLY010240CUSTOM:Coinamethyst0global:moneyADDglobal:moneyMULTIPLY040960CUSTOM:Coinsapphire0global:moneyADDglobal:moneyMULTIPLY0163840CUSTOM:Coinemerald0global:moneyADDglobal:moneyMULTIPLY0655360CUSTOM:Coinruby0global:moneyADDglobal:moneyMULTIPLY02621440CUSTOM:Coindiamond0global:moneyADDglobal:moneyMULTIPLY010485760CUSTOM:Coinnetherite0global:moneyADDglobal:moneyMULTIPLY041943040Invalid Input" + } +} \ No newline at end of file diff --git a/elements/BankOpenGUI.mod.json b/elements/BankOpenGUI.mod.json new file mode 100644 index 0000000..f4f6e55 --- /dev/null +++ b/elements/BankOpenGUI.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 18, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_triggerBankGUIADD1" + } +} \ No newline at end of file diff --git a/elements/BankOutputCalc.mod.json b/elements/BankOutputCalc.mod.json new file mode 100644 index 0000000..5c81a8d --- /dev/null +++ b/elements/BankOutputCalc.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 18, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_triggerLT0global:moneyLTglobal:money4global:displayROUNDDOWNglobal:moneyglobal:transferROUNDDOWNglobal:displayglobal:display#CUSTOM:Coinwood1LTglobal:money16global:displayROUNDDOWNDIVIDEglobal:money4global:transferROUNDDOWNMULTIPLYglobal:display4global:display#CUSTOM:Coinstone1LTglobal:money64global:displayROUNDDOWNDIVIDEglobal:money16global:transferROUNDDOWNMULTIPLYglobal:display16global:display#CUSTOM:Coincopper1LTglobal:money256global:displayROUNDDOWNDIVIDEglobal:money64global:transferROUNDDOWNMULTIPLYglobal:display64global:display#CUSTOM:Coiniron1LTglobal:money1024global:displayROUNDDOWNDIVIDEglobal:money256global:transferROUNDDOWNMULTIPLYglobal:display256global:display#CUSTOM:Coingold1LTglobal:money4096global:displayROUNDDOWNDIVIDEglobal:money1024global:transferROUNDDOWNMULTIPLYglobal:display1024global:display#CUSTOM:Coinplatinum1LTglobal:money16384global:displayROUNDDOWNDIVIDEglobal:money4096global:transferROUNDDOWNMULTIPLYglobal:display4096global:display#CUSTOM:Coinamethyst1LTglobal:money65536global:displayROUNDDOWNDIVIDEglobal:money16384global:transferROUNDDOWNMULTIPLYglobal:display16384global:display#CUSTOM:Coinsapphire1LTglobal:money262144global:displayROUNDDOWNDIVIDEglobal:money65536global:transferROUNDDOWNMULTIPLYglobal:display65536global:display#CUSTOM:Coinemerald1LTglobal:money1048576global:displayROUNDDOWNDIVIDEglobal:money262144global:transferROUNDDOWNMULTIPLYglobal:display262144global:display#CUSTOM:Coinruby1LTglobal:money4194304global:displayROUNDDOWNDIVIDEglobal:money1048576global:transferROUNDDOWNMULTIPLYglobal:display1048576global:display#CUSTOM:Coindiamond1GTEglobal:money4194304global:displayROUNDDOWNDIVIDEglobal:money4194304global:transferROUNDDOWNMULTIPLYglobal:display4194304global:display#CUSTOM:Coinnetherite1Display: global:displayglobal:money_dispglobal:money#,###,###.### PC" + } +} \ No newline at end of file diff --git a/elements/BankTransfer.mod.json b/elements/BankTransfer.mod.json new file mode 100644 index 0000000..f13fd69 --- /dev/null +++ b/elements/BankTransfer.mod.json @@ -0,0 +1,7 @@ +{ + "_fv": 18, + "_type": "procedure", + "definition": { + "procedurexml": "no_ext_triggerGTEglobal:money0GT10global:moneyMINUSglobal:moneyglobal:transferglobal:transfer0global:display11" + } +} \ No newline at end of file diff --git a/elements/Coinamethyst.mod.json b/elements/Coinamethyst.mod.json new file mode 100644 index 0000000..aa60321 --- /dev/null +++ b/elements/Coinamethyst.mod.json @@ -0,0 +1,35 @@ +{ + "_fv": 18, + "_type": "item", + "definition": { + "renderType": 0, + "texture": "coin_amethyst", + "customModelName": "Normal", + "name": "Amethyst Coin", + "rarity": "RARE", + "creativeTab": { + "value": "No creative tab entry" + }, + "stackSize": 64, + "enchantability": 0, + "useDuration": 0, + "toolType": 1.0, + "damageCount": 0, + "recipeRemainder": { + "value": "" + }, + "destroyAnyBlock": false, + "immuneToFire": true, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false, + "enableMeleeDamage": false, + "damageVsEntity": 0.0, + "specialInfo": [ + "4,096PC" + ], + "hasGlow": false, + "guiBoundTo": "", + "inventorySize": 9, + "inventoryStackSize": 64 + } +} \ No newline at end of file diff --git a/elements/Coincopper.mod.json b/elements/Coincopper.mod.json new file mode 100644 index 0000000..650988b --- /dev/null +++ b/elements/Coincopper.mod.json @@ -0,0 +1,35 @@ +{ + "_fv": 18, + "_type": "item", + "definition": { + "renderType": 0, + "texture": "coin_bronze", + "customModelName": "Normal", + "name": "Copper Coin", + "rarity": "COMMON", + "creativeTab": { + "value": "No creative tab entry" + }, + "stackSize": 64, + "enchantability": 0, + "useDuration": 0, + "toolType": 1.0, + "damageCount": 0, + "recipeRemainder": { + "value": "" + }, + "destroyAnyBlock": false, + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false, + "enableMeleeDamage": false, + "damageVsEntity": 0.0, + "specialInfo": [ + "16PC" + ], + "hasGlow": false, + "guiBoundTo": "", + "inventorySize": 9, + "inventoryStackSize": 64 + } +} \ No newline at end of file diff --git a/elements/Coindiamond.mod.json b/elements/Coindiamond.mod.json new file mode 100644 index 0000000..c05a247 --- /dev/null +++ b/elements/Coindiamond.mod.json @@ -0,0 +1,35 @@ +{ + "_fv": 18, + "_type": "item", + "definition": { + "renderType": 0, + "texture": "coin_diamond", + "customModelName": "Normal", + "name": "Diamond Coin", + "rarity": "EPIC", + "creativeTab": { + "value": "No creative tab entry" + }, + "stackSize": 64, + "enchantability": 0, + "useDuration": 0, + "toolType": 1.0, + "damageCount": 0, + "recipeRemainder": { + "value": "" + }, + "destroyAnyBlock": false, + "immuneToFire": true, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false, + "enableMeleeDamage": false, + "damageVsEntity": 0.0, + "specialInfo": [ + "1,048,576PC" + ], + "hasGlow": false, + "guiBoundTo": "", + "inventorySize": 9, + "inventoryStackSize": 64 + } +} \ No newline at end of file diff --git a/elements/Coinemerald.mod.json b/elements/Coinemerald.mod.json new file mode 100644 index 0000000..8027cde --- /dev/null +++ b/elements/Coinemerald.mod.json @@ -0,0 +1,35 @@ +{ + "_fv": 18, + "_type": "item", + "definition": { + "renderType": 0, + "texture": "coin_emerald", + "customModelName": "Normal", + "name": "Emerald Coin", + "rarity": "EPIC", + "creativeTab": { + "value": "No creative tab entry" + }, + "stackSize": 64, + "enchantability": 0, + "useDuration": 0, + "toolType": 1.0, + "damageCount": 0, + "recipeRemainder": { + "value": "" + }, + "destroyAnyBlock": false, + "immuneToFire": true, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false, + "enableMeleeDamage": false, + "damageVsEntity": 0.0, + "specialInfo": [ + "65,536PC" + ], + "hasGlow": false, + "guiBoundTo": "", + "inventorySize": 9, + "inventoryStackSize": 64 + } +} \ No newline at end of file diff --git a/elements/Coingold.mod.json b/elements/Coingold.mod.json new file mode 100644 index 0000000..f2e8714 --- /dev/null +++ b/elements/Coingold.mod.json @@ -0,0 +1,35 @@ +{ + "_fv": 18, + "_type": "item", + "definition": { + "renderType": 0, + "texture": "coin_gold", + "customModelName": "Normal", + "name": "Gold Coin", + "rarity": "UNCOMMON", + "creativeTab": { + "value": "No creative tab entry" + }, + "stackSize": 64, + "enchantability": 0, + "useDuration": 0, + "toolType": 1.0, + "damageCount": 0, + "recipeRemainder": { + "value": "" + }, + "destroyAnyBlock": false, + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false, + "enableMeleeDamage": false, + "damageVsEntity": 0.0, + "specialInfo": [ + "256PC" + ], + "hasGlow": false, + "guiBoundTo": "", + "inventorySize": 9, + "inventoryStackSize": 64 + } +} \ No newline at end of file diff --git a/elements/Coiniron.mod.json b/elements/Coiniron.mod.json new file mode 100644 index 0000000..4d433fb --- /dev/null +++ b/elements/Coiniron.mod.json @@ -0,0 +1,35 @@ +{ + "_fv": 18, + "_type": "item", + "definition": { + "renderType": 0, + "texture": "coin_iron", + "customModelName": "Normal", + "name": "Iron Coin", + "rarity": "UNCOMMON", + "creativeTab": { + "value": "No creative tab entry" + }, + "stackSize": 64, + "enchantability": 0, + "useDuration": 0, + "toolType": 1.0, + "damageCount": 0, + "recipeRemainder": { + "value": "" + }, + "destroyAnyBlock": false, + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false, + "enableMeleeDamage": false, + "damageVsEntity": 0.0, + "specialInfo": [ + "64PC" + ], + "hasGlow": false, + "guiBoundTo": "", + "inventorySize": 9, + "inventoryStackSize": 64 + } +} \ No newline at end of file diff --git a/elements/Coinloot.mod.json b/elements/Coinloot.mod.json new file mode 100644 index 0000000..29e664f --- /dev/null +++ b/elements/Coinloot.mod.json @@ -0,0 +1,178 @@ +{ + "_fv": 18, + "_type": "loottable", + "definition": { + "type": "Chest", + "pools": [ + { + "minrolls": 1, + "maxrolls": 8, + "minbonusrolls": 1, + "maxbonusrolls": 4, + "hasbonusrolls": true, + "entries": [ + { + "type": "item", + "item": { + "value": "CUSTOM:Coinwood" + }, + "weight": 32, + "minCount": 1, + "maxCount": 8, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": true, + "explosionDecay": false, + "silkTouchMode": 0 + }, + { + "type": "item", + "item": { + "value": "CUSTOM:Coinstone" + }, + "weight": 16, + "minCount": 1, + "maxCount": 6, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": true, + "explosionDecay": false, + "silkTouchMode": 0 + }, + { + "type": "item", + "item": { + "value": "CUSTOM:Coincopper" + }, + "weight": 8, + "minCount": 1, + "maxCount": 4, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": true, + "explosionDecay": false, + "silkTouchMode": 0 + }, + { + "type": "item", + "item": { + "value": "CUSTOM:Coiniron" + }, + "weight": 4, + "minCount": 1, + "maxCount": 2, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": false, + "explosionDecay": false, + "silkTouchMode": 0 + }, + { + "type": "item", + "item": { + "value": "CUSTOM:Coingold" + }, + "weight": 1, + "minCount": 1, + "maxCount": 1, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": false, + "explosionDecay": false, + "silkTouchMode": 0 + } + ] + }, + { + "minrolls": 1, + "maxrolls": 16, + "minbonusrolls": 1, + "maxbonusrolls": 8, + "hasbonusrolls": true, + "entries": [ + { + "type": "item", + "item": { + "value": "CUSTOM:Coinstone" + }, + "weight": 8, + "minCount": 1, + "maxCount": 16, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": false, + "explosionDecay": false, + "silkTouchMode": 0 + }, + { + "type": "item", + "item": { + "value": "CUSTOM:Coinwood" + }, + "weight": 8, + "minCount": 1, + "maxCount": 24, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": false, + "explosionDecay": false, + "silkTouchMode": 0 + }, + { + "type": "item", + "item": { + "value": "CUSTOM:Coincopper" + }, + "weight": 4, + "minCount": 1, + "maxCount": 8, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": false, + "explosionDecay": false, + "silkTouchMode": 0 + } + ] + }, + { + "minrolls": 1, + "maxrolls": 32, + "minbonusrolls": 1, + "maxbonusrolls": 16, + "hasbonusrolls": true, + "entries": [ + { + "type": "item", + "item": { + "value": "CUSTOM:Coinwood" + }, + "weight": 8, + "minCount": 1, + "maxCount": 8, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": true, + "explosionDecay": false, + "silkTouchMode": 0 + }, + { + "type": "item", + "item": { + "value": "CUSTOM:Coinstone" + }, + "weight": 4, + "minCount": 1, + "maxCount": 4, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": false, + "explosionDecay": false, + "silkTouchMode": 0 + } + ] + } + ], + "name": "coinloot", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Coinnetherite.mod.json b/elements/Coinnetherite.mod.json new file mode 100644 index 0000000..9a0fb12 --- /dev/null +++ b/elements/Coinnetherite.mod.json @@ -0,0 +1,35 @@ +{ + "_fv": 18, + "_type": "item", + "definition": { + "renderType": 0, + "texture": "coin_netherite", + "customModelName": "Normal", + "name": "Netherite Coin", + "rarity": "EPIC", + "creativeTab": { + "value": "No creative tab entry" + }, + "stackSize": 64, + "enchantability": 0, + "useDuration": 0, + "toolType": 1.0, + "damageCount": 0, + "recipeRemainder": { + "value": "" + }, + "destroyAnyBlock": false, + "immuneToFire": true, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false, + "enableMeleeDamage": false, + "damageVsEntity": 0.0, + "specialInfo": [ + "4,194,304PC" + ], + "hasGlow": true, + "guiBoundTo": "", + "inventorySize": 9, + "inventoryStackSize": 64 + } +} \ No newline at end of file diff --git a/elements/Coinplatinum.mod.json b/elements/Coinplatinum.mod.json new file mode 100644 index 0000000..937db2f --- /dev/null +++ b/elements/Coinplatinum.mod.json @@ -0,0 +1,35 @@ +{ + "_fv": 18, + "_type": "item", + "definition": { + "renderType": 0, + "texture": "coin_platinum", + "customModelName": "Normal", + "name": "Platinum Coin", + "rarity": "UNCOMMON", + "creativeTab": { + "value": "No creative tab entry" + }, + "stackSize": 64, + "enchantability": 0, + "useDuration": 0, + "toolType": 1.0, + "damageCount": 0, + "recipeRemainder": { + "value": "" + }, + "destroyAnyBlock": false, + "immuneToFire": true, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false, + "enableMeleeDamage": false, + "damageVsEntity": 0.0, + "specialInfo": [ + "1,024PC" + ], + "hasGlow": true, + "guiBoundTo": "", + "inventorySize": 9, + "inventoryStackSize": 64 + } +} \ No newline at end of file diff --git a/elements/Coinruby.mod.json b/elements/Coinruby.mod.json new file mode 100644 index 0000000..8d9d336 --- /dev/null +++ b/elements/Coinruby.mod.json @@ -0,0 +1,35 @@ +{ + "_fv": 18, + "_type": "item", + "definition": { + "renderType": 0, + "texture": "coin_ruby", + "customModelName": "Normal", + "name": "Ruby Coin", + "rarity": "EPIC", + "creativeTab": { + "value": "No creative tab entry" + }, + "stackSize": 64, + "enchantability": 0, + "useDuration": 0, + "toolType": 1.0, + "damageCount": 0, + "recipeRemainder": { + "value": "" + }, + "destroyAnyBlock": false, + "immuneToFire": true, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false, + "enableMeleeDamage": false, + "damageVsEntity": 0.0, + "specialInfo": [ + "262,144PC" + ], + "hasGlow": false, + "guiBoundTo": "", + "inventorySize": 9, + "inventoryStackSize": 64 + } +} \ No newline at end of file diff --git a/elements/Coins.mod.json b/elements/Coins.mod.json new file mode 100644 index 0000000..567b146 --- /dev/null +++ b/elements/Coins.mod.json @@ -0,0 +1,50 @@ +{ + "_fv": 18, + "_type": "tag", + "definition": { + "type": "Items", + "items": [ + { + "value": "CUSTOM:Coinwood" + }, + { + "value": "CUSTOM:Coinstone" + }, + { + "value": "CUSTOM:Coincopper" + }, + { + "value": "CUSTOM:Coiniron" + }, + { + "value": "CUSTOM:Coingold" + }, + { + "value": "CUSTOM:Coinamethyst" + }, + { + "value": "CUSTOM:Coinsapphire" + }, + { + "value": "CUSTOM:Coinruby" + }, + { + "value": "CUSTOM:Coindiamond" + }, + { + "value": "CUSTOM:Coinemerald" + }, + { + "value": "CUSTOM:Coinnetherite" + }, + { + "value": "CUSTOM:Coinplatinum" + } + ], + "blocks": [], + "functions": [], + "entities": [], + "name": "coins", + "namespace": "forge" + } +} \ No newline at end of file diff --git a/elements/Coinsapphire.mod.json b/elements/Coinsapphire.mod.json new file mode 100644 index 0000000..2bbdf72 --- /dev/null +++ b/elements/Coinsapphire.mod.json @@ -0,0 +1,35 @@ +{ + "_fv": 18, + "_type": "item", + "definition": { + "renderType": 0, + "texture": "coin_sapphire", + "customModelName": "Normal", + "name": "Sapphire Coin", + "rarity": "RARE", + "creativeTab": { + "value": "No creative tab entry" + }, + "stackSize": 64, + "enchantability": 0, + "useDuration": 0, + "toolType": 1.0, + "damageCount": 0, + "recipeRemainder": { + "value": "" + }, + "destroyAnyBlock": false, + "immuneToFire": true, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false, + "enableMeleeDamage": false, + "damageVsEntity": 0.0, + "specialInfo": [ + "16,384PC" + ], + "hasGlow": false, + "guiBoundTo": "", + "inventorySize": 9, + "inventoryStackSize": 64 + } +} \ No newline at end of file diff --git a/elements/Coinstone.mod.json b/elements/Coinstone.mod.json new file mode 100644 index 0000000..48ce864 --- /dev/null +++ b/elements/Coinstone.mod.json @@ -0,0 +1,35 @@ +{ + "_fv": 18, + "_type": "item", + "definition": { + "renderType": 0, + "texture": "coin_stone", + "customModelName": "Normal", + "name": "Stone Coin", + "rarity": "COMMON", + "creativeTab": { + "value": "No creative tab entry" + }, + "stackSize": 64, + "enchantability": 0, + "useDuration": 0, + "toolType": 1.0, + "damageCount": 0, + "recipeRemainder": { + "value": "" + }, + "destroyAnyBlock": false, + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false, + "enableMeleeDamage": false, + "damageVsEntity": 0.0, + "specialInfo": [ + "4PC" + ], + "hasGlow": false, + "guiBoundTo": "", + "inventorySize": 9, + "inventoryStackSize": 64 + } +} \ No newline at end of file diff --git a/elements/Coinwood.mod.json b/elements/Coinwood.mod.json new file mode 100644 index 0000000..e2f7a26 --- /dev/null +++ b/elements/Coinwood.mod.json @@ -0,0 +1,35 @@ +{ + "_fv": 18, + "_type": "item", + "definition": { + "renderType": 0, + "texture": "coin_wood", + "customModelName": "Normal", + "name": "Wood Coin", + "rarity": "COMMON", + "creativeTab": { + "value": "No creative tab entry" + }, + "stackSize": 64, + "enchantability": 0, + "useDuration": 0, + "toolType": 1.0, + "damageCount": 0, + "recipeRemainder": { + "value": "" + }, + "destroyAnyBlock": false, + "immuneToFire": false, + "stayInGridWhenCrafting": false, + "damageOnCrafting": false, + "enableMeleeDamage": false, + "damageVsEntity": 0.0, + "specialInfo": [ + "1PC" + ], + "hasGlow": false, + "guiBoundTo": "", + "inventorySize": 9, + "inventoryStackSize": 64 + } +} \ No newline at end of file diff --git a/elements/Copperiron.mod.json b/elements/Copperiron.mod.json new file mode 100644 index 0000000..5166921 --- /dev/null +++ b/elements/Copperiron.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "CUSTOM:Coincopper" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coincopper" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coincopper" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coincopper" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coiniron" + }, + "name": "copperiron", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Copperstone.mod.json b/elements/Copperstone.mod.json new file mode 100644 index 0000000..459bfa4 --- /dev/null +++ b/elements/Copperstone.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 4, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coincopper" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coinstone" + }, + "name": "copperstone", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Diamondnetherite.mod.json b/elements/Diamondnetherite.mod.json new file mode 100644 index 0000000..95c5cc6 --- /dev/null +++ b/elements/Diamondnetherite.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "CUSTOM:Coindiamond" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coindiamond" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coindiamond" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coindiamond" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coinnetherite" + }, + "name": "diamondnetherite", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Diamondruby.mod.json b/elements/Diamondruby.mod.json new file mode 100644 index 0000000..291c319 --- /dev/null +++ b/elements/Diamondruby.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 4, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coindiamond" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coinruby" + }, + "name": "diamondruby", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Emeraldruby.mod.json b/elements/Emeraldruby.mod.json new file mode 100644 index 0000000..0fd7e41 --- /dev/null +++ b/elements/Emeraldruby.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "CUSTOM:Coinemerald" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinemerald" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinemerald" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinemerald" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coinruby" + }, + "name": "emeraldruby", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Emeraldsapphire.mod.json b/elements/Emeraldsapphire.mod.json new file mode 100644 index 0000000..c1ad54b --- /dev/null +++ b/elements/Emeraldsapphire.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 4, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinemerald" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coinsapphire" + }, + "name": "emeraldsapphire", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Endcity.mod.json b/elements/Endcity.mod.json new file mode 100644 index 0000000..f76a934 --- /dev/null +++ b/elements/Endcity.mod.json @@ -0,0 +1,62 @@ +{ + "_fv": 18, + "_type": "loottable", + "definition": { + "type": "Chest", + "pools": [ + { + "minrolls": 1, + "maxrolls": 4, + "minbonusrolls": 1, + "maxbonusrolls": 2, + "hasbonusrolls": true, + "entries": [ + { + "type": "item", + "item": { + "value": "CUSTOM:Coinamethyst" + }, + "weight": 1, + "minCount": 1, + "maxCount": 3, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": false, + "explosionDecay": false, + "silkTouchMode": 0 + }, + { + "type": "item", + "item": { + "value": "CUSTOM:Coinsapphire" + }, + "weight": 1, + "minCount": 1, + "maxCount": 2, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": false, + "explosionDecay": false, + "silkTouchMode": 0 + }, + { + "type": "item", + "item": { + "value": "CUSTOM:Coinruby" + }, + "weight": 1, + "minCount": 1, + "maxCount": 1, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": false, + "explosionDecay": false, + "silkTouchMode": 0 + } + ] + } + ], + "name": "chests/end_city_treasure", + "namespace": "minecraft" + } +} \ No newline at end of file diff --git a/elements/Goldiron.mod.json b/elements/Goldiron.mod.json new file mode 100644 index 0000000..0223b0d --- /dev/null +++ b/elements/Goldiron.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 4, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coingold" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coiniron" + }, + "name": "goldiron", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Goldplatinum.mod.json b/elements/Goldplatinum.mod.json new file mode 100644 index 0000000..bf00e6d --- /dev/null +++ b/elements/Goldplatinum.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "CUSTOM:Coingold" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coingold" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coingold" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coingold" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coinplatinum" + }, + "name": "goldplatinum", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Ironcopper.mod.json b/elements/Ironcopper.mod.json new file mode 100644 index 0000000..ffda478 --- /dev/null +++ b/elements/Ironcopper.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 4, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coiniron" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coincopper" + }, + "name": "ironcopper", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Irongold.mod.json b/elements/Irongold.mod.json new file mode 100644 index 0000000..0a988e5 --- /dev/null +++ b/elements/Irongold.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "CUSTOM:Coiniron" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coiniron" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coiniron" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coiniron" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coingold" + }, + "name": "irongold", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Makebronze.mod.json b/elements/Makebronze.mod.json new file mode 100644 index 0000000..f5356b8 --- /dev/null +++ b/elements/Makebronze.mod.json @@ -0,0 +1,23 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Smithing", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": false, + "smithingInputStack": { + "value": "Blocks.BELL" + }, + "smithingInputAdditionStack": { + "value": "Items.FLOWER_POT" + }, + "smithingReturnStack": { + "value": "CUSTOM:Coincopper" + }, + "name": "makebronze", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Makeiron.mod.json b/elements/Makeiron.mod.json new file mode 100644 index 0000000..7f3f159 --- /dev/null +++ b/elements/Makeiron.mod.json @@ -0,0 +1,23 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Smithing", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": false, + "smithingInputStack": { + "value": "Blocks.IRON_BLOCK" + }, + "smithingInputAdditionStack": { + "value": "Items.FLOWER_POT" + }, + "smithingReturnStack": { + "value": "CUSTOM:Coiniron" + }, + "name": "makeiron", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Makestone.mod.json b/elements/Makestone.mod.json new file mode 100644 index 0000000..cc60c33 --- /dev/null +++ b/elements/Makestone.mod.json @@ -0,0 +1,20 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Stone cutting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": false, + "stoneCuttingInputStack": { + "value": "Blocks.STONE_SLAB" + }, + "stoneCuttingReturnStack": { + "value": "CUSTOM:Coinstone" + }, + "name": "makestone", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Makestone2.mod.json b/elements/Makestone2.mod.json new file mode 100644 index 0000000..e385ef2 --- /dev/null +++ b/elements/Makestone2.mod.json @@ -0,0 +1,23 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Smithing", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": false, + "smithingInputStack": { + "value": "Blocks.STONE" + }, + "smithingInputAdditionStack": { + "value": "Items.FLOWER_POT" + }, + "smithingReturnStack": { + "value": "CUSTOM:Coinstone" + }, + "name": "makestone_2", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Makewood.mod.json b/elements/Makewood.mod.json new file mode 100644 index 0000000..ab497d0 --- /dev/null +++ b/elements/Makewood.mod.json @@ -0,0 +1,23 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Smithing", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": false, + "smithingInputStack": { + "value": "Blocks.LOG" + }, + "smithingInputAdditionStack": { + "value": "Items.FLOWER_POT" + }, + "smithingReturnStack": { + "value": "CUSTOM:Coinwood" + }, + "name": "makewood", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Makewood1.mod.json b/elements/Makewood1.mod.json new file mode 100644 index 0000000..bbe877e --- /dev/null +++ b/elements/Makewood1.mod.json @@ -0,0 +1,23 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Smithing", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": false, + "smithingInputStack": { + "value": "Items.LEATHER" + }, + "smithingInputAdditionStack": { + "value": "Items.FLOWER_POT" + }, + "smithingReturnStack": { + "value": "CUSTOM:Coinwood" + }, + "name": "makewood_1", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Makewood2.mod.json b/elements/Makewood2.mod.json new file mode 100644 index 0000000..6d920db --- /dev/null +++ b/elements/Makewood2.mod.json @@ -0,0 +1,23 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Smithing", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": false, + "smithingInputStack": { + "value": "Items.DYE#15" + }, + "smithingInputAdditionStack": { + "value": "Items.FLOWER_POT" + }, + "smithingReturnStack": { + "value": "CUSTOM:Coinwood" + }, + "name": "makewood_2", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Mineshaft.mod.json b/elements/Mineshaft.mod.json new file mode 100644 index 0000000..5f8d84e --- /dev/null +++ b/elements/Mineshaft.mod.json @@ -0,0 +1,76 @@ +{ + "_fv": 18, + "_type": "loottable", + "definition": { + "type": "Chest", + "pools": [ + { + "minrolls": 0, + "maxrolls": 17, + "minbonusrolls": 1, + "maxbonusrolls": 3, + "hasbonusrolls": true, + "entries": [ + { + "type": "item", + "item": { + "value": "CUSTOM:Coinwood" + }, + "weight": 15, + "minCount": 1, + "maxCount": 8, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": false, + "explosionDecay": false, + "silkTouchMode": 0 + }, + { + "type": "item", + "item": { + "value": "CUSTOM:Coinstone" + }, + "weight": 10, + "minCount": 1, + "maxCount": 4, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": false, + "explosionDecay": false, + "silkTouchMode": 0 + }, + { + "type": "item", + "item": { + "value": "CUSTOM:Coincopper" + }, + "weight": 5, + "minCount": 1, + "maxCount": 2, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": false, + "explosionDecay": false, + "silkTouchMode": 0 + }, + { + "type": "item", + "item": { + "value": "CUSTOM:Coiniron" + }, + "weight": 1, + "minCount": 1, + "maxCount": 1, + "minEnchantmentLevel": 0, + "maxEnchantmentLevel": 0, + "affectedByFortune": true, + "explosionDecay": false, + "silkTouchMode": 0 + } + ] + } + ], + "name": "chests/abandoned_mineshaft", + "namespace": "minecraft" + } +} \ No newline at end of file diff --git a/elements/Netheritediamond.mod.json b/elements/Netheritediamond.mod.json new file mode 100644 index 0000000..8b388ac --- /dev/null +++ b/elements/Netheritediamond.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 4, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinnetherite" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coindiamond" + }, + "name": "netheritediamond", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/OpenBank.mod.json b/elements/OpenBank.mod.json new file mode 100644 index 0000000..3593a6a --- /dev/null +++ b/elements/OpenBank.mod.json @@ -0,0 +1,12 @@ +{ + "_fv": 18, + "_type": "keybind", + "definition": { + "triggerKey": "RCONTROL", + "keyBindingName": "Open Bank", + "keyBindingCategoryKey": "misc", + "onKeyPressed": { + "name": "BankOpenGUI" + } + } +} \ No newline at end of file diff --git a/elements/Piggybank.mod.json b/elements/Piggybank.mod.json new file mode 100644 index 0000000..f93125e --- /dev/null +++ b/elements/Piggybank.mod.json @@ -0,0 +1,27 @@ +{ + "_fv": 18, + "_type": "achievement", + "definition": { + "achievementName": "Piggy Bank", + "achievementDescription": "Save up till you get a netherite coin", + "achievementIcon": { + "value": "CUSTOM:Coinnetherite" + }, + "background": "Default", + "disableDisplay": false, + "showPopup": true, + "announceToChat": true, + "hideIfNotCompleted": true, + "rewardLoot": [], + "rewardRecipes": [ + "Makebedrock" + ], + "rewardFunction": "No function", + "rewardXP": 8, + "achievementType": "challenge", + "parent": { + "value": "story/root" + }, + "triggerxml": "164CUSTOM:Coinnetherite" + } +} \ No newline at end of file diff --git a/elements/Platinumamethyst.mod.json b/elements/Platinumamethyst.mod.json new file mode 100644 index 0000000..6a9baf9 --- /dev/null +++ b/elements/Platinumamethyst.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "CUSTOM:Coinplatinum" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinplatinum" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinplatinum" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinplatinum" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coinamethyst" + }, + "name": "platinumamethyst", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Platinumgold.mod.json b/elements/Platinumgold.mod.json new file mode 100644 index 0000000..67bffb5 --- /dev/null +++ b/elements/Platinumgold.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 4, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinplatinum" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coingold" + }, + "name": "platinumgold", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Rottenflesh2Leather.mod.json b/elements/Rottenflesh2Leather.mod.json new file mode 100644 index 0000000..74fd2f1 --- /dev/null +++ b/elements/Rottenflesh2Leather.mod.json @@ -0,0 +1,20 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Campfire cooking", + "xpReward": 1.0, + "cookingTime": 400, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": false, + "campfireCookingInputStack": { + "value": "Items.ROTTEN_FLESH" + }, + "campfireCookingReturnStack": { + "value": "Items.LEATHER" + }, + "name": "rottenflesh_2_leather", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Rubydiamond.mod.json b/elements/Rubydiamond.mod.json new file mode 100644 index 0000000..f5d3c42 --- /dev/null +++ b/elements/Rubydiamond.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "CUSTOM:Coinruby" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinruby" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinruby" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinruby" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coindiamond" + }, + "name": "rubydiamond", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Rubyemerald.mod.json b/elements/Rubyemerald.mod.json new file mode 100644 index 0000000..8c632d0 --- /dev/null +++ b/elements/Rubyemerald.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 4, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinruby" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coinemerald" + }, + "name": "rubyemerald", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Sapphireamethyst.mod.json b/elements/Sapphireamethyst.mod.json new file mode 100644 index 0000000..b345a8a --- /dev/null +++ b/elements/Sapphireamethyst.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 4, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinsapphire" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coinamethyst" + }, + "name": "sapphireamethyst", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Sapphireemerald.mod.json b/elements/Sapphireemerald.mod.json new file mode 100644 index 0000000..b0673e9 --- /dev/null +++ b/elements/Sapphireemerald.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "CUSTOM:Coinsapphire" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinsapphire" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinsapphire" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinsapphire" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coinemerald" + }, + "name": "sapphireemerald", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Starter.mod.json b/elements/Starter.mod.json new file mode 100644 index 0000000..1e39172 --- /dev/null +++ b/elements/Starter.mod.json @@ -0,0 +1,30 @@ +{ + "_fv": 18, + "_type": "achievement", + "definition": { + "achievementName": "Starting the Economy", + "achievementDescription": "Get your first coins", + "achievementIcon": { + "value": "CUSTOM:Coingold" + }, + "background": "Default", + "disableDisplay": false, + "showPopup": true, + "announceToChat": true, + "hideIfNotCompleted": true, + "rewardLoot": [ + "Coinloot" + ], + "rewardRecipes": [ + "Woodstone", + "Stonecopper" + ], + "rewardFunction": "No function", + "rewardXP": 0, + "achievementType": "task", + "parent": { + "value": "story/root" + }, + "triggerxml": "" + } +} \ No newline at end of file diff --git a/elements/Stonecopper.mod.json b/elements/Stonecopper.mod.json new file mode 100644 index 0000000..2ddf02c --- /dev/null +++ b/elements/Stonecopper.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "CUSTOM:Coinstone" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinstone" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinstone" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinstone" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coincopper" + }, + "name": "stonecopper", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Stonewood.mod.json b/elements/Stonewood.mod.json new file mode 100644 index 0000000..38ffe2f --- /dev/null +++ b/elements/Stonewood.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 4, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinstone" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coinwood" + }, + "name": "stonewood", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/elements/Woodstone.mod.json b/elements/Woodstone.mod.json new file mode 100644 index 0000000..5557df6 --- /dev/null +++ b/elements/Woodstone.mod.json @@ -0,0 +1,46 @@ +{ + "_fv": 18, + "_type": "recipe", + "definition": { + "recipeType": "Crafting", + "xpReward": 0.0, + "cookingTime": 200, + "recipeRetstackSize": 1, + "group": "", + "recipeShapeless": true, + "recipeSlots": [ + { + "value": "CUSTOM:Coinwood" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinwood" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinwood" + }, + { + "value": "" + }, + { + "value": "CUSTOM:Coinwood" + } + ], + "recipeReturnStack": { + "value": "CUSTOM:Coinstone" + }, + "name": "woodstone", + "namespace": "mod" + } +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..0d4a9516871afd710a9d84d89e31ba77745607bd GIT binary patch literal 54413 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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..1c4bcc2 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.1-all.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..cccdd3d --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..e95643d --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/markscoins.mcreator b/markscoins.mcreator new file mode 100644 index 0000000..88ebcb5 --- /dev/null +++ b/markscoins.mcreator @@ -0,0 +1,716 @@ +{ + "id_map": {}, + "mod_elements": [ + { + "name": "Coinwood", + "type": "item", + "sortid": 1, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "coinwood", + "path": "~/items" + }, + { + "name": "Coinstone", + "type": "item", + "sortid": 2, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "coinstone", + "path": "~/items" + }, + { + "name": "Woodstone", + "type": "recipe", + "sortid": 3, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "woodstone", + "path": "~/recipes/up" + }, + { + "name": "Coincopper", + "type": "item", + "sortid": 4, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "coincopper", + "path": "~/items" + }, + { + "name": "Coiniron", + "type": "item", + "sortid": 5, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "coiniron", + "path": "~/items" + }, + { + "name": "Coingold", + "type": "item", + "sortid": 6, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "coingold", + "path": "~/items" + }, + { + "name": "Coinamethyst", + "type": "item", + "sortid": 7, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "coinamethyst", + "path": "~/items" + }, + { + "name": "Coinsapphire", + "type": "item", + "sortid": 8, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "coinsapphire", + "path": "~/items" + }, + { + "name": "Coinruby", + "type": "item", + "sortid": 9, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "coinruby", + "path": "~/items" + }, + { + "name": "Coindiamond", + "type": "item", + "sortid": 10, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "coindiamond", + "path": "~/items" + }, + { + "name": "Coinemerald", + "type": "item", + "sortid": 11, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "coinemerald", + "path": "~/items" + }, + { + "name": "Stonecopper", + "type": "recipe", + "sortid": 12, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "stonecopper", + "path": "~/recipes/up" + }, + { + "name": "Copperiron", + "type": "recipe", + "sortid": 13, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "copperiron", + "path": "~/recipes/up" + }, + { + "name": "Irongold", + "type": "recipe", + "sortid": 14, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "irongold", + "path": "~/recipes/up" + }, + { + "name": "Diamondruby", + "type": "recipe", + "sortid": 16, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "diamondruby", + "path": "~/recipes/down" + }, + { + "name": "Sapphireamethyst", + "type": "recipe", + "sortid": 18, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "sapphireamethyst", + "path": "~/recipes/down" + }, + { + "name": "Goldiron", + "type": "recipe", + "sortid": 20, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "goldiron", + "path": "~/recipes/down" + }, + { + "name": "Ironcopper", + "type": "recipe", + "sortid": 21, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "ironcopper", + "path": "~/recipes/down" + }, + { + "name": "Copperstone", + "type": "recipe", + "sortid": 22, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "copperstone", + "path": "~/recipes/down" + }, + { + "name": "Stonewood", + "type": "recipe", + "sortid": 23, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "stonewood", + "path": "~/recipes/down" + }, + { + "name": "Amethystsapphire", + "type": "recipe", + "sortid": 25, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "amethystsapphire", + "path": "~/recipes/up" + }, + { + "name": "Rubydiamond", + "type": "recipe", + "sortid": 27, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "rubydiamond", + "path": "~/recipes/up" + }, + { + "name": "Coinnetherite", + "type": "item", + "sortid": 30, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "coinnetherite", + "path": "~/items" + }, + { + "name": "Makestone", + "type": "recipe", + "sortid": 33, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "makestone", + "path": "~/recipes/center" + }, + { + "name": "Makestone2", + "type": "recipe", + "sortid": 35, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "makestone_2", + "path": "~/recipes/center" + }, + { + "name": "Makeiron", + "type": "recipe", + "sortid": 36, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "makeiron", + "path": "~/recipes/center" + }, + { + "name": "Makebronze", + "type": "recipe", + "sortid": 37, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "makebronze", + "path": "~/recipes/center" + }, + { + "name": "Makewood1", + "type": "recipe", + "sortid": 38, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "makewood_1", + "path": "~/recipes/center" + }, + { + "name": "Makewood2", + "type": "recipe", + "sortid": 39, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "makewood_2", + "path": "~/recipes/center" + }, + { + "name": "Rottenflesh2Leather", + "type": "recipe", + "sortid": 40, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "rottenflesh_2_leather", + "path": "~/recipes/center" + }, + { + "name": "Coinloot", + "type": "loottable", + "sortid": 42, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "coinloot", + "path": "~/lootTable" + }, + { + "name": "Piggybank", + "type": "achievement", + "sortid": 43, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "piggybank", + "path": "~/advancments" + }, + { + "name": "Makewood", + "type": "recipe", + "sortid": 47, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "makewood", + "path": "~/recipes/center" + }, + { + "name": "Starter", + "type": "achievement", + "sortid": 48, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "starter", + "path": "~/advancments" + }, + { + "name": "Coinplatinum", + "type": "item", + "sortid": 49, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "coinplatinum", + "path": "~/items" + }, + { + "name": "Endcity", + "type": "loottable", + "sortid": 50, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "endcity", + "path": "~/lootTable" + }, + { + "name": "BankGUI", + "type": "gui", + "sortid": 51, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "bank_gui", + "path": "~/procedures" + }, + { + "name": "OpenBank", + "type": "keybind", + "sortid": 54, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "open_bank", + "path": "~/procedures" + }, + { + "name": "Coins", + "type": "tag", + "sortid": 57, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "coins", + "path": "~/items" + }, + { + "name": "BankInputCalc", + "type": "procedure", + "sortid": 59, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "bank_input_calc", + "metadata": { + "dependencies": [ + { + "name": "entity", + "type": "entity" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/procedures" + }, + { + "name": "BankOutputCalc", + "type": "procedure", + "sortid": 60, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "bank_output_calc", + "metadata": { + "dependencies": [ + { + "name": "entity", + "type": "entity" + } + ] + }, + "path": "~/procedures" + }, + { + "name": "BankTransfer", + "type": "procedure", + "sortid": 61, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "bank_transfer", + "metadata": { + "dependencies": [ + { + "name": "entity", + "type": "entity" + } + ] + }, + "path": "~/procedures" + }, + { + "name": "BankOpenGUI", + "type": "procedure", + "sortid": 62, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "bank_open_gui", + "metadata": { + "dependencies": [ + { + "name": "entity", + "type": "entity" + }, + { + "name": "x", + "type": "number" + }, + { + "name": "y", + "type": "number" + }, + { + "name": "z", + "type": "number" + }, + { + "name": "world", + "type": "world" + } + ] + }, + "path": "~/procedures" + }, + { + "name": "Goldplatinum", + "type": "recipe", + "sortid": 63, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "goldplatinum", + "path": "~/recipes/up" + }, + { + "name": "Platinumamethyst", + "type": "recipe", + "sortid": 64, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "platinumamethyst", + "path": "~/recipes/up" + }, + { + "name": "Sapphireemerald", + "type": "recipe", + "sortid": 65, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "sapphireemerald", + "path": "~/recipes/up" + }, + { + "name": "Emeraldruby", + "type": "recipe", + "sortid": 66, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "emeraldruby", + "path": "~/recipes/up" + }, + { + "name": "Diamondnetherite", + "type": "recipe", + "sortid": 67, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "diamondnetherite", + "path": "~/recipes/up" + }, + { + "name": "Netheritediamond", + "type": "recipe", + "sortid": 68, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "netheritediamond", + "path": "~/recipes/down" + }, + { + "name": "Rubyemerald", + "type": "recipe", + "sortid": 69, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "rubyemerald", + "path": "~/recipes/down" + }, + { + "name": "Emeraldsapphire", + "type": "recipe", + "sortid": 70, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "emeraldsapphire", + "path": "~/recipes/down" + }, + { + "name": "Amethystplatinum", + "type": "recipe", + "sortid": 71, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "amethystplatinum", + "path": "~/recipes/down" + }, + { + "name": "Platinumgold", + "type": "recipe", + "sortid": 72, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "platinumgold", + "path": "~/recipes/down" + }, + { + "name": "Mineshaft", + "type": "loottable", + "sortid": 73, + "compiles": true, + "locked_code": false, + "ids": {}, + "registry_name": "mineshaft", + "path": "~/lootTable" + } + ], + "variable_elements": [ + { + "name": "money", + "type": "number", + "scope": "player_persistent", + "value": "0" + }, + { + "name": "transfer", + "type": "number", + "scope": "player_persistent", + "value": "0" + }, + { + "name": "display", + "type": "number", + "scope": "player_persistent", + "value": "0" + }, + { + "name": "money_disp", + "type": "string", + "scope": "player_persistent", + "value": "0 PC" + } + ], + "sound_elements": [], + "language_map": { + "en_us": { + "item.markscustom.coinnetherite": "Netherite Coin", + "item.markscustom.coinsapphire": "Sapphire Coin", + "key.markscustom.open_bank": "Open Bank", + "item.markscustom.coinplatinum": "Platinum Coin", + "key.markscoins.open_bank": "Open Bank", + "item.markscoins.coinnetherite": "Netherite Coin", + "item.markscustom.coinwood": "Wood Coin", + "advancements.piggybank.descr": "Save up till you get a netherite coin", + "item.markscoins.coinamethyst": "Amethyst Coin", + "item.markscustom.coindiamond": "Diamond Coin", + "item.markscustom.coingold": "Gold Coin", + "item.markscoins.coinsapphire": "Sapphire Coin", + "advancements.piggybank.title": "Piggy Bank", + "advancements.starter.descr": "Get your first coins", + "item.markscustom.coinstone": "Stone Coin", + "item.markscustom.coincopper": "Copper Coin", + "item.markscustom.coinemerald": "Emerald Coin", + "item.markscoins.coiniron": "Iron Coin", + "item.markscustom.coinamethyst": "Amethyst Coin", + "item.markscoins.coingold": "Gold Coin", + "item.markscustom.coinruby": "Ruby Coin", + "advancements.starter.title": "Starting the Economy", + "item.markscoins.coinruby": "Ruby Coin", + "item.markscoins.coincopper": "Copper Coin", + "item.markscoins.coinplatinum": "Platinum Coin", + "item.markscoins.coinemerald": "Emerald Coin", + "item.markscoins.coinstone": "Stone Coin", + "item.markscoins.coinwood": "Wood Coin", + "item.markscoins.coindiamond": "Diamond Coin", + "item.markscustom.coiniron": "Iron Coin" + } + }, + "foldersRoot": { + "name": "~", + "children": [ + { + "name": "advancments", + "children": [] + }, + { + "name": "items", + "children": [] + }, + { + "name": "lootTable", + "children": [] + }, + { + "name": "procedures", + "children": [] + }, + { + "name": "recipes", + "children": [ + { + "name": "up", + "children": [] + }, + { + "name": "down", + "children": [] + }, + { + "name": "center", + "children": [] + } + ] + } + ] + }, + "workspaceSettings": { + "modid": "markscoins", + "modName": "Mark\u0027s Coins", + "version": "1.0.0", + "author": "marewey, MCreator", + "websiteURL": "https://mcreator.net", + "license": "Academic Free License v3.0", + "disableForgeVersionCheck": true, + "serverSideOnly": false, + "modPicture": "coin_diamond", + "requiredMods": [], + "dependencies": [], + "dependants": [], + "mcreatorDependencies": [], + "currentGenerator": "forge-1.16.5", + "credits": "Created using mod maker MCreator - https://mcreator.net/about", + "modElementsPackage": "net.rewey.markscoins", + "lockBaseModFiles": false + }, + "mcreatorVersion": 202100118117 +} \ No newline at end of file diff --git a/mcreator.gradle b/mcreator.gradle new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/net/rewey/markscoins/MarkscoinsMod.java b/src/main/java/net/rewey/markscoins/MarkscoinsMod.java new file mode 100644 index 0000000..0a83d01 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/MarkscoinsMod.java @@ -0,0 +1,100 @@ +/* + * MCreator note: + * + * If you lock base mod element files, you can edit this file and the proxy files + * and they won't get overwritten. If you change your mod package or modid, you + * need to apply these changes to this file MANUALLY. + * + * Settings in @Mod annotation WON'T be changed in case of the base mod element + * files lock too, so you need to set them manually here in such case. + * + * Keep the MarkscoinsModElements object in this class and all calls to this object + * INTACT in order to preserve functionality of mod elements generated by MCreator. + * + * If you do not lock base mod element files in Workspace settings, this file + * will be REGENERATED on each build. + * + */ +package net.rewey.markscoins; + +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +import net.minecraftforge.fml.network.simple.SimpleChannel; +import net.minecraftforge.fml.network.NetworkRegistry; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fml.event.server.FMLServerStartingEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.common.MinecraftForge; + +import net.minecraft.util.ResourceLocation; +import net.minecraft.item.Item; +import net.minecraft.entity.EntityType; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.block.Block; + +import java.util.function.Supplier; + +@Mod("markscoins") +public class MarkscoinsMod { + public static final Logger LOGGER = LogManager.getLogger(MarkscoinsMod.class); + private static final String PROTOCOL_VERSION = "1"; + public static final SimpleChannel PACKET_HANDLER = NetworkRegistry.newSimpleChannel(new ResourceLocation("markscoins", "markscoins"), + () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals); + public MarkscoinsModElements elements; + public MarkscoinsMod() { + elements = new MarkscoinsModElements(); + FMLJavaModLoadingContext.get().getModEventBus().register(this); + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::init); + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientLoad); + MinecraftForge.EVENT_BUS.register(new MarkscoinsModFMLBusEvents(this)); + } + + private void init(FMLCommonSetupEvent event) { + elements.getElements().forEach(element -> element.init(event)); + } + + public void clientLoad(FMLClientSetupEvent event) { + elements.getElements().forEach(element -> element.clientLoad(event)); + } + + @SubscribeEvent + public void registerBlocks(RegistryEvent.Register event) { + event.getRegistry().registerAll(elements.getBlocks().stream().map(Supplier::get).toArray(Block[]::new)); + } + + @SubscribeEvent + public void registerItems(RegistryEvent.Register event) { + event.getRegistry().registerAll(elements.getItems().stream().map(Supplier::get).toArray(Item[]::new)); + } + + @SubscribeEvent + public void registerEntities(RegistryEvent.Register> event) { + event.getRegistry().registerAll(elements.getEntities().stream().map(Supplier::get).toArray(EntityType[]::new)); + } + + @SubscribeEvent + public void registerEnchantments(RegistryEvent.Register event) { + event.getRegistry().registerAll(elements.getEnchantments().stream().map(Supplier::get).toArray(Enchantment[]::new)); + } + + @SubscribeEvent + public void registerSounds(RegistryEvent.Register event) { + elements.registerSounds(event); + } + private static class MarkscoinsModFMLBusEvents { + private final MarkscoinsMod parent; + MarkscoinsModFMLBusEvents(MarkscoinsMod parent) { + this.parent = parent; + } + + @SubscribeEvent + public void serverLoad(FMLServerStartingEvent event) { + this.parent.elements.getElements().forEach(element -> element.serverLoad(event)); + } + } +} diff --git a/src/main/java/net/rewey/markscoins/MarkscoinsModElements.java b/src/main/java/net/rewey/markscoins/MarkscoinsModElements.java new file mode 100644 index 0000000..5ce074c --- /dev/null +++ b/src/main/java/net/rewey/markscoins/MarkscoinsModElements.java @@ -0,0 +1,126 @@ +/* + * MCreator note: + * + * This file is autogenerated to connect all MCreator mod elements together. + * + */ +package net.rewey.markscoins; + +import net.minecraftforge.forgespi.language.ModFileScanData; +import net.minecraftforge.fml.network.NetworkEvent; +import net.minecraftforge.fml.event.server.FMLServerStartingEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.ModList; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.util.ResourceLocation; +import net.minecraft.tags.Tag; +import net.minecraft.network.PacketBuffer; +import net.minecraft.item.Item; +import net.minecraft.entity.EntityType; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.block.Block; + +import java.util.function.Supplier; +import java.util.function.Function; +import java.util.function.BiConsumer; +import java.util.Set; +import java.util.Map; +import java.util.List; +import java.util.HashMap; +import java.util.Collections; +import java.util.ArrayList; + +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Retention; + +public class MarkscoinsModElements { + public final List elements = new ArrayList<>(); + public final List> blocks = new ArrayList<>(); + public final List> items = new ArrayList<>(); + public final List>> entities = new ArrayList<>(); + public final List> enchantments = new ArrayList<>(); + public static Map sounds = new HashMap<>(); + public MarkscoinsModElements() { + try { + ModFileScanData modFileInfo = ModList.get().getModFileById("markscoins").getFile().getScanResult(); + Set annotations = modFileInfo.getAnnotations(); + for (ModFileScanData.AnnotationData annotationData : annotations) { + if (annotationData.getAnnotationType().getClassName().equals(ModElement.Tag.class.getName())) { + Class clazz = Class.forName(annotationData.getClassType().getClassName()); + if (clazz.getSuperclass() == MarkscoinsModElements.ModElement.class) + elements.add((MarkscoinsModElements.ModElement) clazz.getConstructor(this.getClass()).newInstance(this)); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + Collections.sort(elements); + elements.forEach(MarkscoinsModElements.ModElement::initElements); + MinecraftForge.EVENT_BUS.register(new MarkscoinsModVariables(this)); + } + + public void registerSounds(RegistryEvent.Register event) { + for (Map.Entry sound : sounds.entrySet()) + event.getRegistry().register(sound.getValue().setRegistryName(sound.getKey())); + } + private int messageID = 0; + public void addNetworkMessage(Class messageType, BiConsumer encoder, Function decoder, + BiConsumer> messageConsumer) { + MarkscoinsMod.PACKET_HANDLER.registerMessage(messageID, messageType, encoder, decoder, messageConsumer); + messageID++; + } + + public List getElements() { + return elements; + } + + public List> getBlocks() { + return blocks; + } + + public List> getItems() { + return items; + } + + public List>> getEntities() { + return entities; + } + + public List> getEnchantments() { + return enchantments; + } + public static class ModElement implements Comparable { + @Retention(RetentionPolicy.RUNTIME) + public @interface Tag { + } + protected final MarkscoinsModElements elements; + protected final int sortid; + public ModElement(MarkscoinsModElements elements, int sortid) { + this.elements = elements; + this.sortid = sortid; + } + + public void initElements() { + } + + public void init(FMLCommonSetupEvent event) { + } + + public void serverLoad(FMLServerStartingEvent event) { + } + + @OnlyIn(Dist.CLIENT) + public void clientLoad(FMLClientSetupEvent event) { + } + + @Override + public int compareTo(ModElement other) { + return this.sortid - other.sortid; + } + } +} diff --git a/src/main/java/net/rewey/markscoins/MarkscoinsModVariables.java b/src/main/java/net/rewey/markscoins/MarkscoinsModVariables.java new file mode 100644 index 0000000..bfb42ba --- /dev/null +++ b/src/main/java/net/rewey/markscoins/MarkscoinsModVariables.java @@ -0,0 +1,161 @@ +package net.rewey.markscoins; + +import net.minecraftforge.fml.network.PacketDistributor; +import net.minecraftforge.fml.network.NetworkEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.entity.player.PlayerEvent; +import net.minecraftforge.event.AttachCapabilitiesEvent; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.common.util.FakePlayer; +import net.minecraftforge.common.capabilities.ICapabilitySerializable; +import net.minecraftforge.common.capabilities.CapabilityManager; +import net.minecraftforge.common.capabilities.CapabilityInject; +import net.minecraftforge.common.capabilities.Capability; + +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Direction; +import net.minecraft.network.PacketBuffer; +import net.minecraft.nbt.INBT; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.Entity; +import net.minecraft.client.Minecraft; + +import java.util.function.Supplier; + +public class MarkscoinsModVariables { + public MarkscoinsModVariables(MarkscoinsModElements elements) { + elements.addNetworkMessage(PlayerVariablesSyncMessage.class, PlayerVariablesSyncMessage::buffer, PlayerVariablesSyncMessage::new, + PlayerVariablesSyncMessage::handler); + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::init); + } + + private void init(FMLCommonSetupEvent event) { + CapabilityManager.INSTANCE.register(PlayerVariables.class, new PlayerVariablesStorage(), PlayerVariables::new); + } + @CapabilityInject(PlayerVariables.class) + public static Capability PLAYER_VARIABLES_CAPABILITY = null; + @SubscribeEvent + public void onAttachCapabilities(AttachCapabilitiesEvent event) { + if (event.getObject() instanceof PlayerEntity && !(event.getObject() instanceof FakePlayer)) + event.addCapability(new ResourceLocation("markscoins", "player_variables"), new PlayerVariablesProvider()); + } + private static class PlayerVariablesProvider implements ICapabilitySerializable { + private final LazyOptional instance = LazyOptional.of(PLAYER_VARIABLES_CAPABILITY::getDefaultInstance); + @Override + public LazyOptional getCapability(Capability cap, Direction side) { + return cap == PLAYER_VARIABLES_CAPABILITY ? instance.cast() : LazyOptional.empty(); + } + + @Override + public INBT serializeNBT() { + return PLAYER_VARIABLES_CAPABILITY.getStorage().writeNBT(PLAYER_VARIABLES_CAPABILITY, this.instance.orElseThrow(RuntimeException::new), + null); + } + + @Override + public void deserializeNBT(INBT nbt) { + PLAYER_VARIABLES_CAPABILITY.getStorage().readNBT(PLAYER_VARIABLES_CAPABILITY, this.instance.orElseThrow(RuntimeException::new), null, + nbt); + } + } + + private static class PlayerVariablesStorage implements Capability.IStorage { + @Override + public INBT writeNBT(Capability capability, PlayerVariables instance, Direction side) { + CompoundNBT nbt = new CompoundNBT(); + nbt.putDouble("money", instance.money); + nbt.putDouble("transfer", instance.transfer); + nbt.putDouble("display", instance.display); + nbt.putString("money_disp", instance.money_disp); + return nbt; + } + + @Override + public void readNBT(Capability capability, PlayerVariables instance, Direction side, INBT inbt) { + CompoundNBT nbt = (CompoundNBT) inbt; + instance.money = nbt.getDouble("money"); + instance.transfer = nbt.getDouble("transfer"); + instance.display = nbt.getDouble("display"); + instance.money_disp = nbt.getString("money_disp"); + } + } + + public static class PlayerVariables { + public double money = 0; + public double transfer = 0; + public double display = 0; + public String money_disp = "0 PC"; + public void syncPlayerVariables(Entity entity) { + if (entity instanceof ServerPlayerEntity) + MarkscoinsMod.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) entity), + new PlayerVariablesSyncMessage(this)); + } + } + @SubscribeEvent + public void onPlayerLoggedInSyncPlayerVariables(PlayerEvent.PlayerLoggedInEvent event) { + if (!event.getPlayer().world.isRemote()) + ((PlayerVariables) event.getPlayer().getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables())) + .syncPlayerVariables(event.getPlayer()); + } + + @SubscribeEvent + public void onPlayerRespawnedSyncPlayerVariables(PlayerEvent.PlayerRespawnEvent event) { + if (!event.getPlayer().world.isRemote()) + ((PlayerVariables) event.getPlayer().getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables())) + .syncPlayerVariables(event.getPlayer()); + } + + @SubscribeEvent + public void onPlayerChangedDimensionSyncPlayerVariables(PlayerEvent.PlayerChangedDimensionEvent event) { + if (!event.getPlayer().world.isRemote()) + ((PlayerVariables) event.getPlayer().getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables())) + .syncPlayerVariables(event.getPlayer()); + } + + @SubscribeEvent + public void clonePlayer(PlayerEvent.Clone event) { + PlayerVariables original = ((PlayerVariables) event.getOriginal().getCapability(PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new PlayerVariables())); + PlayerVariables clone = ((PlayerVariables) event.getEntity().getCapability(PLAYER_VARIABLES_CAPABILITY, null).orElse(new PlayerVariables())); + clone.money = original.money; + clone.transfer = original.transfer; + clone.display = original.display; + clone.money_disp = original.money_disp; + if (!event.isWasDeath()) { + } + } + public static class PlayerVariablesSyncMessage { + public PlayerVariables data; + public PlayerVariablesSyncMessage(PacketBuffer buffer) { + this.data = new PlayerVariables(); + new PlayerVariablesStorage().readNBT(null, this.data, null, buffer.readCompoundTag()); + } + + public PlayerVariablesSyncMessage(PlayerVariables data) { + this.data = data; + } + + public static void buffer(PlayerVariablesSyncMessage message, PacketBuffer buffer) { + buffer.writeCompoundTag((CompoundNBT) new PlayerVariablesStorage().writeNBT(null, message.data, null)); + } + + public static void handler(PlayerVariablesSyncMessage message, Supplier contextSupplier) { + NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + if (!context.getDirection().getReceptionSide().isServer()) { + PlayerVariables variables = ((PlayerVariables) Minecraft.getInstance().player.getCapability(PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new PlayerVariables())); + variables.money = message.data.money; + variables.transfer = message.data.transfer; + variables.display = message.data.display; + variables.money_disp = message.data.money_disp; + } + }); + context.setPacketHandled(true); + } + } +} diff --git a/src/main/java/net/rewey/markscoins/gui/BankGUIGui.java b/src/main/java/net/rewey/markscoins/gui/BankGUIGui.java new file mode 100644 index 0000000..d219ea8 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/gui/BankGUIGui.java @@ -0,0 +1,448 @@ + +package net.rewey.markscoins.gui; + +import net.rewey.markscoins.procedures.BankTransferProcedure; +import net.rewey.markscoins.procedures.BankOutputCalcProcedure; +import net.rewey.markscoins.procedures.BankInputCalcProcedure; +import net.rewey.markscoins.MarkscoinsModElements; +import net.rewey.markscoins.MarkscoinsMod; + +import net.minecraftforge.items.SlotItemHandler; +import net.minecraftforge.items.ItemStackHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.fml.network.NetworkEvent; +import net.minecraftforge.fml.network.IContainerFactory; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fml.DeferredWorkQueue; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.world.World; +import net.minecraft.util.math.BlockPos; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.network.PacketBuffer; +import net.minecraft.item.ItemStack; +import net.minecraft.inventory.container.Slot; +import net.minecraft.inventory.container.ContainerType; +import net.minecraft.inventory.container.Container; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.Entity; +import net.minecraft.client.gui.ScreenManager; + +import java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +@MarkscoinsModElements.ModElement.Tag +public class BankGUIGui extends MarkscoinsModElements.ModElement { + public static HashMap guistate = new HashMap(); + private static ContainerType containerType = null; + public BankGUIGui(MarkscoinsModElements instance) { + super(instance, 51); + elements.addNetworkMessage(ButtonPressedMessage.class, ButtonPressedMessage::buffer, ButtonPressedMessage::new, + ButtonPressedMessage::handler); + elements.addNetworkMessage(GUISlotChangedMessage.class, GUISlotChangedMessage::buffer, GUISlotChangedMessage::new, + GUISlotChangedMessage::handler); + containerType = new ContainerType<>(new GuiContainerModFactory()); + FMLJavaModLoadingContext.get().getModEventBus().register(new ContainerRegisterHandler()); + MinecraftForge.EVENT_BUS.register(this); + } + private static class ContainerRegisterHandler { + @SubscribeEvent + public void registerContainer(RegistryEvent.Register> event) { + event.getRegistry().register(containerType.setRegistryName("bank_gui")); + } + } + @OnlyIn(Dist.CLIENT) + public void initElements() { + DeferredWorkQueue.runLater(() -> ScreenManager.registerFactory(containerType, BankGUIGuiWindow::new)); + } + + @SubscribeEvent + public void onPlayerTick(TickEvent.PlayerTickEvent event) { + PlayerEntity entity = event.player; + if (event.phase == TickEvent.Phase.END && entity.openContainer instanceof GuiContainerMod) { + World world = entity.world; + double x = entity.getPosX(); + double y = entity.getPosY(); + double z = entity.getPosZ(); + { + Map $_dependencies = new HashMap<>(); + $_dependencies.put("entity", entity); + BankOutputCalcProcedure.executeProcedure($_dependencies); + } + } + } + public static class GuiContainerModFactory implements IContainerFactory { + public GuiContainerMod create(int id, PlayerInventory inv, PacketBuffer extraData) { + return new GuiContainerMod(id, inv, extraData); + } + } + + public static class GuiContainerMod extends Container implements Supplier> { + World world; + PlayerEntity entity; + int x, y, z; + private IItemHandler internal; + private Map customSlots = new HashMap<>(); + private boolean bound = false; + public GuiContainerMod(int id, PlayerInventory inv, PacketBuffer extraData) { + super(containerType, id); + this.entity = inv.player; + this.world = inv.player.world; + this.internal = new ItemStackHandler(2); + BlockPos pos = null; + if (extraData != null) { + pos = extraData.readBlockPos(); + this.x = pos.getX(); + this.y = pos.getY(); + this.z = pos.getZ(); + } + if (pos != null) { + if (extraData.readableBytes() == 1) { // bound to item + byte hand = extraData.readByte(); + ItemStack itemstack; + if (hand == 0) + itemstack = this.entity.getHeldItemMainhand(); + else + itemstack = this.entity.getHeldItemOffhand(); + itemstack.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else if (extraData.readableBytes() > 1) { + extraData.readByte(); // drop padding + Entity entity = world.getEntityByID(extraData.readVarInt()); + if (entity != null) + entity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } else { // might be bound to block + TileEntity ent = inv.player != null ? inv.player.world.getTileEntity(pos) : null; + if (ent != null) { + ent.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null).ifPresent(capability -> { + this.internal = capability; + this.bound = true; + }); + } + } + } + this.customSlots.put(0, this.addSlot(new SlotItemHandler(internal, 0, 24, 53) { + @Override + public void onSlotChanged() { + super.onSlotChanged(); + GuiContainerMod.this.slotChanged(0, 0, 0); + } + })); + this.customSlots.put(1, this.addSlot(new SlotItemHandler(internal, 1, 132, 53) { + @Override + public boolean canTakeStack(PlayerEntity player) { + return false; + } + + @Override + public ItemStack onTake(PlayerEntity entity, ItemStack stack) { + ItemStack retval = super.onTake(entity, stack); + GuiContainerMod.this.slotChanged(1, 1, 0); + return retval; + } + + @Override + public boolean isItemValid(ItemStack stack) { + return false; + } + })); + int si; + int sj; + for (si = 0; si < 3; ++si) + for (sj = 0; sj < 9; ++sj) + this.addSlot(new Slot(inv, sj + (si + 1) * 9, 0 + 8 + sj * 18, 0 + 84 + si * 18)); + for (si = 0; si < 9; ++si) + this.addSlot(new Slot(inv, si, 0 + 8 + si * 18, 0 + 142)); + } + + public Map get() { + return customSlots; + } + + @Override + public boolean canInteractWith(PlayerEntity player) { + return true; + } + + @Override + public ItemStack transferStackInSlot(PlayerEntity playerIn, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = (Slot) this.inventorySlots.get(index); + if (slot != null && slot.getHasStack()) { + ItemStack itemstack1 = slot.getStack(); + itemstack = itemstack1.copy(); + if (index < 2) { + if (!this.mergeItemStack(itemstack1, 2, this.inventorySlots.size(), true)) { + return ItemStack.EMPTY; + } + slot.onSlotChange(itemstack1, itemstack); + } else if (!this.mergeItemStack(itemstack1, 0, 2, false)) { + if (index < 2 + 27) { + if (!this.mergeItemStack(itemstack1, 2 + 27, this.inventorySlots.size(), true)) { + return ItemStack.EMPTY; + } + } else { + if (!this.mergeItemStack(itemstack1, 2, 2 + 27, false)) { + return ItemStack.EMPTY; + } + } + return ItemStack.EMPTY; + } + if (itemstack1.getCount() == 0) { + slot.putStack(ItemStack.EMPTY); + } else { + slot.onSlotChanged(); + } + if (itemstack1.getCount() == itemstack.getCount()) { + return ItemStack.EMPTY; + } + slot.onTake(playerIn, itemstack1); + } + return itemstack; + } + + @Override /** + * Merges provided ItemStack with the first avaliable one in the + * container/player inventor between minIndex (included) and maxIndex + * (excluded). Args : stack, minIndex, maxIndex, negativDirection. /!\ the + * Container implementation do not check if the item is valid for the slot + */ + protected boolean mergeItemStack(ItemStack stack, int startIndex, int endIndex, boolean reverseDirection) { + boolean flag = false; + int i = startIndex; + if (reverseDirection) { + i = endIndex - 1; + } + if (stack.isStackable()) { + while (!stack.isEmpty()) { + if (reverseDirection) { + if (i < startIndex) { + break; + } + } else if (i >= endIndex) { + break; + } + Slot slot = this.inventorySlots.get(i); + ItemStack itemstack = slot.getStack(); + if (slot.isItemValid(itemstack) && !itemstack.isEmpty() && areItemsAndTagsEqual(stack, itemstack)) { + int j = itemstack.getCount() + stack.getCount(); + int maxSize = Math.min(slot.getSlotStackLimit(), stack.getMaxStackSize()); + if (j <= maxSize) { + stack.setCount(0); + itemstack.setCount(j); + slot.putStack(itemstack); + flag = true; + } else if (itemstack.getCount() < maxSize) { + stack.shrink(maxSize - itemstack.getCount()); + itemstack.setCount(maxSize); + slot.putStack(itemstack); + flag = true; + } + } + if (reverseDirection) { + --i; + } else { + ++i; + } + } + } + if (!stack.isEmpty()) { + if (reverseDirection) { + i = endIndex - 1; + } else { + i = startIndex; + } + while (true) { + if (reverseDirection) { + if (i < startIndex) { + break; + } + } else if (i >= endIndex) { + break; + } + Slot slot1 = this.inventorySlots.get(i); + ItemStack itemstack1 = slot1.getStack(); + if (itemstack1.isEmpty() && slot1.isItemValid(stack)) { + if (stack.getCount() > slot1.getSlotStackLimit()) { + slot1.putStack(stack.split(slot1.getSlotStackLimit())); + } else { + slot1.putStack(stack.split(stack.getCount())); + } + slot1.onSlotChanged(); + flag = true; + break; + } + if (reverseDirection) { + --i; + } else { + ++i; + } + } + } + return flag; + } + + @Override + public void onContainerClosed(PlayerEntity playerIn) { + super.onContainerClosed(playerIn); + if (!bound && (playerIn instanceof ServerPlayerEntity)) { + if (!playerIn.isAlive() || playerIn instanceof ServerPlayerEntity && ((ServerPlayerEntity) playerIn).hasDisconnected()) { + for (int j = 0; j < internal.getSlots(); ++j) { + if (j == 0) + continue; + if (j == 1) + continue; + playerIn.dropItem(internal.extractItem(j, internal.getStackInSlot(j).getCount(), false), false); + } + } else { + for (int i = 0; i < internal.getSlots(); ++i) { + if (i == 0) + continue; + if (i == 1) + continue; + playerIn.inventory.placeItemBackInInventory(playerIn.world, + internal.extractItem(i, internal.getStackInSlot(i).getCount(), false)); + } + } + } + } + + private void slotChanged(int slotid, int ctype, int meta) { + if (this.world != null && this.world.isRemote()) { + MarkscoinsMod.PACKET_HANDLER.sendToServer(new GUISlotChangedMessage(slotid, x, y, z, ctype, meta)); + handleSlotAction(entity, slotid, ctype, meta, x, y, z); + } + } + } + + public static class ButtonPressedMessage { + int buttonID, x, y, z; + public ButtonPressedMessage(PacketBuffer buffer) { + this.buttonID = buffer.readInt(); + this.x = buffer.readInt(); + this.y = buffer.readInt(); + this.z = buffer.readInt(); + } + + public ButtonPressedMessage(int buttonID, int x, int y, int z) { + this.buttonID = buttonID; + this.x = x; + this.y = y; + this.z = z; + } + + public static void buffer(ButtonPressedMessage message, PacketBuffer buffer) { + buffer.writeInt(message.buttonID); + buffer.writeInt(message.x); + buffer.writeInt(message.y); + buffer.writeInt(message.z); + } + + public static void handler(ButtonPressedMessage message, Supplier contextSupplier) { + NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + PlayerEntity entity = context.getSender(); + int buttonID = message.buttonID; + int x = message.x; + int y = message.y; + int z = message.z; + handleButtonAction(entity, buttonID, x, y, z); + }); + context.setPacketHandled(true); + } + } + + public static class GUISlotChangedMessage { + int slotID, x, y, z, changeType, meta; + public GUISlotChangedMessage(int slotID, int x, int y, int z, int changeType, int meta) { + this.slotID = slotID; + this.x = x; + this.y = y; + this.z = z; + this.changeType = changeType; + this.meta = meta; + } + + public GUISlotChangedMessage(PacketBuffer buffer) { + this.slotID = buffer.readInt(); + this.x = buffer.readInt(); + this.y = buffer.readInt(); + this.z = buffer.readInt(); + this.changeType = buffer.readInt(); + this.meta = buffer.readInt(); + } + + public static void buffer(GUISlotChangedMessage message, PacketBuffer buffer) { + buffer.writeInt(message.slotID); + buffer.writeInt(message.x); + buffer.writeInt(message.y); + buffer.writeInt(message.z); + buffer.writeInt(message.changeType); + buffer.writeInt(message.meta); + } + + public static void handler(GUISlotChangedMessage message, Supplier contextSupplier) { + NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + PlayerEntity entity = context.getSender(); + int slotID = message.slotID; + int changeType = message.changeType; + int meta = message.meta; + int x = message.x; + int y = message.y; + int z = message.z; + handleSlotAction(entity, slotID, changeType, meta, x, y, z); + }); + context.setPacketHandled(true); + } + } + static void handleButtonAction(PlayerEntity entity, int buttonID, int x, int y, int z) { + World world = entity.world; + // security measure to prevent arbitrary chunk generation + if (!world.isBlockLoaded(new BlockPos(x, y, z))) + return; + if (buttonID == 0) { + { + Map $_dependencies = new HashMap<>(); + $_dependencies.put("entity", entity); + BankTransferProcedure.executeProcedure($_dependencies); + } + } + } + + private static void handleSlotAction(PlayerEntity entity, int slotID, int changeType, int meta, int x, int y, int z) { + World world = entity.world; + // security measure to prevent arbitrary chunk generation + if (!world.isBlockLoaded(new BlockPos(x, y, z))) + return; + if (slotID == 0 && changeType == 0) { + { + Map $_dependencies = new HashMap<>(); + $_dependencies.put("entity", entity); + $_dependencies.put("world", world); + BankInputCalcProcedure.executeProcedure($_dependencies); + } + } + if (slotID == 1 && changeType == 1) { + { + Map $_dependencies = new HashMap<>(); + $_dependencies.put("entity", entity); + BankOutputCalcProcedure.executeProcedure($_dependencies); + } + } + } +} diff --git a/src/main/java/net/rewey/markscoins/gui/BankGUIGuiWindow.java b/src/main/java/net/rewey/markscoins/gui/BankGUIGuiWindow.java new file mode 100644 index 0000000..12d14d8 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/gui/BankGUIGuiWindow.java @@ -0,0 +1,100 @@ + +package net.rewey.markscoins.gui; + +import net.rewey.markscoins.MarkscoinsModVariables; +import net.rewey.markscoins.MarkscoinsMod; + +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.world.World; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.ResourceLocation; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.client.gui.widget.button.Button; +import net.minecraft.client.gui.screen.inventory.ContainerScreen; +import net.minecraft.client.Minecraft; + +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.matrix.MatrixStack; + +@OnlyIn(Dist.CLIENT) +public class BankGUIGuiWindow extends ContainerScreen { + private World world; + private int x, y, z; + private PlayerEntity entity; + public BankGUIGuiWindow(BankGUIGui.GuiContainerMod container, PlayerInventory inventory, ITextComponent text) { + super(container, inventory, text); + this.world = container.world; + this.x = container.x; + this.y = container.y; + this.z = container.z; + this.entity = container.entity; + this.xSize = 176; + this.ySize = 166; + } + private static final ResourceLocation texture = new ResourceLocation("markscoins:textures/bank_gui.png"); + @Override + public void render(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { + this.renderBackground(ms); + super.render(ms, mouseX, mouseY, partialTicks); + this.renderHoveredTooltip(ms, mouseX, mouseY); + } + + @Override + protected void drawGuiContainerBackgroundLayer(MatrixStack ms, float partialTicks, int gx, int gy) { + RenderSystem.color4f(1, 1, 1, 1); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + Minecraft.getInstance().getTextureManager().bindTexture(texture); + int k = (this.width - this.xSize) / 2; + int l = (this.height - this.ySize) / 2; + this.blit(ms, k, l, 0, 0, this.xSize, this.ySize, this.xSize, this.ySize); + Minecraft.getInstance().getTextureManager().bindTexture(new ResourceLocation("markscoins:textures/cashout.png")); + this.blit(ms, this.guiLeft + 70, this.guiTop + 40, 0, 0, 32, 32, 32, 32); + RenderSystem.disableBlend(); + } + + @Override + public boolean keyPressed(int key, int b, int c) { + if (key == 256) { + this.minecraft.player.closeScreen(); + return true; + } + return super.keyPressed(key, b, c); + } + + @Override + public void tick() { + super.tick(); + } + + @Override + protected void drawGuiContainerForegroundLayer(MatrixStack ms, int mouseX, int mouseY) { + this.font.drawString(ms, "Balance", 5, 5, -16777216); + this.font.drawString(ms, "" + ((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money_disp) + "", 4, 16, -16777215); + this.font.drawString(ms, "Deposit", 14, 41, -12829636); + this.font.drawString(ms, "Withdraw", 119, 41, -12829636); + } + + @Override + public void onClose() { + super.onClose(); + Minecraft.getInstance().keyboardListener.enableRepeatEvents(false); + } + + @Override + public void init(Minecraft minecraft, int width, int height) { + super.init(minecraft, width, height); + minecraft.keyboardListener.enableRepeatEvents(true); + this.addButton(new Button(this.guiLeft + 125, this.guiTop + 16, 30, 20, new StringTextComponent("Take"), e -> { + if (true) { + MarkscoinsMod.PACKET_HANDLER.sendToServer(new BankGUIGui.ButtonPressedMessage(0, x, y, z)); + BankGUIGui.handleButtonAction(entity, 0, x, y, z); + } + })); + } +} diff --git a/src/main/java/net/rewey/markscoins/item/CoinamethystItem.java b/src/main/java/net/rewey/markscoins/item/CoinamethystItem.java new file mode 100644 index 0000000..7aa0446 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/item/CoinamethystItem.java @@ -0,0 +1,58 @@ + +package net.rewey.markscoins.item; + +import net.rewey.markscoins.MarkscoinsModElements; + +import net.minecraftforge.registries.ObjectHolder; + +import net.minecraft.world.World; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.item.Rarity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.block.BlockState; + +import java.util.List; + +@MarkscoinsModElements.ModElement.Tag +public class CoinamethystItem extends MarkscoinsModElements.ModElement { + @ObjectHolder("markscoins:coinamethyst") + public static final Item block = null; + public CoinamethystItem(MarkscoinsModElements instance) { + super(instance, 7); + } + + @Override + public void initElements() { + elements.items.add(() -> new ItemCustom()); + } + public static class ItemCustom extends Item { + public ItemCustom() { + super(new Item.Properties().group(null).maxStackSize(64).isImmuneToFire().rarity(Rarity.RARE)); + setRegistryName("coinamethyst"); + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public int getUseDuration(ItemStack itemstack) { + return 0; + } + + @Override + public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) { + return 1F; + } + + @Override + public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) { + super.addInformation(itemstack, world, list, flag); + list.add(new StringTextComponent("4,096PC")); + } + } +} diff --git a/src/main/java/net/rewey/markscoins/item/CoincopperItem.java b/src/main/java/net/rewey/markscoins/item/CoincopperItem.java new file mode 100644 index 0000000..bbb23ba --- /dev/null +++ b/src/main/java/net/rewey/markscoins/item/CoincopperItem.java @@ -0,0 +1,58 @@ + +package net.rewey.markscoins.item; + +import net.rewey.markscoins.MarkscoinsModElements; + +import net.minecraftforge.registries.ObjectHolder; + +import net.minecraft.world.World; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.item.Rarity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.block.BlockState; + +import java.util.List; + +@MarkscoinsModElements.ModElement.Tag +public class CoincopperItem extends MarkscoinsModElements.ModElement { + @ObjectHolder("markscoins:coincopper") + public static final Item block = null; + public CoincopperItem(MarkscoinsModElements instance) { + super(instance, 4); + } + + @Override + public void initElements() { + elements.items.add(() -> new ItemCustom()); + } + public static class ItemCustom extends Item { + public ItemCustom() { + super(new Item.Properties().group(null).maxStackSize(64).rarity(Rarity.COMMON)); + setRegistryName("coincopper"); + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public int getUseDuration(ItemStack itemstack) { + return 0; + } + + @Override + public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) { + return 1F; + } + + @Override + public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) { + super.addInformation(itemstack, world, list, flag); + list.add(new StringTextComponent("16PC")); + } + } +} diff --git a/src/main/java/net/rewey/markscoins/item/CoindiamondItem.java b/src/main/java/net/rewey/markscoins/item/CoindiamondItem.java new file mode 100644 index 0000000..e3cb362 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/item/CoindiamondItem.java @@ -0,0 +1,58 @@ + +package net.rewey.markscoins.item; + +import net.rewey.markscoins.MarkscoinsModElements; + +import net.minecraftforge.registries.ObjectHolder; + +import net.minecraft.world.World; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.item.Rarity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.block.BlockState; + +import java.util.List; + +@MarkscoinsModElements.ModElement.Tag +public class CoindiamondItem extends MarkscoinsModElements.ModElement { + @ObjectHolder("markscoins:coindiamond") + public static final Item block = null; + public CoindiamondItem(MarkscoinsModElements instance) { + super(instance, 10); + } + + @Override + public void initElements() { + elements.items.add(() -> new ItemCustom()); + } + public static class ItemCustom extends Item { + public ItemCustom() { + super(new Item.Properties().group(null).maxStackSize(64).isImmuneToFire().rarity(Rarity.EPIC)); + setRegistryName("coindiamond"); + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public int getUseDuration(ItemStack itemstack) { + return 0; + } + + @Override + public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) { + return 1F; + } + + @Override + public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) { + super.addInformation(itemstack, world, list, flag); + list.add(new StringTextComponent("1,048,576PC")); + } + } +} diff --git a/src/main/java/net/rewey/markscoins/item/CoinemeraldItem.java b/src/main/java/net/rewey/markscoins/item/CoinemeraldItem.java new file mode 100644 index 0000000..281b1d1 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/item/CoinemeraldItem.java @@ -0,0 +1,58 @@ + +package net.rewey.markscoins.item; + +import net.rewey.markscoins.MarkscoinsModElements; + +import net.minecraftforge.registries.ObjectHolder; + +import net.minecraft.world.World; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.item.Rarity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.block.BlockState; + +import java.util.List; + +@MarkscoinsModElements.ModElement.Tag +public class CoinemeraldItem extends MarkscoinsModElements.ModElement { + @ObjectHolder("markscoins:coinemerald") + public static final Item block = null; + public CoinemeraldItem(MarkscoinsModElements instance) { + super(instance, 11); + } + + @Override + public void initElements() { + elements.items.add(() -> new ItemCustom()); + } + public static class ItemCustom extends Item { + public ItemCustom() { + super(new Item.Properties().group(null).maxStackSize(64).isImmuneToFire().rarity(Rarity.EPIC)); + setRegistryName("coinemerald"); + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public int getUseDuration(ItemStack itemstack) { + return 0; + } + + @Override + public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) { + return 1F; + } + + @Override + public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) { + super.addInformation(itemstack, world, list, flag); + list.add(new StringTextComponent("65,536PC")); + } + } +} diff --git a/src/main/java/net/rewey/markscoins/item/CoingoldItem.java b/src/main/java/net/rewey/markscoins/item/CoingoldItem.java new file mode 100644 index 0000000..1c34423 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/item/CoingoldItem.java @@ -0,0 +1,58 @@ + +package net.rewey.markscoins.item; + +import net.rewey.markscoins.MarkscoinsModElements; + +import net.minecraftforge.registries.ObjectHolder; + +import net.minecraft.world.World; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.item.Rarity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.block.BlockState; + +import java.util.List; + +@MarkscoinsModElements.ModElement.Tag +public class CoingoldItem extends MarkscoinsModElements.ModElement { + @ObjectHolder("markscoins:coingold") + public static final Item block = null; + public CoingoldItem(MarkscoinsModElements instance) { + super(instance, 6); + } + + @Override + public void initElements() { + elements.items.add(() -> new ItemCustom()); + } + public static class ItemCustom extends Item { + public ItemCustom() { + super(new Item.Properties().group(null).maxStackSize(64).rarity(Rarity.UNCOMMON)); + setRegistryName("coingold"); + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public int getUseDuration(ItemStack itemstack) { + return 0; + } + + @Override + public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) { + return 1F; + } + + @Override + public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) { + super.addInformation(itemstack, world, list, flag); + list.add(new StringTextComponent("256PC")); + } + } +} diff --git a/src/main/java/net/rewey/markscoins/item/CoinironItem.java b/src/main/java/net/rewey/markscoins/item/CoinironItem.java new file mode 100644 index 0000000..a1b1b1b --- /dev/null +++ b/src/main/java/net/rewey/markscoins/item/CoinironItem.java @@ -0,0 +1,58 @@ + +package net.rewey.markscoins.item; + +import net.rewey.markscoins.MarkscoinsModElements; + +import net.minecraftforge.registries.ObjectHolder; + +import net.minecraft.world.World; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.item.Rarity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.block.BlockState; + +import java.util.List; + +@MarkscoinsModElements.ModElement.Tag +public class CoinironItem extends MarkscoinsModElements.ModElement { + @ObjectHolder("markscoins:coiniron") + public static final Item block = null; + public CoinironItem(MarkscoinsModElements instance) { + super(instance, 5); + } + + @Override + public void initElements() { + elements.items.add(() -> new ItemCustom()); + } + public static class ItemCustom extends Item { + public ItemCustom() { + super(new Item.Properties().group(null).maxStackSize(64).rarity(Rarity.UNCOMMON)); + setRegistryName("coiniron"); + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public int getUseDuration(ItemStack itemstack) { + return 0; + } + + @Override + public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) { + return 1F; + } + + @Override + public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) { + super.addInformation(itemstack, world, list, flag); + list.add(new StringTextComponent("64PC")); + } + } +} diff --git a/src/main/java/net/rewey/markscoins/item/CoinnetheriteItem.java b/src/main/java/net/rewey/markscoins/item/CoinnetheriteItem.java new file mode 100644 index 0000000..a526f12 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/item/CoinnetheriteItem.java @@ -0,0 +1,66 @@ + +package net.rewey.markscoins.item; + +import net.rewey.markscoins.MarkscoinsModElements; + +import net.minecraftforge.registries.ObjectHolder; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.world.World; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.item.Rarity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.block.BlockState; + +import java.util.List; + +@MarkscoinsModElements.ModElement.Tag +public class CoinnetheriteItem extends MarkscoinsModElements.ModElement { + @ObjectHolder("markscoins:coinnetherite") + public static final Item block = null; + public CoinnetheriteItem(MarkscoinsModElements instance) { + super(instance, 30); + } + + @Override + public void initElements() { + elements.items.add(() -> new ItemCustom()); + } + public static class ItemCustom extends Item { + public ItemCustom() { + super(new Item.Properties().group(null).maxStackSize(64).isImmuneToFire().rarity(Rarity.EPIC)); + setRegistryName("coinnetherite"); + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public int getUseDuration(ItemStack itemstack) { + return 0; + } + + @Override + public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) { + return 1F; + } + + @Override + @OnlyIn(Dist.CLIENT) + public boolean hasEffect(ItemStack itemstack) { + return true; + } + + @Override + public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) { + super.addInformation(itemstack, world, list, flag); + list.add(new StringTextComponent("4,194,304PC")); + } + } +} diff --git a/src/main/java/net/rewey/markscoins/item/CoinplatinumItem.java b/src/main/java/net/rewey/markscoins/item/CoinplatinumItem.java new file mode 100644 index 0000000..dd0cc80 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/item/CoinplatinumItem.java @@ -0,0 +1,66 @@ + +package net.rewey.markscoins.item; + +import net.rewey.markscoins.MarkscoinsModElements; + +import net.minecraftforge.registries.ObjectHolder; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.world.World; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.item.Rarity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.block.BlockState; + +import java.util.List; + +@MarkscoinsModElements.ModElement.Tag +public class CoinplatinumItem extends MarkscoinsModElements.ModElement { + @ObjectHolder("markscoins:coinplatinum") + public static final Item block = null; + public CoinplatinumItem(MarkscoinsModElements instance) { + super(instance, 49); + } + + @Override + public void initElements() { + elements.items.add(() -> new ItemCustom()); + } + public static class ItemCustom extends Item { + public ItemCustom() { + super(new Item.Properties().group(null).maxStackSize(64).isImmuneToFire().rarity(Rarity.UNCOMMON)); + setRegistryName("coinplatinum"); + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public int getUseDuration(ItemStack itemstack) { + return 0; + } + + @Override + public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) { + return 1F; + } + + @Override + @OnlyIn(Dist.CLIENT) + public boolean hasEffect(ItemStack itemstack) { + return true; + } + + @Override + public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) { + super.addInformation(itemstack, world, list, flag); + list.add(new StringTextComponent("1,024PC")); + } + } +} diff --git a/src/main/java/net/rewey/markscoins/item/CoinrubyItem.java b/src/main/java/net/rewey/markscoins/item/CoinrubyItem.java new file mode 100644 index 0000000..c43ac81 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/item/CoinrubyItem.java @@ -0,0 +1,58 @@ + +package net.rewey.markscoins.item; + +import net.rewey.markscoins.MarkscoinsModElements; + +import net.minecraftforge.registries.ObjectHolder; + +import net.minecraft.world.World; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.item.Rarity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.block.BlockState; + +import java.util.List; + +@MarkscoinsModElements.ModElement.Tag +public class CoinrubyItem extends MarkscoinsModElements.ModElement { + @ObjectHolder("markscoins:coinruby") + public static final Item block = null; + public CoinrubyItem(MarkscoinsModElements instance) { + super(instance, 9); + } + + @Override + public void initElements() { + elements.items.add(() -> new ItemCustom()); + } + public static class ItemCustom extends Item { + public ItemCustom() { + super(new Item.Properties().group(null).maxStackSize(64).isImmuneToFire().rarity(Rarity.EPIC)); + setRegistryName("coinruby"); + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public int getUseDuration(ItemStack itemstack) { + return 0; + } + + @Override + public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) { + return 1F; + } + + @Override + public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) { + super.addInformation(itemstack, world, list, flag); + list.add(new StringTextComponent("262,144PC")); + } + } +} diff --git a/src/main/java/net/rewey/markscoins/item/CoinsapphireItem.java b/src/main/java/net/rewey/markscoins/item/CoinsapphireItem.java new file mode 100644 index 0000000..aa15094 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/item/CoinsapphireItem.java @@ -0,0 +1,58 @@ + +package net.rewey.markscoins.item; + +import net.rewey.markscoins.MarkscoinsModElements; + +import net.minecraftforge.registries.ObjectHolder; + +import net.minecraft.world.World; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.item.Rarity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.block.BlockState; + +import java.util.List; + +@MarkscoinsModElements.ModElement.Tag +public class CoinsapphireItem extends MarkscoinsModElements.ModElement { + @ObjectHolder("markscoins:coinsapphire") + public static final Item block = null; + public CoinsapphireItem(MarkscoinsModElements instance) { + super(instance, 8); + } + + @Override + public void initElements() { + elements.items.add(() -> new ItemCustom()); + } + public static class ItemCustom extends Item { + public ItemCustom() { + super(new Item.Properties().group(null).maxStackSize(64).isImmuneToFire().rarity(Rarity.RARE)); + setRegistryName("coinsapphire"); + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public int getUseDuration(ItemStack itemstack) { + return 0; + } + + @Override + public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) { + return 1F; + } + + @Override + public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) { + super.addInformation(itemstack, world, list, flag); + list.add(new StringTextComponent("16,384PC")); + } + } +} diff --git a/src/main/java/net/rewey/markscoins/item/CoinstoneItem.java b/src/main/java/net/rewey/markscoins/item/CoinstoneItem.java new file mode 100644 index 0000000..0d72892 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/item/CoinstoneItem.java @@ -0,0 +1,58 @@ + +package net.rewey.markscoins.item; + +import net.rewey.markscoins.MarkscoinsModElements; + +import net.minecraftforge.registries.ObjectHolder; + +import net.minecraft.world.World; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.item.Rarity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.block.BlockState; + +import java.util.List; + +@MarkscoinsModElements.ModElement.Tag +public class CoinstoneItem extends MarkscoinsModElements.ModElement { + @ObjectHolder("markscoins:coinstone") + public static final Item block = null; + public CoinstoneItem(MarkscoinsModElements instance) { + super(instance, 2); + } + + @Override + public void initElements() { + elements.items.add(() -> new ItemCustom()); + } + public static class ItemCustom extends Item { + public ItemCustom() { + super(new Item.Properties().group(null).maxStackSize(64).rarity(Rarity.COMMON)); + setRegistryName("coinstone"); + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public int getUseDuration(ItemStack itemstack) { + return 0; + } + + @Override + public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) { + return 1F; + } + + @Override + public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) { + super.addInformation(itemstack, world, list, flag); + list.add(new StringTextComponent("4PC")); + } + } +} diff --git a/src/main/java/net/rewey/markscoins/item/CoinwoodItem.java b/src/main/java/net/rewey/markscoins/item/CoinwoodItem.java new file mode 100644 index 0000000..30878ca --- /dev/null +++ b/src/main/java/net/rewey/markscoins/item/CoinwoodItem.java @@ -0,0 +1,58 @@ + +package net.rewey.markscoins.item; + +import net.rewey.markscoins.MarkscoinsModElements; + +import net.minecraftforge.registries.ObjectHolder; + +import net.minecraft.world.World; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.item.Rarity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.block.BlockState; + +import java.util.List; + +@MarkscoinsModElements.ModElement.Tag +public class CoinwoodItem extends MarkscoinsModElements.ModElement { + @ObjectHolder("markscoins:coinwood") + public static final Item block = null; + public CoinwoodItem(MarkscoinsModElements instance) { + super(instance, 1); + } + + @Override + public void initElements() { + elements.items.add(() -> new ItemCustom()); + } + public static class ItemCustom extends Item { + public ItemCustom() { + super(new Item.Properties().group(null).maxStackSize(64).rarity(Rarity.COMMON)); + setRegistryName("coinwood"); + } + + @Override + public int getItemEnchantability() { + return 0; + } + + @Override + public int getUseDuration(ItemStack itemstack) { + return 0; + } + + @Override + public float getDestroySpeed(ItemStack par1ItemStack, BlockState par2Block) { + return 1F; + } + + @Override + public void addInformation(ItemStack itemstack, World world, List list, ITooltipFlag flag) { + super.addInformation(itemstack, world, list, flag); + list.add(new StringTextComponent("1PC")); + } + } +} diff --git a/src/main/java/net/rewey/markscoins/keybind/OpenBankKeyBinding.java b/src/main/java/net/rewey/markscoins/keybind/OpenBankKeyBinding.java new file mode 100644 index 0000000..acc00f9 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/keybind/OpenBankKeyBinding.java @@ -0,0 +1,104 @@ + +package net.rewey.markscoins.keybind; + +import org.lwjgl.glfw.GLFW; + +import net.rewey.markscoins.procedures.BankOpenGUIProcedure; +import net.rewey.markscoins.MarkscoinsModElements; +import net.rewey.markscoins.MarkscoinsMod; + +import net.minecraftforge.fml.network.NetworkEvent; +import net.minecraftforge.fml.client.registry.ClientRegistry; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.client.event.InputEvent; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.api.distmarker.Dist; + +import net.minecraft.world.World; +import net.minecraft.util.math.BlockPos; +import net.minecraft.network.PacketBuffer; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.client.Minecraft; + +import java.util.function.Supplier; +import java.util.Map; +import java.util.HashMap; + +@MarkscoinsModElements.ModElement.Tag +public class OpenBankKeyBinding extends MarkscoinsModElements.ModElement { + @OnlyIn(Dist.CLIENT) + private KeyBinding keys; + public OpenBankKeyBinding(MarkscoinsModElements instance) { + super(instance, 54); + elements.addNetworkMessage(KeyBindingPressedMessage.class, KeyBindingPressedMessage::buffer, KeyBindingPressedMessage::new, + KeyBindingPressedMessage::handler); + } + + @Override + @OnlyIn(Dist.CLIENT) + public void initElements() { + keys = new KeyBinding("key.markscoins.open_bank", GLFW.GLFW_KEY_RIGHT_CONTROL, "key.categories.misc"); + ClientRegistry.registerKeyBinding(keys); + MinecraftForge.EVENT_BUS.register(this); + } + + @SubscribeEvent + @OnlyIn(Dist.CLIENT) + public void onKeyInput(InputEvent.KeyInputEvent event) { + if (Minecraft.getInstance().currentScreen == null) { + if (event.getKey() == keys.getKey().getKeyCode()) { + if (event.getAction() == GLFW.GLFW_PRESS) { + MarkscoinsMod.PACKET_HANDLER.sendToServer(new KeyBindingPressedMessage(0, 0)); + pressAction(Minecraft.getInstance().player, 0, 0); + } + } + } + } + public static class KeyBindingPressedMessage { + int type, pressedms; + public KeyBindingPressedMessage(int type, int pressedms) { + this.type = type; + this.pressedms = pressedms; + } + + public KeyBindingPressedMessage(PacketBuffer buffer) { + this.type = buffer.readInt(); + this.pressedms = buffer.readInt(); + } + + public static void buffer(KeyBindingPressedMessage message, PacketBuffer buffer) { + buffer.writeInt(message.type); + buffer.writeInt(message.pressedms); + } + + public static void handler(KeyBindingPressedMessage message, Supplier contextSupplier) { + NetworkEvent.Context context = contextSupplier.get(); + context.enqueueWork(() -> { + pressAction(context.getSender(), message.type, message.pressedms); + }); + context.setPacketHandled(true); + } + } + private static void pressAction(PlayerEntity entity, int type, int pressedms) { + World world = entity.world; + double x = entity.getPosX(); + double y = entity.getPosY(); + double z = entity.getPosZ(); + // security measure to prevent arbitrary chunk generation + if (!world.isBlockLoaded(new BlockPos(x, y, z))) + return; + if (type == 0) { + { + Map $_dependencies = new HashMap<>(); + $_dependencies.put("entity", entity); + $_dependencies.put("x", x); + $_dependencies.put("y", y); + $_dependencies.put("z", z); + $_dependencies.put("world", world); + BankOpenGUIProcedure.executeProcedure($_dependencies); + } + } + } +} diff --git a/src/main/java/net/rewey/markscoins/procedures/BankInputCalcProcedure.java b/src/main/java/net/rewey/markscoins/procedures/BankInputCalcProcedure.java new file mode 100644 index 0000000..6eae2e4 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/procedures/BankInputCalcProcedure.java @@ -0,0 +1,655 @@ +package net.rewey.markscoins.procedures; + +import net.rewey.markscoins.item.CoinwoodItem; +import net.rewey.markscoins.item.CoinstoneItem; +import net.rewey.markscoins.item.CoinsapphireItem; +import net.rewey.markscoins.item.CoinrubyItem; +import net.rewey.markscoins.item.CoinplatinumItem; +import net.rewey.markscoins.item.CoinnetheriteItem; +import net.rewey.markscoins.item.CoinironItem; +import net.rewey.markscoins.item.CoingoldItem; +import net.rewey.markscoins.item.CoinemeraldItem; +import net.rewey.markscoins.item.CoindiamondItem; +import net.rewey.markscoins.item.CoincopperItem; +import net.rewey.markscoins.item.CoinamethystItem; +import net.rewey.markscoins.MarkscoinsModVariables; +import net.rewey.markscoins.MarkscoinsModElements; +import net.rewey.markscoins.MarkscoinsMod; + +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.common.MinecraftForge; + +import net.minecraft.world.IWorld; +import net.minecraft.item.ItemStack; +import net.minecraft.inventory.container.Slot; +import net.minecraft.inventory.container.Container; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.entity.Entity; + +import java.util.function.Supplier; +import java.util.Map; + +@MarkscoinsModElements.ModElement.Tag +public class BankInputCalcProcedure extends MarkscoinsModElements.ModElement { + public BankInputCalcProcedure(MarkscoinsModElements instance) { + super(instance, 59); + } + + public static void executeProcedure(Map dependencies) { + if (dependencies.get("entity") == null) { + if (!dependencies.containsKey("entity")) + MarkscoinsMod.LOGGER.warn("Failed to load dependency entity for procedure BankInputCalc!"); + return; + } + if (dependencies.get("world") == null) { + if (!dependencies.containsKey("world")) + MarkscoinsMod.LOGGER.warn("Failed to load dependency world for procedure BankInputCalc!"); + return; + } + Entity entity = (Entity) dependencies.get("entity"); + IWorld world = (IWorld) dependencies.get("world"); + new Object() { + private int ticks = 0; + private float waitTicks; + private IWorld world; + public void start(IWorld world, int waitTicks) { + this.waitTicks = waitTicks; + MinecraftForge.EVENT_BUS.register(this); + this.world = world; + } + + @SubscribeEvent + public void tick(TickEvent.ServerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + this.ticks += 1; + if (this.ticks >= this.waitTicks) + run(); + } + } + + private void run() { + if ((new ItemStack(CoinwoodItem.block, (int) (1)).getItem() == (new Object() { + public ItemStack getItemStack(int sltid) { + Entity _ent = entity; + if (_ent instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) _ent).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + return ((Slot) ((Map) invobj).get(sltid)).getStack(); + } + } + } + return ItemStack.EMPTY; + } + }.getItemStack((int) (0))).getItem())) { + { + double _setval = (double) (((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) + (new Object() { + public int getAmount(int sltid) { + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack stack = ((Slot) ((Map) invobj).get(sltid)).getStack();; + if (stack != null) + return stack.getCount(); + } + } + } + return 0; + } + }.getAmount((int) (0)))); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.money = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ((Slot) ((Map) invobj).get((int) (0))).putStack(ItemStack.EMPTY); + _current.detectAndSendChanges(); + } + } + } + } else if ((new ItemStack(CoinstoneItem.block, (int) (1)).getItem() == (new Object() { + public ItemStack getItemStack(int sltid) { + Entity _ent = entity; + if (_ent instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) _ent).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + return ((Slot) ((Map) invobj).get(sltid)).getStack(); + } + } + } + return ItemStack.EMPTY; + } + }.getItemStack((int) (0))).getItem())) { + { + double _setval = (double) (((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) + ((new Object() { + public int getAmount(int sltid) { + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack stack = ((Slot) ((Map) invobj).get(sltid)).getStack();; + if (stack != null) + return stack.getCount(); + } + } + } + return 0; + } + }.getAmount((int) (0))) * 4)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.money = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ((Slot) ((Map) invobj).get((int) (0))).putStack(ItemStack.EMPTY); + _current.detectAndSendChanges(); + } + } + } + } else if ((new ItemStack(CoincopperItem.block, (int) (1)).getItem() == (new Object() { + public ItemStack getItemStack(int sltid) { + Entity _ent = entity; + if (_ent instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) _ent).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + return ((Slot) ((Map) invobj).get(sltid)).getStack(); + } + } + } + return ItemStack.EMPTY; + } + }.getItemStack((int) (0))).getItem())) { + { + double _setval = (double) (((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) + ((new Object() { + public int getAmount(int sltid) { + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack stack = ((Slot) ((Map) invobj).get(sltid)).getStack();; + if (stack != null) + return stack.getCount(); + } + } + } + return 0; + } + }.getAmount((int) (0))) * 16)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.money = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ((Slot) ((Map) invobj).get((int) (0))).putStack(ItemStack.EMPTY); + _current.detectAndSendChanges(); + } + } + } + } else if ((new ItemStack(CoinironItem.block, (int) (1)).getItem() == (new Object() { + public ItemStack getItemStack(int sltid) { + Entity _ent = entity; + if (_ent instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) _ent).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + return ((Slot) ((Map) invobj).get(sltid)).getStack(); + } + } + } + return ItemStack.EMPTY; + } + }.getItemStack((int) (0))).getItem())) { + { + double _setval = (double) (((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) + ((new Object() { + public int getAmount(int sltid) { + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack stack = ((Slot) ((Map) invobj).get(sltid)).getStack();; + if (stack != null) + return stack.getCount(); + } + } + } + return 0; + } + }.getAmount((int) (0))) * 64)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.money = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ((Slot) ((Map) invobj).get((int) (0))).putStack(ItemStack.EMPTY); + _current.detectAndSendChanges(); + } + } + } + } else if ((new ItemStack(CoingoldItem.block, (int) (1)).getItem() == (new Object() { + public ItemStack getItemStack(int sltid) { + Entity _ent = entity; + if (_ent instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) _ent).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + return ((Slot) ((Map) invobj).get(sltid)).getStack(); + } + } + } + return ItemStack.EMPTY; + } + }.getItemStack((int) (0))).getItem())) { + { + double _setval = (double) (((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) + ((new Object() { + public int getAmount(int sltid) { + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack stack = ((Slot) ((Map) invobj).get(sltid)).getStack();; + if (stack != null) + return stack.getCount(); + } + } + } + return 0; + } + }.getAmount((int) (0))) * 256)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.money = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ((Slot) ((Map) invobj).get((int) (0))).putStack(ItemStack.EMPTY); + _current.detectAndSendChanges(); + } + } + } + } else if ((new ItemStack(CoinplatinumItem.block, (int) (1)).getItem() == (new Object() { + public ItemStack getItemStack(int sltid) { + Entity _ent = entity; + if (_ent instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) _ent).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + return ((Slot) ((Map) invobj).get(sltid)).getStack(); + } + } + } + return ItemStack.EMPTY; + } + }.getItemStack((int) (0))).getItem())) { + { + double _setval = (double) (((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) + ((new Object() { + public int getAmount(int sltid) { + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack stack = ((Slot) ((Map) invobj).get(sltid)).getStack();; + if (stack != null) + return stack.getCount(); + } + } + } + return 0; + } + }.getAmount((int) (0))) * 1024)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.money = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ((Slot) ((Map) invobj).get((int) (0))).putStack(ItemStack.EMPTY); + _current.detectAndSendChanges(); + } + } + } + } else if ((new ItemStack(CoinamethystItem.block, (int) (1)).getItem() == (new Object() { + public ItemStack getItemStack(int sltid) { + Entity _ent = entity; + if (_ent instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) _ent).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + return ((Slot) ((Map) invobj).get(sltid)).getStack(); + } + } + } + return ItemStack.EMPTY; + } + }.getItemStack((int) (0))).getItem())) { + { + double _setval = (double) (((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) + ((new Object() { + public int getAmount(int sltid) { + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack stack = ((Slot) ((Map) invobj).get(sltid)).getStack();; + if (stack != null) + return stack.getCount(); + } + } + } + return 0; + } + }.getAmount((int) (0))) * 4096)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.money = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ((Slot) ((Map) invobj).get((int) (0))).putStack(ItemStack.EMPTY); + _current.detectAndSendChanges(); + } + } + } + } else if ((new ItemStack(CoinsapphireItem.block, (int) (1)).getItem() == (new Object() { + public ItemStack getItemStack(int sltid) { + Entity _ent = entity; + if (_ent instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) _ent).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + return ((Slot) ((Map) invobj).get(sltid)).getStack(); + } + } + } + return ItemStack.EMPTY; + } + }.getItemStack((int) (0))).getItem())) { + { + double _setval = (double) (((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) + ((new Object() { + public int getAmount(int sltid) { + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack stack = ((Slot) ((Map) invobj).get(sltid)).getStack();; + if (stack != null) + return stack.getCount(); + } + } + } + return 0; + } + }.getAmount((int) (0))) * 16384)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.money = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ((Slot) ((Map) invobj).get((int) (0))).putStack(ItemStack.EMPTY); + _current.detectAndSendChanges(); + } + } + } + } else if ((new ItemStack(CoinemeraldItem.block, (int) (1)).getItem() == (new Object() { + public ItemStack getItemStack(int sltid) { + Entity _ent = entity; + if (_ent instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) _ent).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + return ((Slot) ((Map) invobj).get(sltid)).getStack(); + } + } + } + return ItemStack.EMPTY; + } + }.getItemStack((int) (0))).getItem())) { + { + double _setval = (double) (((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) + ((new Object() { + public int getAmount(int sltid) { + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack stack = ((Slot) ((Map) invobj).get(sltid)).getStack();; + if (stack != null) + return stack.getCount(); + } + } + } + return 0; + } + }.getAmount((int) (0))) * 65536)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.money = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ((Slot) ((Map) invobj).get((int) (0))).putStack(ItemStack.EMPTY); + _current.detectAndSendChanges(); + } + } + } + } else if ((new ItemStack(CoinrubyItem.block, (int) (1)).getItem() == (new Object() { + public ItemStack getItemStack(int sltid) { + Entity _ent = entity; + if (_ent instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) _ent).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + return ((Slot) ((Map) invobj).get(sltid)).getStack(); + } + } + } + return ItemStack.EMPTY; + } + }.getItemStack((int) (0))).getItem())) { + { + double _setval = (double) (((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) + ((new Object() { + public int getAmount(int sltid) { + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack stack = ((Slot) ((Map) invobj).get(sltid)).getStack();; + if (stack != null) + return stack.getCount(); + } + } + } + return 0; + } + }.getAmount((int) (0))) * 262144)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.money = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ((Slot) ((Map) invobj).get((int) (0))).putStack(ItemStack.EMPTY); + _current.detectAndSendChanges(); + } + } + } + } else if ((new ItemStack(CoindiamondItem.block, (int) (1)).getItem() == (new Object() { + public ItemStack getItemStack(int sltid) { + Entity _ent = entity; + if (_ent instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) _ent).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + return ((Slot) ((Map) invobj).get(sltid)).getStack(); + } + } + } + return ItemStack.EMPTY; + } + }.getItemStack((int) (0))).getItem())) { + { + double _setval = (double) (((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) + ((new Object() { + public int getAmount(int sltid) { + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack stack = ((Slot) ((Map) invobj).get(sltid)).getStack();; + if (stack != null) + return stack.getCount(); + } + } + } + return 0; + } + }.getAmount((int) (0))) * 1048576)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.money = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ((Slot) ((Map) invobj).get((int) (0))).putStack(ItemStack.EMPTY); + _current.detectAndSendChanges(); + } + } + } + } else if ((new ItemStack(CoinnetheriteItem.block, (int) (1)).getItem() == (new Object() { + public ItemStack getItemStack(int sltid) { + Entity _ent = entity; + if (_ent instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) _ent).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + return ((Slot) ((Map) invobj).get(sltid)).getStack(); + } + } + } + return ItemStack.EMPTY; + } + }.getItemStack((int) (0))).getItem())) { + { + double _setval = (double) (((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) + ((new Object() { + public int getAmount(int sltid) { + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack stack = ((Slot) ((Map) invobj).get(sltid)).getStack();; + if (stack != null) + return stack.getCount(); + } + } + } + return 0; + } + }.getAmount((int) (0))) * 4194304)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.money = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ((Slot) ((Map) invobj).get((int) (0))).putStack(ItemStack.EMPTY); + _current.detectAndSendChanges(); + } + } + } + } else { + System.out.println("Invalid Input"); + } + MinecraftForge.EVENT_BUS.unregister(this); + } + }.start(world, (int) 1); + } +} diff --git a/src/main/java/net/rewey/markscoins/procedures/BankOpenGUIProcedure.java b/src/main/java/net/rewey/markscoins/procedures/BankOpenGUIProcedure.java new file mode 100644 index 0000000..1562bb2 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/procedures/BankOpenGUIProcedure.java @@ -0,0 +1,80 @@ +package net.rewey.markscoins.procedures; + +import net.rewey.markscoins.gui.BankGUIGui; +import net.rewey.markscoins.MarkscoinsModElements; +import net.rewey.markscoins.MarkscoinsMod; + +import net.minecraftforge.fml.network.NetworkHooks; + +import net.minecraft.world.IWorld; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.math.BlockPos; +import net.minecraft.network.PacketBuffer; +import net.minecraft.inventory.container.INamedContainerProvider; +import net.minecraft.inventory.container.Container; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.Entity; + +import java.util.Map; + +import io.netty.buffer.Unpooled; + +@MarkscoinsModElements.ModElement.Tag +public class BankOpenGUIProcedure extends MarkscoinsModElements.ModElement { + public BankOpenGUIProcedure(MarkscoinsModElements instance) { + super(instance, 62); + } + + public static void executeProcedure(Map dependencies) { + if (dependencies.get("entity") == null) { + if (!dependencies.containsKey("entity")) + MarkscoinsMod.LOGGER.warn("Failed to load dependency entity for procedure BankOpenGUI!"); + return; + } + if (dependencies.get("x") == null) { + if (!dependencies.containsKey("x")) + MarkscoinsMod.LOGGER.warn("Failed to load dependency x for procedure BankOpenGUI!"); + return; + } + if (dependencies.get("y") == null) { + if (!dependencies.containsKey("y")) + MarkscoinsMod.LOGGER.warn("Failed to load dependency y for procedure BankOpenGUI!"); + return; + } + if (dependencies.get("z") == null) { + if (!dependencies.containsKey("z")) + MarkscoinsMod.LOGGER.warn("Failed to load dependency z for procedure BankOpenGUI!"); + return; + } + if (dependencies.get("world") == null) { + if (!dependencies.containsKey("world")) + MarkscoinsMod.LOGGER.warn("Failed to load dependency world for procedure BankOpenGUI!"); + return; + } + Entity entity = (Entity) dependencies.get("entity"); + double x = dependencies.get("x") instanceof Integer ? (int) dependencies.get("x") : (double) dependencies.get("x"); + double y = dependencies.get("y") instanceof Integer ? (int) dependencies.get("y") : (double) dependencies.get("y"); + double z = dependencies.get("z") instanceof Integer ? (int) dependencies.get("z") : (double) dependencies.get("z"); + IWorld world = (IWorld) dependencies.get("world"); + { + Entity _ent = entity; + if (_ent instanceof ServerPlayerEntity) { + BlockPos _bpos = new BlockPos((int) x, (int) (y + 1), (int) z); + NetworkHooks.openGui((ServerPlayerEntity) _ent, new INamedContainerProvider() { + @Override + public ITextComponent getDisplayName() { + return new StringTextComponent("BankGUI"); + } + + @Override + public Container createMenu(int id, PlayerInventory inventory, PlayerEntity player) { + return new BankGUIGui.GuiContainerMod(id, inventory, new PacketBuffer(Unpooled.buffer()).writeBlockPos(_bpos)); + } + }, _bpos); + } + } + } +} diff --git a/src/main/java/net/rewey/markscoins/procedures/BankOutputCalcProcedure.java b/src/main/java/net/rewey/markscoins/procedures/BankOutputCalcProcedure.java new file mode 100644 index 0000000..8224c86 --- /dev/null +++ b/src/main/java/net/rewey/markscoins/procedures/BankOutputCalcProcedure.java @@ -0,0 +1,537 @@ +package net.rewey.markscoins.procedures; + +import net.rewey.markscoins.item.CoinwoodItem; +import net.rewey.markscoins.item.CoinstoneItem; +import net.rewey.markscoins.item.CoinsapphireItem; +import net.rewey.markscoins.item.CoinrubyItem; +import net.rewey.markscoins.item.CoinplatinumItem; +import net.rewey.markscoins.item.CoinnetheriteItem; +import net.rewey.markscoins.item.CoinironItem; +import net.rewey.markscoins.item.CoingoldItem; +import net.rewey.markscoins.item.CoinemeraldItem; +import net.rewey.markscoins.item.CoindiamondItem; +import net.rewey.markscoins.item.CoincopperItem; +import net.rewey.markscoins.item.CoinamethystItem; +import net.rewey.markscoins.MarkscoinsModVariables; +import net.rewey.markscoins.MarkscoinsModElements; +import net.rewey.markscoins.MarkscoinsMod; + +import net.minecraft.item.ItemStack; +import net.minecraft.inventory.container.Slot; +import net.minecraft.inventory.container.Container; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.Entity; + +import java.util.function.Supplier; +import java.util.Map; + +@MarkscoinsModElements.ModElement.Tag +public class BankOutputCalcProcedure extends MarkscoinsModElements.ModElement { + public BankOutputCalcProcedure(MarkscoinsModElements instance) { + super(instance, 60); + } + + public static void executeProcedure(Map dependencies) { + if (dependencies.get("entity") == null) { + if (!dependencies.containsKey("entity")) + MarkscoinsMod.LOGGER.warn("Failed to load dependency entity for procedure BankOutputCalc!"); + return; + } + Entity entity = (Entity) dependencies.get("entity"); + if ((0 < ((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money))) { + if ((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) < 4)) { + { + double _setval = (double) Math.floor(((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.display = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + double _setval = (double) Math.floor(((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.transfer = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof PlayerEntity) { + Container _current = ((PlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack _setstack = new ItemStack(CoinwoodItem.block, (int) (1)); + _setstack.setCount((int) new Object() { + int convert(String s) { + try { + return Integer.parseInt(s.trim()); + } catch (Exception e) { + } + return 0; + } + }.convert((new java.text.DecimalFormat("#") + .format(((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display))))); + ((Slot) ((Map) invobj).get((int) (1))).putStack(_setstack); + _current.detectAndSendChanges(); + } + } + } + } else if ((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) < 16)) { + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) / 4)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.display = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display) * 4)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.transfer = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof PlayerEntity) { + Container _current = ((PlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack _setstack = new ItemStack(CoinstoneItem.block, (int) (1)); + _setstack.setCount((int) new Object() { + int convert(String s) { + try { + return Integer.parseInt(s.trim()); + } catch (Exception e) { + } + return 0; + } + }.convert((new java.text.DecimalFormat("#") + .format(((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display))))); + ((Slot) ((Map) invobj).get((int) (1))).putStack(_setstack); + _current.detectAndSendChanges(); + } + } + } + } else if ((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) < 64)) { + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) / 16)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.display = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display) * 16)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.transfer = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof PlayerEntity) { + Container _current = ((PlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack _setstack = new ItemStack(CoincopperItem.block, (int) (1)); + _setstack.setCount((int) new Object() { + int convert(String s) { + try { + return Integer.parseInt(s.trim()); + } catch (Exception e) { + } + return 0; + } + }.convert((new java.text.DecimalFormat("#") + .format(((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display))))); + ((Slot) ((Map) invobj).get((int) (1))).putStack(_setstack); + _current.detectAndSendChanges(); + } + } + } + } else if ((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) < 256)) { + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) / 64)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.display = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display) * 64)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.transfer = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof PlayerEntity) { + Container _current = ((PlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack _setstack = new ItemStack(CoinironItem.block, (int) (1)); + _setstack.setCount((int) new Object() { + int convert(String s) { + try { + return Integer.parseInt(s.trim()); + } catch (Exception e) { + } + return 0; + } + }.convert((new java.text.DecimalFormat("#") + .format(((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display))))); + ((Slot) ((Map) invobj).get((int) (1))).putStack(_setstack); + _current.detectAndSendChanges(); + } + } + } + } else if ((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) < 1024)) { + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) / 256)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.display = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display) * 256)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.transfer = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof PlayerEntity) { + Container _current = ((PlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack _setstack = new ItemStack(CoingoldItem.block, (int) (1)); + _setstack.setCount((int) new Object() { + int convert(String s) { + try { + return Integer.parseInt(s.trim()); + } catch (Exception e) { + } + return 0; + } + }.convert((new java.text.DecimalFormat("#") + .format(((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display))))); + ((Slot) ((Map) invobj).get((int) (1))).putStack(_setstack); + _current.detectAndSendChanges(); + } + } + } + } else if ((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) < 4096)) { + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) / 1024)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.display = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display) * 1024)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.transfer = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof PlayerEntity) { + Container _current = ((PlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack _setstack = new ItemStack(CoinplatinumItem.block, (int) (1)); + _setstack.setCount((int) new Object() { + int convert(String s) { + try { + return Integer.parseInt(s.trim()); + } catch (Exception e) { + } + return 0; + } + }.convert((new java.text.DecimalFormat("#") + .format(((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display))))); + ((Slot) ((Map) invobj).get((int) (1))).putStack(_setstack); + _current.detectAndSendChanges(); + } + } + } + } else if ((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) < 16384)) { + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) / 4096)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.display = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display) * 4096)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.transfer = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof PlayerEntity) { + Container _current = ((PlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack _setstack = new ItemStack(CoinamethystItem.block, (int) (1)); + _setstack.setCount((int) new Object() { + int convert(String s) { + try { + return Integer.parseInt(s.trim()); + } catch (Exception e) { + } + return 0; + } + }.convert((new java.text.DecimalFormat("#") + .format(((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display))))); + ((Slot) ((Map) invobj).get((int) (1))).putStack(_setstack); + _current.detectAndSendChanges(); + } + } + } + } else if ((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) < 65536)) { + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) / 16384)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.display = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display) * 16384)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.transfer = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof PlayerEntity) { + Container _current = ((PlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack _setstack = new ItemStack(CoinsapphireItem.block, (int) (1)); + _setstack.setCount((int) new Object() { + int convert(String s) { + try { + return Integer.parseInt(s.trim()); + } catch (Exception e) { + } + return 0; + } + }.convert((new java.text.DecimalFormat("#") + .format(((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display))))); + ((Slot) ((Map) invobj).get((int) (1))).putStack(_setstack); + _current.detectAndSendChanges(); + } + } + } + } else if ((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) < 262144)) { + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) / 65536)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.display = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display) * 65536)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.transfer = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof PlayerEntity) { + Container _current = ((PlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack _setstack = new ItemStack(CoinemeraldItem.block, (int) (1)); + _setstack.setCount((int) new Object() { + int convert(String s) { + try { + return Integer.parseInt(s.trim()); + } catch (Exception e) { + } + return 0; + } + }.convert((new java.text.DecimalFormat("#") + .format(((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display))))); + ((Slot) ((Map) invobj).get((int) (1))).putStack(_setstack); + _current.detectAndSendChanges(); + } + } + } + } else if ((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) < 1048576)) { + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) / 262144)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.display = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display) * 262144)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.transfer = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof PlayerEntity) { + Container _current = ((PlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack _setstack = new ItemStack(CoinrubyItem.block, (int) (1)); + _setstack.setCount((int) new Object() { + int convert(String s) { + try { + return Integer.parseInt(s.trim()); + } catch (Exception e) { + } + return 0; + } + }.convert((new java.text.DecimalFormat("#") + .format(((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display))))); + ((Slot) ((Map) invobj).get((int) (1))).putStack(_setstack); + _current.detectAndSendChanges(); + } + } + } + } else if ((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) < 4194304)) { + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) / 1048576)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.display = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display) * 1048576)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.transfer = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof PlayerEntity) { + Container _current = ((PlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack _setstack = new ItemStack(CoindiamondItem.block, (int) (1)); + _setstack.setCount((int) new Object() { + int convert(String s) { + try { + return Integer.parseInt(s.trim()); + } catch (Exception e) { + } + return 0; + } + }.convert((new java.text.DecimalFormat("#") + .format(((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display))))); + ((Slot) ((Map) invobj).get((int) (1))).putStack(_setstack); + _current.detectAndSendChanges(); + } + } + } + } else if ((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) >= 4194304)) { + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) / 4194304)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.display = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + double _setval = (double) Math.floor((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display) * 4194304)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.transfer = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof PlayerEntity) { + Container _current = ((PlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack _setstack = new ItemStack(CoinnetheriteItem.block, (int) (1)); + _setstack.setCount((int) new Object() { + int convert(String s) { + try { + return Integer.parseInt(s.trim()); + } catch (Exception e) { + } + return 0; + } + }.convert((new java.text.DecimalFormat("#") + .format(((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display))))); + ((Slot) ((Map) invobj).get((int) (1))).putStack(_setstack); + _current.detectAndSendChanges(); + } + } + } + } + System.out.println((("Display: ") + "" + (((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display)))); + } + { + String _setval = (String) (new java.text.DecimalFormat("#,###,###.### PC") + .format(((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money))); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.money_disp = _setval; + capability.syncPlayerVariables(entity); + }); + } + } +} diff --git a/src/main/java/net/rewey/markscoins/procedures/BankTransferProcedure.java b/src/main/java/net/rewey/markscoins/procedures/BankTransferProcedure.java new file mode 100644 index 0000000..9429dbb --- /dev/null +++ b/src/main/java/net/rewey/markscoins/procedures/BankTransferProcedure.java @@ -0,0 +1,100 @@ +package net.rewey.markscoins.procedures; + +import net.rewey.markscoins.MarkscoinsModVariables; +import net.rewey.markscoins.MarkscoinsModElements; +import net.rewey.markscoins.MarkscoinsMod; + +import net.minecraftforge.items.ItemHandlerHelper; + +import net.minecraft.item.ItemStack; +import net.minecraft.inventory.container.Slot; +import net.minecraft.inventory.container.Container; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.Entity; + +import java.util.function.Supplier; +import java.util.Map; + +@MarkscoinsModElements.ModElement.Tag +public class BankTransferProcedure extends MarkscoinsModElements.ModElement { + public BankTransferProcedure(MarkscoinsModElements instance) { + super(instance, 61); + } + + public static void executeProcedure(Map dependencies) { + if (dependencies.get("entity") == null) { + if (!dependencies.containsKey("entity")) + MarkscoinsMod.LOGGER.warn("Failed to load dependency entity for procedure BankTransfer!"); + return; + } + Entity entity = (Entity) dependencies.get("entity"); + if ((((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) >= 0)) { + if (((new Object() { + public int getAmount(int sltid) { + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ItemStack stack = ((Slot) ((Map) invobj).get(sltid)).getStack();; + if (stack != null) + return stack.getCount(); + } + } + } + return 0; + } + }.getAmount((int) (1))) > 0)) { + { + double _setval = (double) (((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).money) + - ((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).transfer)); + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.money = _setval; + capability.syncPlayerVariables(entity); + }); + } + { + double _setval = (double) 0; + entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.transfer = _setval; + capability.syncPlayerVariables(entity); + }); + } + if (entity instanceof PlayerEntity) { + ItemStack _setstack = (new Object() { + public ItemStack getItemStack(int sltid) { + Entity _ent = entity; + if (_ent instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) _ent).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + return ((Slot) ((Map) invobj).get(sltid)).getStack(); + } + } + } + return ItemStack.EMPTY; + } + }.getItemStack((int) (1))); + _setstack.setCount((int) ((entity.getCapability(MarkscoinsModVariables.PLAYER_VARIABLES_CAPABILITY, null) + .orElse(new MarkscoinsModVariables.PlayerVariables())).display)); + ItemHandlerHelper.giveItemToPlayer(((PlayerEntity) entity), _setstack); + } + if (entity instanceof ServerPlayerEntity) { + Container _current = ((ServerPlayerEntity) entity).openContainer; + if (_current instanceof Supplier) { + Object invobj = ((Supplier) _current).get(); + if (invobj instanceof Map) { + ((Slot) ((Map) invobj).get((int) (1))).putStack(ItemStack.EMPTY); + _current.detectAndSendChanges(); + } + } + } + } + } + } +} diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml new file mode 100644 index 0000000..3379719 --- /dev/null +++ b/src/main/resources/META-INF/mods.toml @@ -0,0 +1,23 @@ +modLoader="javafml" +loaderVersion="[36,)" +license="Academic Free License v3.0" + +[[mods]] +modId="markscoins" +version="1.0.0" +displayName="Mark's Coins" +credits="Created using mod maker MCreator - https://mcreator.net/about" +displayURL="https://mcreator.net" +logoFile="logo.png" +authors="marewey, MCreator" + +[[dependencies.markscoins]] + modId="minecraft" + mandatory=true + versionRange="[1.16.5]" + ordering="NONE" + side="BOTH" + + + + diff --git a/src/main/resources/assets/markscoins/lang/en_us.json b/src/main/resources/assets/markscoins/lang/en_us.json new file mode 100644 index 0000000..2e6ce53 --- /dev/null +++ b/src/main/resources/assets/markscoins/lang/en_us.json @@ -0,0 +1,32 @@ +{ + "item.markscustom.coinnetherite": "Netherite Coin", + "item.markscustom.coinsapphire": "Sapphire Coin", + "key.markscustom.open_bank": "Open Bank", + "item.markscustom.coinplatinum": "Platinum Coin", + "key.markscoins.open_bank": "Open Bank", + "item.markscoins.coinnetherite": "Netherite Coin", + "item.markscustom.coinwood": "Wood Coin", + "advancements.piggybank.descr": "Save up till you get a netherite coin", + "item.markscoins.coinamethyst": "Amethyst Coin", + "item.markscustom.coindiamond": "Diamond Coin", + "item.markscustom.coingold": "Gold Coin", + "item.markscoins.coinsapphire": "Sapphire Coin", + "advancements.piggybank.title": "Piggy Bank", + "advancements.starter.descr": "Get your first coins", + "item.markscustom.coinstone": "Stone Coin", + "item.markscustom.coincopper": "Copper Coin", + "item.markscustom.coinemerald": "Emerald Coin", + "item.markscoins.coiniron": "Iron Coin", + "item.markscustom.coinamethyst": "Amethyst Coin", + "item.markscoins.coingold": "Gold Coin", + "item.markscustom.coinruby": "Ruby Coin", + "advancements.starter.title": "Starting the Economy", + "item.markscoins.coinruby": "Ruby Coin", + "item.markscoins.coincopper": "Copper Coin", + "item.markscoins.coinplatinum": "Platinum Coin", + "item.markscoins.coinemerald": "Emerald Coin", + "item.markscoins.coinstone": "Stone Coin", + "item.markscoins.coinwood": "Wood Coin", + "item.markscoins.coindiamond": "Diamond Coin", + "item.markscustom.coiniron": "Iron Coin" +} \ No newline at end of file diff --git a/src/main/resources/assets/markscoins/models/item/coinamethyst.json b/src/main/resources/assets/markscoins/models/item/coinamethyst.json new file mode 100644 index 0000000..3e94907 --- /dev/null +++ b/src/main/resources/assets/markscoins/models/item/coinamethyst.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "markscoins:items/coin_amethyst" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/markscoins/models/item/coincopper.json b/src/main/resources/assets/markscoins/models/item/coincopper.json new file mode 100644 index 0000000..4e20398 --- /dev/null +++ b/src/main/resources/assets/markscoins/models/item/coincopper.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "markscoins:items/coin_bronze" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/markscoins/models/item/coindiamond.json b/src/main/resources/assets/markscoins/models/item/coindiamond.json new file mode 100644 index 0000000..44ab39a --- /dev/null +++ b/src/main/resources/assets/markscoins/models/item/coindiamond.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "markscoins:items/coin_diamond" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/markscoins/models/item/coinemerald.json b/src/main/resources/assets/markscoins/models/item/coinemerald.json new file mode 100644 index 0000000..ed14471 --- /dev/null +++ b/src/main/resources/assets/markscoins/models/item/coinemerald.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "markscoins:items/coin_emerald" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/markscoins/models/item/coingold.json b/src/main/resources/assets/markscoins/models/item/coingold.json new file mode 100644 index 0000000..8e130ea --- /dev/null +++ b/src/main/resources/assets/markscoins/models/item/coingold.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "markscoins:items/coin_gold" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/markscoins/models/item/coiniron.json b/src/main/resources/assets/markscoins/models/item/coiniron.json new file mode 100644 index 0000000..380f444 --- /dev/null +++ b/src/main/resources/assets/markscoins/models/item/coiniron.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "markscoins:items/coin_iron" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/markscoins/models/item/coinnetherite.json b/src/main/resources/assets/markscoins/models/item/coinnetherite.json new file mode 100644 index 0000000..600fb2c --- /dev/null +++ b/src/main/resources/assets/markscoins/models/item/coinnetherite.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "markscoins:items/coin_netherite" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/markscoins/models/item/coinplatinum.json b/src/main/resources/assets/markscoins/models/item/coinplatinum.json new file mode 100644 index 0000000..4ce6696 --- /dev/null +++ b/src/main/resources/assets/markscoins/models/item/coinplatinum.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "markscoins:items/coin_platinum" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/markscoins/models/item/coinruby.json b/src/main/resources/assets/markscoins/models/item/coinruby.json new file mode 100644 index 0000000..4b2363c --- /dev/null +++ b/src/main/resources/assets/markscoins/models/item/coinruby.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "markscoins:items/coin_ruby" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/markscoins/models/item/coinsapphire.json b/src/main/resources/assets/markscoins/models/item/coinsapphire.json new file mode 100644 index 0000000..087a87a --- /dev/null +++ b/src/main/resources/assets/markscoins/models/item/coinsapphire.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "markscoins:items/coin_sapphire" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/markscoins/models/item/coinstone.json b/src/main/resources/assets/markscoins/models/item/coinstone.json new file mode 100644 index 0000000..f63ee78 --- /dev/null +++ b/src/main/resources/assets/markscoins/models/item/coinstone.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "markscoins:items/coin_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/markscoins/models/item/coinwood.json b/src/main/resources/assets/markscoins/models/item/coinwood.json new file mode 100644 index 0000000..99ff86b --- /dev/null +++ b/src/main/resources/assets/markscoins/models/item/coinwood.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "markscoins:items/coin_wood" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/markscoins/sounds.json b/src/main/resources/assets/markscoins/sounds.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/src/main/resources/assets/markscoins/sounds.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/src/main/resources/assets/markscoins/textures/bank_gui.png b/src/main/resources/assets/markscoins/textures/bank_gui.png new file mode 100644 index 0000000000000000000000000000000000000000..9d09ecae6392f52c8cd78728788edcddbefdd756 GIT binary patch literal 683 zcmeAS@N?(olHy`uVBq!ia0vp^8-REj2OE&AvS7Wzz`#`G>EaktaqI1!yPdBMMBDntV98RqT#Ij}g!N^r=lHm0|trr;6R)^j0|8 zUN(^xh_BQ5ddH$~sd`cc>joAeWS9nqVh4nPkVzteQ3nJY7@-0YOkl|14TRhY4NyI7 z5l{in1Q0~ibK|ri(5xW#hG4Jlv!CBwXsUIp(v)>h@xH5@bP7yaWFGEe5IexY%wqr~ zz&0V+Y!V3#j9>yu#chUr|8`XVX1~k3&dk+PKfLRS*F><>F`VJb9P|3M+1nc{f0nL| zXI%I3`@*s}SN{A?YIw`==IAZP8-21s7S9IR2H6Qf)(yrRdOoyvu!aXT@KC<<=%^ZuIAR+VS)R>oSII%mxR_7|I-gtYr2CYX;^V_5}76 z7)$>e-+{6>3_vlEr44U(OiVo9CoNfa=fnrWLw)BD@SQ-FhpEKryh7!}z0B5k@0^%W z#RCrMzd{>sZz{Xv^(|Y;x{e=e5l-z8-+?_24T9~H-tL(C#%to8&dI>2zb60qF0)?8 tdHX3<`TRQ+z6FVhzUSU3vgDHu!(*kJbE8;3)c_MAgQu&X%Q~loCIGf$3*i6& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/markscoins/textures/cashout.png b/src/main/resources/assets/markscoins/textures/cashout.png new file mode 100644 index 0000000000000000000000000000000000000000..00a2766b615b3dde79d1b7d8f3d71b66ee873ae0 GIT binary patch literal 994 zcmV<810DQ{P)P5PtsaZjWkl;hT`Xwyr8~CYC z|1-?)KgFHh)%7yV{9v$UhS~EwJ9DlL4G9Pc2nYxW2nYxW7=c_a2PY>d@b6D~EH5v^ z^Yb%&e}98%iJzXH%7ll9hvD+_67u;xJUuKR-XFQv@M*b#uWI6@du~V zshLnRnIy3T7tFKStm=_oTU&#XkrA>koldI~D-;UA%{6#@eAFatDwWb~1GMfr5O{lg z(ndvn!i{ys=&CLz-iz4~a(NVGn10B;Cz~--ZczCENc(GUn^afh?+27yiPXRP= z=}2&&&(H1GC-8VYZ4=ns+~k{lGm%InqM6L=}am~CR!3GE2R68MYHI36AzdZ%3K z5y-f^y8|U-=kOA`Nr9 z;)QU3rAa!+uZ>A063o+t*`w(caDIN?KoScp43a>DDEHR0|U$ElarI0jNp*A-a&ueV7*?KI=Wry z=e3bp_9qak)oNh1TFK_v`ZD@n>$nd6jRa|pj|}SaItFc~4(1h5!r9rGtOzZJvQwaO zqu!-=Mov%mt)E1ucHGg-WFYlKYiLi&$i^vq8xPQWvTU z>?a%@9jTFSP{8Z!tKvMJ8;ER>2txmhtO2D`3Buv9Oc)!gDx_uX?(V9_6)u-+Fw$Xc ze@jB4n~TTe^7HukIP)&6Rh?QTSvYj0)%~gRbg@(>ARr(hARr(hARwTQUk}>A^6&q| Q-T(jq07*qoM6N<$g68Jo{Qv*} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/markscoins/textures/coin_diamond.png b/src/main/resources/assets/markscoins/textures/coin_diamond.png new file mode 100644 index 0000000000000000000000000000000000000000..1ef98485c10b4f3c0715a907c86e47a6516093ab GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p>pfH311*ToJ%K_5>S#}Etub(2s9?Bg z4)^6dpPyd*-@V_i*|3AxXo7~b1J^{;#nMg}L=Bi7+7={Fka1*o;L_k?UX&vd+9Jfn Y@c&Fw^AS%!XP~(Zp00i_>zopr03$;-5dZ)H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/markscoins/textures/items/coin_amethyst.png b/src/main/resources/assets/markscoins/textures/items/coin_amethyst.png new file mode 100644 index 0000000000000000000000000000000000000000..ea363ed862e2c88ad70591eee8389263a9d16be1 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`)}AhoAr-fh6C_xhMKlaD{#;Kr za6hPEILUpfH311*ToJ%!DLSt#}EtuVNz4jXeo+Ix^go3B+xnrPgg&ebxsLQ090~GCIA2c literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/markscoins/textures/items/coin_diamond.png b/src/main/resources/assets/markscoins/textures/items/coin_diamond.png new file mode 100644 index 0000000000000000000000000000000000000000..1ef98485c10b4f3c0715a907c86e47a6516093ab GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p>pfH311*ToJ%K_5>S#}Etub(2s9?Bg z4)^6dpPyd*-@V_i*|3AxXo7~b1J^{;#nMg}L=Bi7+7={Fka1*o;L_k?UX&vd+9Jfn Y@c&Fw^AS%!XP~(Zp00i_>zopr03$;-5dZ)H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/markscoins/textures/items/coin_emerald.png b/src/main/resources/assets/markscoins/textures/items/coin_emerald.png new file mode 100644 index 0000000000000000000000000000000000000000..186f88a494eb0e70a92f763ace191ef79574ba93 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p>pfH311*ToJ%!Dvqx#}EtutDnm{r-UW|)>l4R literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/markscoins/textures/items/coin_gold.png b/src/main/resources/assets/markscoins/textures/items/coin_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..25d67ae98b4af73b5c9f75884ec19a6791f1b820 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p>pfH311*ToJ%L2pkN#}EtuGYk_HUr4C9UtpNP)ODyqL)uMrVG9F; YmST+KsUpfH311*ToJ%L2pkN#}EtulMpUXO@ GgeCxj*&fvZ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/markscoins/textures/items/coin_sapphire.png b/src/main/resources/assets/markscoins/textures/items/coin_sapphire.png new file mode 100644 index 0000000000000000000000000000000000000000..e61776466af934bc2e092a6a446382d67411b6bd GIT binary patch literal 114 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 Y@c&Fw^AS%!XP~(Zp00i_>zopr03$;-5dZ)H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/markscustom/textures/items/coin_amethyst.png b/src/main/resources/assets/markscustom/textures/items/coin_amethyst.png new file mode 100644 index 0000000000000000000000000000000000000000..ea363ed862e2c88ad70591eee8389263a9d16be1 GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`)}AhoAr-fh6C_xhMKlaD{#;Kr za6hPEILUpfH311*ToJ%!DLSt#}EtuVNz4jXeo+Ix^go3B+xnrPgg&ebxsLQ090~GCIA2c literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/markscustom/textures/items/coin_diamond.png b/src/main/resources/assets/markscustom/textures/items/coin_diamond.png new file mode 100644 index 0000000000000000000000000000000000000000..1ef98485c10b4f3c0715a907c86e47a6516093ab GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p>pfH311*ToJ%K_5>S#}Etub(2s9?Bg z4)^6dpPyd*-@V_i*|3AxXo7~b1J^{;#nMg}L=Bi7+7={Fka1*o;L_k?UX&vd+9Jfn Y@c&Fw^AS%!XP~(Zp00i_>zopr03$;-5dZ)H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/markscustom/textures/items/coin_emerald.png b/src/main/resources/assets/markscustom/textures/items/coin_emerald.png new file mode 100644 index 0000000000000000000000000000000000000000..186f88a494eb0e70a92f763ace191ef79574ba93 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p>pfH311*ToJ%!Dvqx#}EtutDnm{r-UW|)>l4R literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/markscustom/textures/items/coin_gold.png b/src/main/resources/assets/markscustom/textures/items/coin_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..25d67ae98b4af73b5c9f75884ec19a6791f1b820 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p>pfH311*ToJ%L2pkN#}EtuGYk_HUr4C9UtpNP)ODyqL)uMrVG9F; YmST+KsUpfH311*ToJ%L2pkN#}EtulMpUXO@ GgeCxj*&fvZ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/markscustom/textures/items/coin_sapphire.png b/src/main/resources/assets/markscustom/textures/items/coin_sapphire.png new file mode 100644 index 0000000000000000000000000000000000000000..e61776466af934bc2e092a6a446382d67411b6bd GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`mYyz-Ar-fh6C_xhMGdn5q$e1< zA5}1%WU^WPfBJ)W?Fj<2Gn_A&E|zwh!tKztF>%sf$1sT=rb&zpYp>|pfH311*ToJ%K`&1i#}Etuu!x6I)8$%E9*1LiLk^>41F!H?rU|?vt&EQ9eOd=N7#Vz6 WT^Vz0)pfH311*ToJ%K~GN?#}EtupfH311*ToJ%K_5>S#}Etub(2s9?Bg z4)^6dpPyd*-@V_i*|3AxXo7~b1J^{;#nMg}L=Bi7+7={Fka1*o;L_k?UX&vd+9Jfn Y@c&Fw^AS%!XP~(Zp00i_>zopr03$;-5dZ)H literal 0 HcmV?d00001 diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta new file mode 100644 index 0000000..d799e97 --- /dev/null +++ b/src/main/resources/pack.mcmeta @@ -0,0 +1,6 @@ +{ + "pack": { + "description": "markscoins mod resources", + "pack_format": 6 + } +} \ No newline at end of file