From bd6cc9da1b233c523cdbea4fbeab3e403104889b Mon Sep 17 00:00:00 2001 From: Wimpingego <45140821+Wimpingego@users.noreply.github.com> Date: Fri, 21 Aug 2020 15:41:43 +0100 Subject: [PATCH] 1.0.0 --- _config.yml | 1 - build.gradle | 9 +- gradle.properties | 10 +- .../java/com/github/wimpingego/nnow/NNOW.java | 55 +- .../nnow/client/gui/BookshelfChestScreen.java | 49 -- .../nnow/client/gui/SafeChestScreen.java | 49 -- .../container/BookshelfChestContainer.java | 98 --- .../nnow/container/ModContainerTypes.java | 21 - .../nnow/container/SafeChestContainer.java | 98 --- .../nnow/entities/ModTileEntityTypes.java | 28 - .../wimpingego/nnow/init/BlockList.java | 115 ++- .../github/wimpingego/nnow/init/FoodList.java | 12 +- .../github/wimpingego/nnow/init/ItemList.java | 67 +- .../wimpingego/nnow/init/MetalBlockList.java | 46 ++ .../wimpingego/nnow/init/MetalItemList.java | 58 ++ .../wimpingego/nnow/init/SoundList.java | 5 +- .../nnow/objects/blocks/AGBlock.java | 83 ++- .../objects/blocks/BookshelfChestBlock.java | 69 -- .../nnow/objects/blocks/CobbleGen.java | 5 +- .../nnow/objects/blocks/DarkGlass.java | 3 +- .../nnow/objects/blocks/EndLantern.java | 12 - .../nnow/objects/blocks/LavaWell.java | 5 +- .../objects/blocks/RedstoneGolemHead.java | 127 +--- .../nnow/objects/blocks/SafeChestBlock.java | 89 --- .../nnow/objects/blocks/SuperObsidian.java | 3 +- .../nnow/objects/blocks/WaterWell.java | 5 +- .../blocks/{ => poi}/BeekeeperBlock.java | 2 +- .../blocks/poi/DirectionalBaseBlock.java | 44 ++ .../blocks/{ => poi}/DoubleHighBlock.java | 2 +- .../objects/blocks/poi/EndTraderBlock.java | 89 +++ .../MonsterTrapperBlock.java} | 82 +-- .../objects/blocks/poi/NetherTraderBlock.java | 87 +++ .../nnow/objects/blocks/slabs/BirchSlab.java | 4 +- .../nnow/objects/blocks/slabs/GrassSlab.java | 27 +- .../nnow/objects/blocks/slabs/LeafSlab.java | 4 +- .../nnow/objects/blocks/slabs/PathSlab.java | 138 ++++ .../nnow/objects/blocks/slabs/SpruceSlab.java | 4 +- .../blocks/stairs/BirchStairsBlock.java | 4 +- .../blocks/stairs/LeafStairsBlock.java | 4 +- .../blocks/stairs/SpruceStairsBlock.java | 4 +- .../blocks/traps/DiamondTrapBlock.java | 28 + .../objects/blocks/traps/GoldTrapBlock.java | 28 + .../objects/blocks/traps/IronTrapBlock.java | 28 + .../{TrapBlock.java => TrapBaseBlock.java} | 18 +- .../blocks/traps/TrapDamageSource.java | 6 +- .../nnow/objects/blocks/traps/TrapType.java | 8 +- .../objects/blocks/traps/WitherTrapBlock.java | 29 + ...{IronBerryBush.java => BaseBerryBush.java} | 22 +- .../nnow/objects/bushs/CoalBerryBush.java | 129 ---- .../nnow/objects/bushs/DiamondBerryBush.java | 125 ---- .../nnow/objects/bushs/EmeraldBerryBush.java | 125 ---- .../objects/bushs/ExperienceBerryBush.java | 120 +--- .../nnow/objects/bushs/FireBerryBush.java | 110 +-- .../nnow/objects/bushs/GoldBerryBush.java | 124 ---- .../nnow/objects/bushs/IceberryBush.java | 115 +-- .../nnow/objects/bushs/LapisBerryBush.java | 125 ---- .../nnow/objects/bushs/QuartzBerryBush.java | 125 ---- .../nnow/objects/bushs/RedstoneBerryBush.java | 129 ---- .../nnow/objects/bushs/WoodenBerryBush.java | 116 +-- .../objects/bushs/dusts/ClayBerryBush.java | 56 ++ .../objects/bushs/dusts/DirtBerryBush.java | 56 ++ .../objects/bushs/dusts/GravelBerryBush.java | 56 ++ .../objects/bushs/dusts/SandBerryBush.java | 56 ++ .../objects/bushs/dusts/StoneBerryBush.java | 56 ++ .../bushs/metals/AluminumBerryBush.java | 52 ++ .../bushs/metals/BismuthBerryBush.java | 52 ++ .../objects/bushs/metals/CopperBerryBush.java | 52 ++ .../bushs/metals/IridiumBerryBush.java | 52 ++ .../objects/bushs/metals/LeadBerryBush.java | 52 ++ .../objects/bushs/metals/NickelBerryBush.java | 52 ++ .../objects/bushs/metals/OsmiumBerryBush.java | 52 ++ .../bushs/metals/PlatinumBerryBush.java | 52 ++ .../objects/bushs/metals/SilverBerryBush.java | 52 ++ .../objects/bushs/metals/TinBerryBush.java | 52 ++ .../bushs/metals/UraniumBerryBush.java | 52 ++ .../objects/bushs/metals/ZincBerryBush.java | 52 ++ .../objects/bushs/ores/CoalBerryBush.java | 52 ++ .../objects/bushs/ores/DiamondBerryBush.java | 52 ++ .../objects/bushs/ores/EmeraldBerryBush.java | 52 ++ .../objects/bushs/ores/GoldBerryBush.java | 51 ++ .../objects/bushs/ores/IronBerryBush.java | 51 ++ .../objects/bushs/ores/LapisBerryBush.java | 52 ++ .../objects/bushs/ores/QuartzBerryBush.java | 52 ++ .../objects/bushs/ores/RedstoneBerryBush.java | 52 ++ .../nnow/objects/items/DeathPotato.java | 14 +- .../nnow/objects/items/EnderBag.java | 38 + .../wimpingego/nnow/objects/items/Magnet.java | 19 +- .../nnow/objects/items/PokingStick.java | 259 +++++-- .../wimpingego/nnow/objects/items/Viagra.java | 92 ++- .../objects/items/hammers/DiamondHammer.java | 24 +- .../objects/items/hammers/EmeraldHammer.java | 46 ++ .../objects/items/hammers/GoldenHammer.java | 26 +- .../objects/items/hammers/HammerBase.java | 659 ++---------------- .../objects/items/hammers/IronHammer.java | 24 +- .../objects/items/hammers/StoneHammer.java | 26 +- .../objects/items/shovel/DiamondSpade.java | 25 - .../objects/items/shovel/GoldenSpade.java | 25 - .../nnow/objects/items/shovel/IronSpade.java | 25 - .../nnow/objects/items/shovel/SpadeBase.java | 647 ----------------- .../nnow/objects/items/shovel/StoneSpade.java | 25 - .../objects/items/spades/DiamondSpade.java | 29 + .../objects/items/spades/EmeraldSpade.java | 46 ++ .../objects/items/spades/GoldenSpade.java | 29 + .../nnow/objects/items/spades/IronSpade.java | 29 + .../nnow/objects/items/spades/SpadeBase.java | 115 +++ .../nnow/objects/items/spades/StoneSpade.java | 29 + .../tileentity/BookshelfChestTileEntity.java | 173 ----- .../nnow/tileentity/SafeChestTileEntity.java | 183 ----- .../nnow/util/ClientEventBusSubscriber.java | 26 - .../wimpingego/nnow/util/ClientRenderer.java | 21 +- .../nnow/util/ForgeEventBusSubscriber.java | 9 - .../nnow/util/MetalClientRenderer.java | 20 + .../wimpingego/nnow/util/ModConfigs.java | 102 ++- .../nnow/util/PlayerSpecialAbilities.java | 11 - .../wimpingego/nnow/util/SlabAction.java | 50 ++ .../wimpingego/nnow/util/ToolUtil3x3.java | 18 +- .../nnow/util/enums/ModArmorMaterials.java | 6 + .../nnow/util/loot/LootDropMods.java | 133 ++++ .../villagers/MetalTradesRegistration.java | 41 ++ .../nnow/villagers/PointOfInterestTypes.java | 23 +- .../nnow/villagers/RandomTradeBuilder.java | 5 +- .../nnow/villagers/TradesRegistration.java | 233 ++++--- .../nnow/villagers/VillagerProfessions.java | 4 + src/main/resources/META-INF/mods.toml | 54 +- .../textures/entity/piglin/piglin.png | Bin 0 -> 1128 bytes .../entity/piglin/zombified_piglin.png | Bin 0 -> 1549 bytes .../nnow/blockstates/aluminum_berry_bush.json | 8 + .../nnow/blockstates/aluminum_block.json | 7 + .../assets/nnow/blockstates/banker_poi.json | 10 + .../nnow/blockstates/bismuth_berry_bush.json | 8 + .../nnow/blockstates/bismuth_block.json | 7 + .../nnow/blockstates/clay_berry_bush.json | 8 + .../nnow/blockstates/copper_berry_bush.json | 8 + .../assets/nnow/blockstates/copper_block.json | 7 + .../nnow/blockstates/dirt_berry_bush.json | 8 + .../assets/nnow/blockstates/end_trader.json | 7 + .../nnow/blockstates/gravel_berry_bush.json | 8 + .../nnow/blockstates/ingot_furnace.json | 8 + .../nnow/blockstates/iridium_berry_bush.json | 8 + .../nnow/blockstates/iridium_block.json | 7 + .../nnow/blockstates/lead_berry_bush.json | 8 + .../assets/nnow/blockstates/lead_block.json | 7 + .../nnow/blockstates/nether_trader.json | 13 + .../nnow/blockstates/nickel_berry_bush.json | 8 + .../assets/nnow/blockstates/nickel_block.json | 7 + .../nnow/blockstates/osmium_berry_bush.json | 8 + .../assets/nnow/blockstates/osmium_block.json | 7 + .../assets/nnow/blockstates/path_stairs.json | 44 -- .../nnow/blockstates/platinum_berry_bush.json | 8 + .../nnow/blockstates/platinum_block.json | 7 + .../nnow/blockstates/sand_berry_bush.json | 8 + .../nnow/blockstates/silver_berry_bush.json | 8 + .../assets/nnow/blockstates/silver_block.json | 7 + .../nnow/blockstates/stone_berry_bush.json | 8 + .../nnow/blockstates/test_berry_bush.json | 8 + .../nnow/blockstates/tin_berry_bush.json | 8 + .../assets/nnow/blockstates/tin_block.json | 7 + .../nnow/blockstates/uranium_berry_bush.json | 8 + .../nnow/blockstates/uranium_block.json | 7 + .../nnow/blockstates/zinc_berry_bush.json | 8 + .../assets/nnow/blockstates/zinc_block.json | 7 + .../resources/assets/nnow/lang/en_us.json | 89 ++- .../block/aluminum_berry_bush_stage2.json | 6 + .../block/aluminum_berry_bush_stage3.json | 6 + .../nnow/models/block/aluminum_block.json | 6 + .../assets/nnow/models/block/banker_poi.json | 475 +++++++++++++ .../nnow/models/block/berry_bush_stage0.json | 2 +- .../nnow/models/block/berry_bush_stage1.json | 2 +- .../block/bismuth_berry_bush_stage2.json | 6 + .../block/bismuth_berry_bush_stage3.json | 6 + .../nnow/models/block/bismuth_block.json | 6 + .../models/block/clay_berry_bush_stage2.json | 6 + .../models/block/clay_berry_bush_stage3.json | 6 + .../models/block/coal_berry_bush_stage2.json | 2 +- .../models/block/coal_berry_bush_stage3.json | 2 +- .../block/copper_berry_bush_stage2.json | 6 + .../block/copper_berry_bush_stage3.json | 6 + .../nnow/models/block/copper_block.json | 6 + .../block/diamond_berry_bush_stage2.json | 2 +- .../block/diamond_berry_bush_stage3.json | 2 +- .../models/block/dirt_berry_bush_stage2.json | 6 + .../models/block/dirt_berry_bush_stage3.json | 6 + .../block/emerald_berry_bush_stage2.json | 2 +- .../block/emerald_berry_bush_stage3.json | 2 +- .../assets/nnow/models/block/end_trader.json | 105 +++ .../models/block/fire_berry_bush_stage2.json | 2 +- .../models/block/fire_berry_bush_stage3.json | 2 +- .../models/block/gold_berry_bush_stage2.json | 2 +- .../models/block/gold_berry_bush_stage3.json | 2 +- .../block/gravel_berry_bush_stage2.json | 6 + .../block/gravel_berry_bush_stage3.json | 6 + .../models/block/ice_berry_bush_stage2.json | 2 +- .../models/block/ice_berry_bush_stage3.json | 2 +- .../nnow/models/block/ingot_furnace.json | 55 ++ .../block/iridium_berry_bush_stage2.json | 6 + .../block/iridium_berry_bush_stage3.json | 6 + .../nnow/models/block/iridium_block.json | 6 + .../models/block/iron_berry_bush_stage2.json | 2 +- .../models/block/iron_berry_bush_stage3.json | 2 +- .../models/block/lapis_berry_bush_stage2.json | 2 +- .../models/block/lapis_berry_bush_stage3.json | 2 +- .../models/block/lead_berry_bush_stage2.json | 6 + .../models/block/lead_berry_bush_stage3.json | 6 + .../assets/nnow/models/block/lead_block.json | 6 + .../nnow/models/block/nether_trader.json | 174 +++++ .../models/block/nether_trader_bottom.json | 77 ++ .../nnow/models/block/nether_trader_top.json | 140 ++++ .../block/nickel_berry_bush_stage2.json | 6 + .../block/nickel_berry_bush_stage3.json | 6 + .../nnow/models/block/nickel_block.json | 6 + .../models/block/{ => old}/barley_crop0.json | 0 .../models/block/{ => old}/barley_crop1.json | 0 .../models/block/{ => old}/barley_crop2.json | 0 .../models/block/{ => old}/barley_crop3.json | 0 .../models/block/{ => old}/barley_crop4.json | 0 .../models/block/{ => old}/barley_crop5.json | 0 .../models/block/{ => old}/barley_crop6.json | 0 .../models/block/{ => old}/barley_crop7.json | 0 .../models/block/{ => old}/pepper_stage0.json | 0 .../models/block/{ => old}/pepper_stage1.json | 0 .../models/block/{ => old}/pepper_stage2.json | 0 .../models/block/{ => old}/pepper_stage3.json | 0 .../models/block/{ => old}/test_block.json | 0 .../block/osmium_berry_bush_stage2.json | 6 + .../block/osmium_berry_bush_stage3.json | 6 + .../nnow/models/block/osmium_block.json | 6 + .../assets/nnow/models/block/path_slab.json | 54 ++ .../nnow/models/block/path_slab_top.json | 21 + .../block/platinum_berry_bush_stage2.json | 6 + .../block/platinum_berry_bush_stage3.json | 6 + .../nnow/models/block/platinum_block.json | 6 + .../block/quartz_berry_bush_stage2.json | 2 +- .../block/quartz_berry_bush_stage3.json | 2 +- .../block/redstone_berry_bush_stage2.json | 2 +- .../block/redstone_berry_bush_stage3.json | 2 +- .../models/block/sand_berry_bush_stage2.json | 6 + .../models/block/sand_berry_bush_stage3.json | 6 + .../block/silver_berry_bush_stage2.json | 6 + .../block/silver_berry_bush_stage3.json | 6 + .../nnow/models/block/silver_block.json | 6 + .../models/block/stone_berry_bush_stage2.json | 6 + .../models/block/stone_berry_bush_stage3.json | 6 + .../models/block/tin_berry_bush_stage2.json | 6 + .../models/block/tin_berry_bush_stage3.json | 6 + .../assets/nnow/models/block/tin_block.json | 6 + .../block/uranium_berry_bush_stage2.json | 6 + .../block/uranium_berry_bush_stage3.json | 6 + .../nnow/models/block/uranium_block.json | 6 + .../block/wooden_berry_bush_stage2.json | 2 +- .../block/wooden_berry_bush_stage3.json | 2 +- .../models/block/xp_berry_bush_stage2.json | 2 +- .../models/block/xp_berry_bush_stage3.json | 2 +- .../models/block/zinc_berry_bush_stage2.json | 6 + .../models/block/zinc_berry_bush_stage3.json | 6 + .../assets/nnow/models/block/zinc_block.json | 6 + .../nnow/models/item/aluminum_berry.json | 6 + .../nnow/models/item/aluminum_block.json | 3 + .../nnow/models/item/aluminum_ingot.json | 6 + .../nnow/models/item/aluminum_nugget.json | 6 + .../assets/nnow/models/item/banker_poi.json | 3 + .../nnow/models/item/bismuth_berry.json | 6 + .../nnow/models/item/bismuth_block.json | 3 + .../nnow/models/item/bismuth_ingot.json | 6 + .../nnow/models/item/bismuth_nugget.json | 6 + .../nnow/models/item/bowl_of_weetabix.json | 7 + .../nnow/models/item/bun_in_the_oven.json | 6 + .../assets/nnow/models/item/clay_berry.json | 6 + .../assets/nnow/models/item/clay_dust.json | 2 +- .../assets/nnow/models/item/coal_berry.json | 2 +- .../assets/nnow/models/item/coal_nugget.json | 2 +- .../assets/nnow/models/item/copper_berry.json | 6 + .../assets/nnow/models/item/copper_block.json | 3 + .../assets/nnow/models/item/copper_ingot.json | 6 + .../nnow/models/item/copper_nugget.json | 6 + .../nnow/models/item/diamond_berry.json | 2 +- .../nnow/models/item/diamond_hammer.json | 2 +- .../nnow/models/item/diamond_nugget.json | 2 +- .../nnow/models/item/diamond_spade.json | 2 +- .../assets/nnow/models/item/dirt_berry.json | 6 + .../assets/nnow/models/item/dirt_dust.json | 2 +- .../nnow/models/item/emerald_berry.json | 2 +- .../nnow/models/item/emerald_hammer.json | 6 + .../nnow/models/item/emerald_nugget.json | 2 +- .../nnow/models/item/emerald_spade.json | 6 + .../assets/nnow/models/item/end_trader.json | 3 + .../assets/nnow/models/item/ender_bag.json | 6 + .../assets/nnow/models/item/fire_berry.json | 2 +- .../assets/nnow/models/item/fire_nugget.json | 2 +- .../assets/nnow/models/item/gold_berry.json | 2 +- .../nnow/models/item/golden_hammer.json | 2 +- .../assets/nnow/models/item/golden_spade.json | 2 +- .../assets/nnow/models/item/gravel_berry.json | 6 + .../assets/nnow/models/item/gravel_dust.json | 2 +- .../assets/nnow/models/item/ice_berry.json | 2 +- .../assets/nnow/models/item/ice_nugget.json | 2 +- .../nnow/models/item/ingot_furnace.json | 55 ++ .../nnow/models/item/iridium_berry.json | 6 + .../nnow/models/item/iridium_block.json | 3 + .../nnow/models/item/iridium_ingot.json | 6 + .../nnow/models/item/iridium_nugget.json | 6 + .../assets/nnow/models/item/iron_berry.json | 2 +- .../assets/nnow/models/item/iron_hammer.json | 2 +- .../assets/nnow/models/item/iron_spade.json | 2 +- .../assets/nnow/models/item/lapis_berry.json | 2 +- .../assets/nnow/models/item/lapis_nugget.json | 2 +- .../assets/nnow/models/item/lead_berry.json | 6 + .../assets/nnow/models/item/lead_block.json | 3 + .../assets/nnow/models/item/lead_ingot.json | 6 + .../assets/nnow/models/item/lead_nugget.json | 6 + .../nnow/models/item/nether_trader.json | 3 + .../assets/nnow/models/item/nickel_berry.json | 6 + .../assets/nnow/models/item/nickel_block.json | 3 + .../assets/nnow/models/item/nickel_ingot.json | 6 + .../nnow/models/item/nickel_nugget.json | 6 + .../assets/nnow/models/item/osmium_berry.json | 6 + .../assets/nnow/models/item/osmium_block.json | 3 + .../assets/nnow/models/item/osmium_ingot.json | 6 + .../nnow/models/item/osmium_nugget.json | 6 + .../assets/nnow/models/item/path_stairs.json | 3 - .../nnow/models/item/platinum_berry.json | 6 + .../nnow/models/item/platinum_block.json | 3 + .../nnow/models/item/platinum_ingot.json | 6 + .../nnow/models/item/platinum_nugget.json | 6 + .../assets/nnow/models/item/quartz_berry.json | 2 +- .../nnow/models/item/quartz_nugget.json | 2 +- .../nnow/models/item/redstone_berry.json | 2 +- .../nnow/models/item/redstone_nugget.json | 2 +- .../assets/nnow/models/item/sand_berry.json | 6 + .../assets/nnow/models/item/sand_dust.json | 2 +- .../assets/nnow/models/item/silver_berry.json | 6 + .../assets/nnow/models/item/silver_block.json | 3 + .../assets/nnow/models/item/silver_ingot.json | 6 + .../nnow/models/item/silver_nugget.json | 6 + .../assets/nnow/models/item/stone_berry.json | 6 + .../assets/nnow/models/item/stone_dust.json | 2 +- .../assets/nnow/models/item/stone_hammer.json | 2 +- .../assets/nnow/models/item/stone_spade.json | 2 +- .../assets/nnow/models/item/test_berry.json | 6 + .../assets/nnow/models/item/tin_berry.json | 6 + .../assets/nnow/models/item/tin_block.json | 3 + .../assets/nnow/models/item/tin_ingot.json | 6 + .../assets/nnow/models/item/tin_nugget.json | 6 + .../nnow/models/item/uranium_berry.json | 6 + .../nnow/models/item/uranium_block.json | 3 + .../nnow/models/item/uranium_ingot.json | 6 + .../nnow/models/item/uranium_nugget.json | 6 + .../assets/nnow/models/item/weetabix.json | 2 +- .../assets/nnow/models/item/wooden_berry.json | 2 +- .../nnow/models/item/wooden_nugget.json | 2 +- .../assets/nnow/models/item/xp_berry.json | 2 +- .../assets/nnow/models/item/zinc_berry.json | 6 + .../assets/nnow/models/item/zinc_block.json | 3 + .../assets/nnow/models/item/zinc_ingot.json | 6 + .../assets/nnow/models/item/zinc_nugget.json | 6 + .../assets/nnow/textures/blocks/book.png | Bin 0 -> 372 bytes .../bushes/aluminum_berry_bush_stage2.png | Bin 0 -> 3824 bytes .../bushes/aluminum_berry_bush_stage3.png | Bin 0 -> 3907 bytes .../blocks/{ => bushes}/berry_bush_stage0.png | Bin .../blocks/{ => bushes}/berry_bush_stage1.png | Bin .../bushes/bismuth_berry_bush_stage2.png | Bin 0 -> 3824 bytes .../bushes/bismuth_berry_bush_stage3.png | Bin 0 -> 3906 bytes .../blocks/bushes/clay_berry_bush_stage2.png | Bin 0 -> 3824 bytes .../blocks/bushes/clay_berry_bush_stage3.png | Bin 0 -> 3909 bytes .../{ => bushes}/coal_berry_bush_stage2.png | Bin .../{ => bushes}/coal_berry_bush_stage3.png | Bin .../bushes/copper_berry_bush_stage2.png | Bin 0 -> 3824 bytes .../bushes/copper_berry_bush_stage3.png | Bin 0 -> 3908 bytes .../diamond_berry_bush_stage2.png | Bin .../diamond_berry_bush_stage3.png | Bin .../blocks/bushes/dirt_berry_bush_stage2.png | Bin 0 -> 3824 bytes .../blocks/bushes/dirt_berry_bush_stage3.png | Bin 0 -> 3908 bytes .../emerald_berry_bush_stage2.png | Bin .../emerald_berry_bush_stage3.png | Bin .../{ => bushes}/fire_berry_bush_stage2.png | Bin .../fire_berry_bush_stage2.png.mcmeta | 0 .../{ => bushes}/fire_berry_bush_stage3.png | Bin .../fire_berry_bush_stage3.png.mcmeta | 0 .../{ => bushes}/gold_berry_bush_stage2.png | Bin .../{ => bushes}/gold_berry_bush_stage3.png | Bin .../bushes/gravel_berry_bush_stage2.png | Bin 0 -> 3822 bytes .../bushes/gravel_berry_bush_stage3.png | Bin 0 -> 3905 bytes .../{ => bushes}/ice_berry_bush_stage2.png | Bin .../{ => bushes}/ice_berry_bush_stage3.png | Bin .../bushes/iridium_berry_bush_stage2.png | Bin 0 -> 3824 bytes .../bushes/iridium_berry_bush_stage3.png | Bin 0 -> 3909 bytes .../{ => bushes}/iron_berry_bush_stage2.png | Bin .../{ => bushes}/iron_berry_bush_stage3.png | Bin .../{ => bushes}/lapis_berry_bush_stage2.png | Bin .../{ => bushes}/lapis_berry_bush_stage3.png | Bin .../blocks/bushes/lead_berry_bush_stage2.png | Bin 0 -> 3822 bytes .../blocks/bushes/lead_berry_bush_stage3.png | Bin 0 -> 3904 bytes .../bushes/nickel_berry_bush_stage2.png | Bin 0 -> 3826 bytes .../bushes/nickel_berry_bush_stage3.png | Bin 0 -> 3909 bytes .../bushes/osmium_berry_bush_stage2.png | Bin 0 -> 3827 bytes .../bushes/osmium_berry_bush_stage3.png | Bin 0 -> 3910 bytes .../bushes/platinum_berry_bush_stage2.png | Bin 0 -> 3822 bytes .../bushes/platinum_berry_bush_stage3.png | Bin 0 -> 3910 bytes .../{ => bushes}/quartz_berry_bush_stage2.png | Bin .../{ => bushes}/quartz_berry_bush_stage3.png | Bin .../redstone_berry_bush_stage2.png | Bin .../redstone_berry_bush_stage3.png | Bin .../blocks/bushes/sand_berry_bush_stage2.png | Bin 0 -> 3823 bytes .../blocks/bushes/sand_berry_bush_stage3.png | Bin 0 -> 3908 bytes .../bushes/silver_berry_bush_stage2.png | Bin 0 -> 3822 bytes .../bushes/silver_berry_bush_stage3.png | Bin 0 -> 3904 bytes .../blocks/bushes/stone_berry_bush_stage2.png | Bin 0 -> 4020 bytes .../blocks/bushes/stone_berry_bush_stage3.png | Bin 0 -> 4102 bytes .../blocks/bushes/tin_berry_bush_stage2.png | Bin 0 -> 3822 bytes .../blocks/bushes/tin_berry_bush_stage3.png | Bin 0 -> 3905 bytes .../bushes/uranium_berry_bush_stage2.png | Bin 0 -> 3824 bytes .../bushes/uranium_berry_bush_stage3.png | Bin 0 -> 3907 bytes .../{ => bushes}/wooden_berry_bush_stage2.png | Bin .../{ => bushes}/wooden_berry_bush_stage3.png | Bin .../{ => bushes}/xp_berry_bush_stage2.png | Bin .../{ => bushes}/xp_berry_bush_stage3.png | Bin .../blocks/bushes/zinc_berry_bush_stage2.png | Bin 0 -> 3824 bytes .../blocks/bushes/zinc_berry_bush_stage3.png | Bin 0 -> 3905 bytes .../nnow/textures/blocks/enchanted_book.png | Bin 0 -> 1762 bytes .../textures/blocks/end_trader_bottom.png | Bin 0 -> 2006 bytes .../nnow/textures/blocks/end_trader_side1.png | Bin 0 -> 2045 bytes .../nnow/textures/blocks/end_trader_top.png | Bin 0 -> 11512 bytes .../textures/blocks/end_trader_top.png.mcmeta | 3 + .../ingot_furnace/ingot_furnace_bottom.png | Bin 0 -> 3492 bytes .../ingot_furnace/ingot_furnace_front.png | Bin 0 -> 1896 bytes .../ingot_furnace/ingot_furnace_side.png | Bin 0 -> 1864 bytes .../ingot_furnace/ingot_furnace_top.png | Bin 0 -> 1843 bytes .../textures/blocks/metals/aluminum_block.png | Bin 0 -> 594 bytes .../textures/blocks/metals/bismuth_block.png | Bin 0 -> 1995 bytes .../textures/blocks/metals/copper_block.png | Bin 0 -> 2086 bytes .../textures/blocks/metals/iridium_block.png | Bin 0 -> 2059 bytes .../textures/blocks/metals/lead_block.png | Bin 0 -> 563 bytes .../textures/blocks/metals/nickel_block.png | Bin 0 -> 584 bytes .../textures/blocks/metals/osmium_block.png | Bin 0 -> 2072 bytes .../textures/blocks/metals/platinum_block.png | Bin 0 -> 2068 bytes .../textures/blocks/metals/silver_block.png | Bin 0 -> 2053 bytes .../nnow/textures/blocks/metals/tin_block.png | Bin 0 -> 1994 bytes .../textures/blocks/metals/uranium_block.png | Bin 0 -> 2076 bytes .../textures/blocks/metals/zinc_block.png | Bin 0 -> 2061 bytes .../blocks/{ => old}/barley_crop0.png | Bin .../blocks/{ => old}/barley_crop1.png | Bin .../blocks/{ => old}/barley_crop2.png | Bin .../blocks/{ => old}/barley_crop3.png | Bin .../blocks/{ => old}/barley_crop4.png | Bin .../blocks/{ => old}/barley_crop5.png | Bin .../blocks/{ => old}/barley_crop6.png | Bin .../blocks/{ => old}/barley_crop7.png | Bin .../blocks/{ => old}/pepper_stage0.png | Bin .../blocks/{ => old}/pepper_stage1.png | Bin .../blocks/{ => old}/pepper_stage2.png | Bin .../blocks/{ => old}/pepper_stage3.png | Bin .../blocks/{ => old}/spawner_bars.png | Bin .../villager/profession/ingot_trader.png | Bin 0 -> 4116 bytes .../villager/profession/nether_trader.png | Bin 0 -> 4491 bytes .../profession/ingot_trader.png | Bin 0 -> 4111 bytes .../profession/nether_trader.png | Bin 0 -> 4885 bytes .../textures/items/berrys/aluminum_berry.png | Bin 0 -> 4189 bytes .../textures/items/berrys/bismuth_berry.png | Bin 0 -> 4185 bytes .../nnow/textures/items/berrys/clay_berry.png | Bin 0 -> 4113 bytes .../items/{ => berrys}/coal_berry.png | Bin .../textures/items/berrys/copper_berry.png | Bin 0 -> 4192 bytes .../items/{ => berrys}/diamond_berry.png | Bin .../nnow/textures/items/berrys/dirt_berry.png | Bin 0 -> 4113 bytes .../items/{ => berrys}/emerald_berry.png | Bin .../items/{ => berrys}/fire_berry.png | Bin .../items/{ => berrys}/gold_berry.png | Bin .../textures/items/berrys/gravel_berry.png | Bin 0 -> 4191 bytes .../textures/items/{ => berrys}/ice_berry.png | Bin .../textures/items/berrys/iridium_berry.png | Bin 0 -> 4188 bytes .../items/{ => berrys}/iron_berry.png | Bin .../items/{ => berrys}/lapis_berry.png | Bin .../nnow/textures/items/berrys/lead_berry.png | Bin 0 -> 4185 bytes .../textures/items/berrys/nickel_berry.png | Bin 0 -> 4188 bytes .../textures/items/berrys/osmium_berry.png | Bin 0 -> 4189 bytes .../textures/items/berrys/platinum_berry.png | Bin 0 -> 4187 bytes .../items/{ => berrys}/quartz_berry.png | Bin .../items/{ => berrys}/redstone_berry.png | Bin .../nnow/textures/items/berrys/sand_berry.png | Bin 0 -> 4113 bytes .../textures/items/berrys/silver_berry.png | Bin 0 -> 4193 bytes .../textures/items/berrys/stone_berry.png | Bin 0 -> 4106 bytes .../nnow/textures/items/berrys/tin_berry.png | Bin 0 -> 4185 bytes .../textures/items/berrys/uranium_berry.png | Bin 0 -> 4189 bytes .../items/{ => berrys}/wooden_berry.png | Bin .../textures/items/{ => berrys}/xp_berry.png | Bin .../nnow/textures/items/berrys/zinc_berry.png | Bin 0 -> 4185 bytes .../nnow/textures/items/bun_in_the_oven.png | Bin 0 -> 1918 bytes .../textures/items/clear_chain_helmet.png | Bin 1769 -> 3081 bytes .../nnow/textures/items/diamond_hammer.png | Bin 2434 -> 0 bytes .../textures/items/{ => dusts}/clay_dust.png | Bin .../textures/items/{ => dusts}/dirt_dust.png | Bin .../items/{ => dusts}/gravel_dust.png | Bin .../textures/items/{ => dusts}/sand_dust.png | Bin .../textures/items/{ => dusts}/stone_dust.png | Bin .../assets/nnow/textures/items/ender_bag.png | Bin 0 -> 3003 bytes .../nnow/textures/items/ender_bag.png.mcmeta | 66 ++ .../textures/items/food/bowl_of_weetabix.png | Bin 0 -> 2006 bytes .../textures/items/{ => food}/weetabix.png | Bin .../nnow/textures/items/golden_spade.png | Bin 3342 -> 0 bytes .../textures/items/hammers/diamond_hammer.png | Bin 0 -> 4011 bytes .../textures/items/hammers/emerald_hammer.png | Bin 0 -> 4031 bytes .../items/{ => hammers}/golden_hammer.png | Bin .../items/{ => hammers}/iron_hammer.png | Bin .../items/{ => hammers}/stone_hammer.png | Bin .../textures/items/ingots/aluminum_ingot.png | Bin 0 -> 556 bytes .../textures/items/ingots/bismuth_ingot.png | Bin 0 -> 363 bytes .../textures/items/ingots/copper_ingot.png | Bin 0 -> 723 bytes .../textures/items/ingots/iridium_ingot.png | Bin 0 -> 610 bytes .../nnow/textures/items/ingots/lead_ingot.png | Bin 0 -> 662 bytes .../textures/items/ingots/nickel_ingot.png | Bin 0 -> 567 bytes .../textures/items/ingots/osmium_ingot.png | Bin 0 -> 721 bytes .../textures/items/ingots/platinum_ingot.png | Bin 0 -> 383 bytes .../textures/items/ingots/silver_ingot.png | Bin 0 -> 645 bytes .../nnow/textures/items/ingots/tin_ingot.png | Bin 0 -> 488 bytes .../textures/items/ingots/uranium_ingot.png | Bin 0 -> 520 bytes .../nnow/textures/items/ingots/zinc_ingot.png | Bin 0 -> 395 bytes .../items/nuggets/aluminum_nugget.png | Bin 0 -> 237 bytes .../textures/items/nuggets/bismuth_nugget.png | Bin 0 -> 1280 bytes .../items/{ => nuggets}/coal_nugget.png | Bin .../textures/items/nuggets/copper_nugget.png | Bin 0 -> 234 bytes .../items/{ => nuggets}/diamond_nugget.png | Bin .../items/{ => nuggets}/emerald_nugget.png | Bin .../items/{ => nuggets}/fire_nugget.png | Bin .../items/{ => nuggets}/ice_nugget.png | Bin 3041 -> 3025 bytes .../textures/items/nuggets/iridium_nugget.png | Bin 0 -> 348 bytes .../items/{ => nuggets}/lapis_nugget.png | Bin .../textures/items/nuggets/lead_nugget.png | Bin 0 -> 232 bytes .../textures/items/nuggets/nickel_nugget.png | Bin 0 -> 238 bytes .../textures/items/nuggets/osmium_nugget.png | Bin 0 -> 219 bytes .../items/nuggets/platinum_nugget.png | Bin 0 -> 241 bytes .../items/{ => nuggets}/quartz_nugget.png | Bin .../items/{ => nuggets}/redstone_nugget.png | Bin .../textures/items/nuggets/silver_nugget.png | Bin 0 -> 248 bytes .../textures/items/nuggets/tin_nugget.png | Bin 0 -> 136 bytes .../textures/items/nuggets/uranium_nugget.png | Bin 0 -> 238 bytes .../items/{ => nuggets}/wooden_nugget.png | Bin .../textures/items/nuggets/zinc_nugget.png | Bin 0 -> 1311 bytes .../nnow/textures/items/{ => old}/barley.png | Bin .../textures/items/{ => old}/barley_seeds.png | Bin .../nnow/textures/items/{ => old}/pepper.png | Bin .../textures/items/{ => old}/pepper_seeds.png | Bin .../items/{ => spades}/diamond_spade.png | Bin .../textures/items/spades/emerald_spade.png | Bin 0 -> 3610 bytes .../textures/items/spades/golden_spade.png | Bin 0 -> 3609 bytes .../items/{ => spades}/iron_spade.png | Bin .../items/{ => spades}/stone_spade.png | Bin .../recipes/crops/aluminum_berry.json | 30 + .../recipes/crops/bismuth_berry.json | 30 + .../botanypots/recipes/crops/clay_berry.json | 30 + .../botanypots/recipes/crops/coal_berry.json | 1 + .../recipes/crops/copper_berry.json | 30 + .../recipes/crops/diamond_berry.json | 1 + .../botanypots/recipes/crops/dirt_berry.json | 30 + .../recipes/crops/emerald_berry.json | 1 + .../botanypots/recipes/crops/fire_berry.json | 30 + .../botanypots/recipes/crops/gold_berry.json | 30 + .../recipes/crops/gravel_berry.json | 30 + .../botanypots/recipes/crops/ice_berry.json | 30 + .../recipes/crops/iridium_berry.json | 30 + .../botanypots/recipes/crops/iron_berry.json | 30 + .../botanypots/recipes/crops/lapis_berry.json | 1 + .../botanypots/recipes/crops/lead_berry.json | 30 + .../recipes/crops/nickel_berry.json | 30 + .../recipes/crops/osmium_berry.json | 30 + .../recipes/crops/platinum_berry.json | 30 + .../recipes/crops/quartz_berry.json | 1 + .../recipes/crops/redstone_berry.json | 1 + .../botanypots/recipes/crops/sand_berry.json | 30 + .../recipes/crops/silver_berry.json | 30 + .../botanypots/recipes/crops/stone_berry.json | 30 + .../botanypots/recipes/crops/tin_berry.json | 30 + .../recipes/crops/uranium_berry.json | 30 + .../recipes/crops/wooden_berry.json | 30 + .../botanypots/recipes/crops/xp_berry.json | 1 + .../botanypots/recipes/crops/zinc_berry.json | 30 + .../loot_modifiers/global_loot_modifiers.json | 18 + .../data/forge/tags/items/ingots.json | 17 + .../forge/tags/items/ingots/aluminum.json | 6 + .../data/forge/tags/items/ingots/bismuth.json | 6 + .../data/forge/tags/items/ingots/copper.json | 6 + .../data/forge/tags/items/ingots/iridium.json | 6 + .../data/forge/tags/items/ingots/lead.json | 6 + .../data/forge/tags/items/ingots/nickel.json | 6 + .../data/forge/tags/items/ingots/osmium.json | 6 + .../forge/tags/items/ingots/platinum.json | 6 + .../data/forge/tags/items/ingots/silver.json | 6 + .../data/forge/tags/items/ingots/tin.json | 6 + .../data/forge/tags/items/ingots/uranium.json | 6 + .../data/forge/tags/items/ingots/zinc.json | 6 + .../data/forge/tags/items/nuggets.json | 14 +- .../forge/tags/items/nuggets/aluminum.json | 6 + .../forge/tags/items/nuggets/bismuth.json | 6 + .../data/forge/tags/items/nuggets/copper.json | 6 + .../forge/tags/items/nuggets/iridium.json | 6 + .../data/forge/tags/items/nuggets/lead.json | 6 + .../data/forge/tags/items/nuggets/nickel.json | 6 + .../data/forge/tags/items/nuggets/osmium.json | 6 + .../forge/tags/items/nuggets/platinum.json | 6 + .../data/forge/tags/items/nuggets/silver.json | 6 + .../data/forge/tags/items/nuggets/tin.json | 6 + .../forge/tags/items/nuggets/uranium.json | 6 + .../data/forge/tags/items/nuggets/zinc.json | 6 + .../data/forge/tags/items/storage_blocks.json | 17 + .../tags/items/storage_blocks/aluminum.json | 6 + .../tags/items/storage_blocks/bismuth.json | 6 + .../tags/items/storage_blocks/copper.json | 6 + .../tags/items/storage_blocks/iridium.json | 6 + .../forge/tags/items/storage_blocks/lead.json | 6 + .../tags/items/storage_blocks/nickel.json | 6 + .../tags/items/storage_blocks/osmium.json | 6 + .../tags/items/storage_blocks/platinum.json | 6 + .../tags/items/storage_blocks/silver.json | 6 + .../forge/tags/items/storage_blocks/tin.json | 6 + .../tags/items/storage_blocks/uranium.json | 6 + .../forge/tags/items/storage_blocks/zinc.json | 6 + .../recipes/cloche/aluminum_berry_bush.json | 20 + .../recipes/cloche/bismuth_berry_bush.json | 20 + .../recipes/cloche/clay_berry_bush.json | 20 + .../recipes/cloche/copper_berry_bush.json | 20 + .../recipes/cloche/dirt_berry_bush.json | 20 + .../recipes/cloche/gravel_berry_bush.json | 20 + .../recipes/cloche/iridium_berry_bush.json | 20 + .../recipes/cloche/lead_berry_bush.json | 20 + .../recipes/cloche/nickel_berry_bush.json | 20 + .../recipes/cloche/osmium_berry_bush.json | 20 + .../recipes/cloche/platinum_berry_bush.json | 20 + .../recipes/cloche/sand_berry_bush.json | 20 + .../recipes/cloche/silver_berry_bush.json | 20 + .../recipes/cloche/stone_berry_bush.json | 20 + .../recipes/cloche/tin_berry_bush.json | 20 + .../recipes/cloche/uranium_berry_bush.json | 20 + .../recipes/cloche/xp_berry_bush.json | 20 + .../recipes/cloche/zinc_berry_bush.json | 20 + .../hammer_clay_ball_from_dirt.json | 17 + .../hammer_dirt_dust_from_red_sand.json | 17 + .../hammer_dirt_dust_from_sand.json | 17 + .../hammer_gravel_dust_from_cobblestone.json | 17 + .../hammer_sand_dust_from_gravel.json | 17 + .../spade_clay_ball_from_dirt.json | 17 + .../spade_dirt_dust_from_red_sand.json | 17 + .../spade_dirt_dust_from_sand.json | 17 + .../spade_sand_dust_from_gravel.json | 17 + .../loot_modifiers/sugar_cane_from_grass.json | 22 + .../sugar_cane_from_tall_grass.json | 22 + .../blocks/aluminum_berry_bush.json | 111 +++ .../loot_tables/blocks/aluminum_block.json | 19 + .../nnow/loot_tables/blocks/banker_poi.json | 19 + .../blocks/bismuth_berry_bush.json | 111 +++ .../loot_tables/blocks/bismuth_block.json | 19 + .../loot_tables/blocks/clay_berry_bush.json | 111 +++ .../loot_tables/blocks/coal_berry_bush.json | 29 + .../loot_tables/blocks/copper_berry_bush.json | 111 +++ .../nnow/loot_tables/blocks/copper_block.json | 19 + .../blocks/diamond_berry_bush.json | 29 + .../loot_tables/blocks/dirt_berry_bush.json | 111 +++ .../blocks/emerald_berry_bush.json | 29 + .../nnow/loot_tables/blocks/end_trader.json | 19 + .../loot_tables/blocks/fire_berry_bush.json | 111 +++ .../loot_tables/blocks/gold_berry_bush.json | 29 + .../loot_tables/blocks/gravel_berry_bush.json | 111 +++ .../loot_tables/blocks/ice_berry_bush.json | 29 + .../loot_tables/blocks/ingot_furnace.json | 19 + .../blocks/iridium_berry_bush.json | 111 +++ .../loot_tables/blocks/iridium_block.json | 19 + .../loot_tables/blocks/iron_berry_bush.json | 29 + .../loot_tables/blocks/lapis_berry_bush.json | 29 + .../loot_tables/blocks/lead_berry_bush.json | 111 +++ .../nnow/loot_tables/blocks/lead_block.json | 19 + .../loot_tables/blocks/nether_trader.json | 19 + .../loot_tables/blocks/nickel_berry_bush.json | 111 +++ .../nnow/loot_tables/blocks/nickel_block.json | 19 + .../loot_tables/blocks/osmium_berry_bush.json | 111 +++ .../nnow/loot_tables/blocks/osmium_block.json | 19 + .../nnow/loot_tables/blocks/path_slab.json | 32 + .../blocks/platinum_berry_bush.json | 111 +++ .../loot_tables/blocks/platinum_block.json | 19 + .../loot_tables/blocks/quartz_berry_bush.json | 29 + .../blocks/redstone_berry_bush.json | 31 +- .../loot_tables/blocks/sand_berry_bush.json | 111 +++ .../loot_tables/blocks/silver_berry_bush.json | 111 +++ .../nnow/loot_tables/blocks/silver_block.json | 19 + .../loot_tables/blocks/stone_berry_bush.json | 111 +++ .../loot_tables/blocks/tin_berry_bush.json | 111 +++ .../nnow/loot_tables/blocks/tin_block.json | 19 + .../blocks/uranium_berry_bush.json | 111 +++ .../loot_tables/blocks/uranium_block.json | 19 + .../loot_tables/blocks/wooden_berry_bush.json | 111 +++ .../loot_tables/blocks/xp_berry_bush.json | 111 +++ .../loot_tables/blocks/zinc_berry_bush.json | 111 +++ .../nnow/loot_tables/blocks/zinc_block.json | 19 + .../recipes/armor/clear_netherite_helmet.json | 12 + .../armor/clear_netherite_helmet_reverse.json | 12 + .../nnow/recipes/berrys/alumium_berry.json | 20 + .../nnow/recipes/berrys/bismuth_berry.json | 20 + .../data/nnow/recipes/berrys/clay_berry.json | 20 + .../data/nnow/recipes/berrys/coal_berry.json | 8 +- .../nnow/recipes/berrys/copper_berry.json | 20 + .../nnow/recipes/berrys/diamond_berry.json | 8 +- .../data/nnow/recipes/berrys/dirt_berry.json | 20 + .../nnow/recipes/berrys/emerald_berry.json | 8 +- .../data/nnow/recipes/berrys/fire_berry.json | 2 +- .../data/nnow/recipes/berrys/gold_berry.json | 8 +- .../nnow/recipes/berrys/gravel_berry.json | 20 + .../data/nnow/recipes/berrys/ice_berry.json | 8 +- .../nnow/recipes/berrys/iridium_berry.json | 20 + .../data/nnow/recipes/berrys/iron_berry.json | 8 +- .../data/nnow/recipes/berrys/lapis_berry.json | 8 +- .../data/nnow/recipes/berrys/lead_berry.json | 20 + .../nnow/recipes/berrys/nickel_berry.json | 20 + .../nnow/recipes/berrys/osmuim_berry.json | 20 + .../nnow/recipes/berrys/platinum_berry.json | 20 + .../nnow/recipes/berrys/quartz_berry.json | 8 +- .../nnow/recipes/berrys/redstone_berry.json | 8 +- .../data/nnow/recipes/berrys/sand_berry.json | 20 + .../nnow/recipes/berrys/silver_berry.json | 20 + .../data/nnow/recipes/berrys/stone_berry.json | 20 + .../data/nnow/recipes/berrys/tin_berry.json | 20 + .../nnow/recipes/berrys/uranium_berry.json | 20 + .../nnow/recipes/berrys/wooden_berry.json | 8 +- .../data/nnow/recipes/berrys/zinc_berry.json | 20 + .../acacia_leaves_slab.json | 0 .../birch_leaves_slab.json | 0 .../bookshelf_slab.json | 0 .../coarsedirt_slab.json | 0 .../cracked_stone_bricks_slab.json | 0 .../dark_oak_leaves_slab.json | 0 .../{slabs => blocks_to_slabs}/dirt_slab.json | 0 .../grass_slab.json | 0 .../gravel_slab.json | 0 .../jungle_leaves_slab.json | 0 .../oak_leaves_slab.json | 0 .../redsand_slab.json | 0 .../{slabs => blocks_to_slabs}/sand_slab.json | 0 .../spruce_leaves_slab.json | 0 .../acacia_leaves_stairs.json | 0 .../birch_leaves_stairs.json | 0 .../bookshelf_stairs.json | 0 .../coarsedirt_stairs.json | 0 .../cracked_stone_bricks_stairs.json | 0 .../dark_oak_leaves_stairs.json | 0 .../dirt_stairs.json | 0 .../gravel_stairs.json | 0 .../jungle_leaves_stairs.json | 0 .../oak_leaves_stairs.json | 0 .../redsand_stairs.json | 0 .../sand_stairs.json | 0 .../spruce_leaves_stairs.json | 0 .../dust/cobblestone_to_stone_dust.json | 12 + .../{dirt.json => dirt_dust_to_dirt.json} | 0 .../nnow/recipes/dust/dirt_to_dirt_dust.json | 12 + ...gravel.json => gravel_dust_to_gravel.json} | 0 .../recipes/dust/gravel_to_gravel_dust.json | 12 + .../recipes/dust/red_sand_to_sand_dust.json | 12 + .../recipes/dust/sand_dust_to_red_sand.json | 16 + .../{sand.json => sand_dust_to_sand.json} | 0 .../nnow/recipes/dust/sand_to_sand_dust.json | 12 + ...ne.json => stone_dust_to_cobblestone.json} | 0 .../nnow/recipes/food/bowl_of_weetabix.json | 23 + .../nnow/recipes/{ => food}/weetabix.json | 0 .../nnow/recipes/items/bun_in_the_oven.json | 29 + .../data/nnow/recipes/{ => items}/magnet.json | 0 .../recipes/{ => items}/poking_stick.json | 0 .../data/nnow/recipes/{ => items}/viagra.json | 6 +- .../aluminum_block_to_aluminum_ingot.json | 12 + .../aluminum_ingot_to_aluminum_block.json | 17 + .../aluminum_ingot_to_aluminum_nugget.json | 12 + .../aluminum_nugget_to_aluminum_ingot.json | 17 + .../bismuth_block_to_bismuth_ingot.json | 12 + .../bismuth_ingot_to_bismuth_block.json | 17 + .../bismuth_ingot_to_bismuth_nugget.json | 12 + .../bismuth_nugget_to_bismuth_ingot.json | 17 + .../coal_nugget_to_coal.json} | 0 .../coal_to_coal_nugget.json} | 0 .../copper_block_to_copper_ingot.json | 12 + .../copper_ingot_to_copper_block.json | 17 + .../copper_ingot_to_copper_nugget.json | 12 + .../copper_nugget_to_copper_ingot.json | 17 + .../diamond_nugget_to_diamond.json} | 0 .../diamond_to_diamond_nugget.json} | 0 .../emerald_nugget_to_emerald.json} | 0 .../emerald_to_emerald_nugget.json} | 0 .../fire_nugget_to_lava_bucket.json} | 0 .../ice_nugget_to_ice.json} | 5 +- .../ice_nugget_to_snow_block.json} | 0 .../ice_nugget_to_water_bucket.json} | 0 .../iridium_block_to_iridium_ingot.json | 12 + .../iridium_ingot_to_iridium_block.json | 17 + .../iridium_ingot_to_iridium_nugget.json | 12 + .../iridium_nugget_to_iridium_ingot.json | 17 + .../lapis_lazuli_to_lapis_nugget.json} | 0 .../lapis_nugget_to_lapis.json} | 0 .../lead_block_to_lead_ingot.json | 12 + .../lead_ingot_to_lead_block.json | 17 + .../lead_ingot_to_lead_nugget.json | 12 + .../lead_nugget_to_lead_ingot.json | 17 + .../nickel_block_to_nickel_ingot.json | 12 + .../nickel_ingot_to_nickel_block.json | 17 + .../nickel_ingot_to_nickel_nugget.json | 12 + .../nickel_nugget_to_nickel_nugget.json | 17 + .../osmium_block_to_osmium_ingot.json | 12 + .../osmium_ingot_to_osmium_block.json | 17 + .../osmium_ingot_to_osmium_nugget.json | 12 + .../osmium_nugget_to_osmium_ingot.json | 17 + .../platinum_block_to_platinum_ingot.json | 12 + .../platinum_ingot_to_platinum_block.json | 17 + .../platinum_ingot_to_platinum_nugget.json | 12 + .../platinum_nugget_to_platinum_ingot.json | 17 + .../quartz_nugget_to_quartz.json} | 0 .../quartz_to_quartz_nugget.json} | 0 .../redstone_nugget_to_redstone.json} | 0 .../redstone_to_redstone_nugget.json} | 0 .../silver_block_to_silver_ingot.json | 12 + .../silver_ingot_to_silver_block.json | 17 + .../silver_ingot_to_sliver_nugget.json | 12 + .../silver_nugget_to_silver_ingot.json | 17 + .../metal_blocks/tin_block_to_tin_ingot.json | 12 + .../metal_blocks/tin_ingot_to_tin_block.json | 17 + .../metal_blocks/tin_ingot_to_tin_nugget.json | 12 + .../metal_blocks/tin_nugget_to_tin_ingot.json | 17 + .../uranium_block_to_uranium_ingot.json | 12 + .../uranium_ingot_to_uranium_block.json | 17 + .../uranium_ingot_to_uranium_nugget.json | 12 + .../uranium_nugget_to_uranium_ingot.json | 17 + .../zinc_block_to_zinc_ingot.json | 12 + .../zinc_ingot_to_zinc_block.json | 17 + .../zinc_ingot_to_zinc_nugget.json | 12 + .../zinc_nugget_to_zinc_ingot.json | 17 + .../{blocks => nnow_blocks}/agg_block.json | 0 .../{blocks => nnow_blocks}/agrs_block.json | 0 .../{blocks => nnow_blocks}/ags_block.json | 0 .../bookshelf_chest.json | 0 .../{blocks => nnow_blocks}/cobblegen.json | 0 .../{blocks => nnow_blocks}/cobblegen_2.json | 0 .../{blocks => nnow_blocks}/dark_glass.json | 0 .../{blocks => nnow_blocks}/end_lantern.json | 0 .../recipes/nnow_blocks/ingot_furnace.json | 23 + .../{blocks => nnow_blocks}/lavawell.json | 0 .../{blocks => nnow_blocks}/rsg_head.json | 0 .../{blocks => nnow_blocks}/safe_chest.json | 0 .../super_obsidian.json | 0 .../super_obsidian_bars.json | 0 ...uper_obsidian_bars_to_super_obsidian.json} | 0 ...uper_obsidian_to_super_obsidian_bars.json} | 0 .../{blocks => nnow_blocks}/waterwell.json | 0 .../data/nnow/recipes/poi/banker_poi.json | 23 + .../{blocks => poi}/beekeeper_block.json | 0 .../data/nnow/recipes/poi/end_trader.json | 23 + .../data/nnow/recipes/poi/nether_trader.json | 23 + .../{blocks => poi}/sea_fisherman.json | 0 .../recipes/{blocks => poi}/sea_trader.json | 0 .../{blocks => poi}/sword_in_stone.json | 0 .../recipes/{traps => poi}/trap_block.json | 0 .../slabs_to_blocks/acacia_leaves.json | 16 + .../slabs_to_blocks/acacia_planks.json | 16 + .../recipes/slabs_to_blocks/andesite.json | 16 + .../recipes/slabs_to_blocks/birch_leaves.json | 16 + .../recipes/slabs_to_blocks/birch_planks.json | 16 + .../recipes/slabs_to_blocks/bookshelf.json | 16 + .../nnow/recipes/slabs_to_blocks/bricks.json | 16 + .../recipes/slabs_to_blocks/coarse_dirt.json | 16 + .../recipes/slabs_to_blocks/cobblestone.json | 16 + .../slabs_to_blocks/cracked_stone_bricks.json | 16 + .../slabs_to_blocks/cut_red_sandstone.json | 16 + .../slabs_to_blocks/cut_sandstone.json | 16 + .../slabs_to_blocks/dark_oak_leaves.json | 16 + .../slabs_to_blocks/dark_oak_planks.json | 16 + .../slabs_to_blocks/dark_prismarine.json | 16 + .../nnow/recipes/slabs_to_blocks/diorite.json | 16 + .../nnow/recipes/slabs_to_blocks/dirt.json | 16 + .../slabs_to_blocks/end_stone_bricks.json | 16 + .../nnow/recipes/slabs_to_blocks/granite.json | 16 + .../recipes/slabs_to_blocks/grass_block.json | 16 + .../nnow/recipes/slabs_to_blocks/gravel.json | 16 + .../slabs_to_blocks/jungle_leaves.json | 16 + .../slabs_to_blocks/jungle_planks.json | 16 + .../slabs_to_blocks/mossy_cobblestone.json | 16 + .../slabs_to_blocks/mossy_stone_bricks.json | 16 + .../slabs_to_blocks/nether_bricks.json | 16 + .../recipes/slabs_to_blocks/oak_leaves.json | 16 + .../recipes/slabs_to_blocks/oak_planks.json | 16 + .../slabs_to_blocks/polished_andesite.json | 16 + .../slabs_to_blocks/polished_diorite.json | 16 + .../slabs_to_blocks/polished_granite.json | 16 + .../recipes/slabs_to_blocks/prismarine.json | 16 + .../slabs_to_blocks/prismarine_bricks.json | 16 + .../recipes/slabs_to_blocks/purpur_block.json | 16 + .../recipes/slabs_to_blocks/quartz_block.json | 16 + .../slabs_to_blocks/red_nether_bricks.json | 16 + .../recipes/slabs_to_blocks/red_sand.json | 16 + .../slabs_to_blocks/red_sandstone.json | 16 + .../nnow/recipes/slabs_to_blocks/sand.json | 16 + .../recipes/slabs_to_blocks/sandstone.json | 16 + .../slabs_to_blocks/smooth_quartz.json | 16 + .../slabs_to_blocks/smooth_red_sandstone.json | 16 + .../slabs_to_blocks/smooth_sandstone.json | 16 + .../recipes/slabs_to_blocks/smooth_stone.json | 16 + .../slabs_to_blocks/spruce_leaves.json | 16 + .../slabs_to_blocks/spruce_planks.json | 16 + .../nnow/recipes/slabs_to_blocks/stone.json | 16 + .../recipes/slabs_to_blocks/stone_bricks.json | 16 + .../data/nnow/recipes/smelting/brick.json | 9 - ...bun_in_the_oven_to_villager_spawn_egg.json | 9 + .../nnow/recipes/tools/emerald_hammer.json | 20 + .../nnow/recipes/tools/emerald_spade.json | 20 + .../data/nnow/recipes/tools/ender_bag.json | 26 + .../acacia_log.json | 0 .../birch_log.json | 0 .../dark_oak_log.json | 0 .../jungle_log.json | 0 .../oak_log.json | 0 .../spruce_log.json | 0 .../wooden_nugget_to_acacia_sapling.json | 20 + .../wooden_nugget_to_birch_sapling.json | 20 + .../wooden_nugget_to_dark_oak_sapling.json | 20 + .../wooden_nugget_to_jungle_sapling.json | 20 + .../wooden_nugget_to_oak_sapling.json | 20 + .../wooden_nugget_to_spruce_sapling.json | 20 + .../data/nnow/tags/items/hammers.json | 9 + .../data/nnow/tags/items/spades.json | 9 + src/main/resources/pack.mcmeta | 4 +- 918 files changed, 12450 insertions(+), 4403 deletions(-) delete mode 100644 _config.yml delete mode 100644 src/main/java/com/github/wimpingego/nnow/client/gui/BookshelfChestScreen.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/client/gui/SafeChestScreen.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/container/BookshelfChestContainer.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/container/ModContainerTypes.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/container/SafeChestContainer.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/entities/ModTileEntityTypes.java create mode 100644 src/main/java/com/github/wimpingego/nnow/init/MetalBlockList.java create mode 100644 src/main/java/com/github/wimpingego/nnow/init/MetalItemList.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/objects/blocks/BookshelfChestBlock.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/objects/blocks/EndLantern.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/objects/blocks/SafeChestBlock.java rename src/main/java/com/github/wimpingego/nnow/objects/blocks/{ => poi}/BeekeeperBlock.java (98%) create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/DirectionalBaseBlock.java rename src/main/java/com/github/wimpingego/nnow/objects/blocks/{ => poi}/DoubleHighBlock.java (98%) create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/EndTraderBlock.java rename src/main/java/com/github/wimpingego/nnow/objects/blocks/{traps/TrapBlockWither.java => poi/MonsterTrapperBlock.java} (55%) create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/NetherTraderBlock.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/PathSlab.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/DiamondTrapBlock.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/GoldTrapBlock.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/IronTrapBlock.java rename src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/{TrapBlock.java => TrapBaseBlock.java} (89%) create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/WitherTrapBlock.java rename src/main/java/com/github/wimpingego/nnow/objects/bushs/{IronBerryBush.java => BaseBerryBush.java} (92%) delete mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/CoalBerryBush.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/DiamondBerryBush.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/EmeraldBerryBush.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/GoldBerryBush.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/LapisBerryBush.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/QuartzBerryBush.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/RedstoneBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/ClayBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/DirtBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/GravelBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/SandBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/StoneBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/AluminumBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/BismuthBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/CopperBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/IridiumBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/LeadBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/NickelBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/OsmiumBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/PlatinumBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/SilverBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/TinBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/UraniumBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/ZincBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/CoalBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/DiamondBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/EmeraldBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/GoldBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/IronBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/LapisBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/QuartzBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/RedstoneBerryBush.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/items/EnderBag.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/items/hammers/EmeraldHammer.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/objects/items/shovel/DiamondSpade.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/objects/items/shovel/GoldenSpade.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/objects/items/shovel/IronSpade.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/objects/items/shovel/SpadeBase.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/objects/items/shovel/StoneSpade.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/items/spades/DiamondSpade.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/items/spades/EmeraldSpade.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/items/spades/GoldenSpade.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/items/spades/IronSpade.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/items/spades/SpadeBase.java create mode 100644 src/main/java/com/github/wimpingego/nnow/objects/items/spades/StoneSpade.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/tileentity/BookshelfChestTileEntity.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/tileentity/SafeChestTileEntity.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/util/ClientEventBusSubscriber.java delete mode 100644 src/main/java/com/github/wimpingego/nnow/util/ForgeEventBusSubscriber.java create mode 100644 src/main/java/com/github/wimpingego/nnow/util/MetalClientRenderer.java create mode 100644 src/main/java/com/github/wimpingego/nnow/util/SlabAction.java create mode 100644 src/main/java/com/github/wimpingego/nnow/util/loot/LootDropMods.java create mode 100644 src/main/java/com/github/wimpingego/nnow/villagers/MetalTradesRegistration.java create mode 100644 src/main/resources/assets/minecraft/textures/entity/piglin/piglin.png create mode 100644 src/main/resources/assets/minecraft/textures/entity/piglin/zombified_piglin.png create mode 100644 src/main/resources/assets/nnow/blockstates/aluminum_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/aluminum_block.json create mode 100644 src/main/resources/assets/nnow/blockstates/banker_poi.json create mode 100644 src/main/resources/assets/nnow/blockstates/bismuth_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/bismuth_block.json create mode 100644 src/main/resources/assets/nnow/blockstates/clay_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/copper_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/copper_block.json create mode 100644 src/main/resources/assets/nnow/blockstates/dirt_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/end_trader.json create mode 100644 src/main/resources/assets/nnow/blockstates/gravel_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/ingot_furnace.json create mode 100644 src/main/resources/assets/nnow/blockstates/iridium_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/iridium_block.json create mode 100644 src/main/resources/assets/nnow/blockstates/lead_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/lead_block.json create mode 100644 src/main/resources/assets/nnow/blockstates/nether_trader.json create mode 100644 src/main/resources/assets/nnow/blockstates/nickel_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/nickel_block.json create mode 100644 src/main/resources/assets/nnow/blockstates/osmium_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/osmium_block.json delete mode 100644 src/main/resources/assets/nnow/blockstates/path_stairs.json create mode 100644 src/main/resources/assets/nnow/blockstates/platinum_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/platinum_block.json create mode 100644 src/main/resources/assets/nnow/blockstates/sand_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/silver_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/silver_block.json create mode 100644 src/main/resources/assets/nnow/blockstates/stone_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/test_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/tin_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/tin_block.json create mode 100644 src/main/resources/assets/nnow/blockstates/uranium_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/uranium_block.json create mode 100644 src/main/resources/assets/nnow/blockstates/zinc_berry_bush.json create mode 100644 src/main/resources/assets/nnow/blockstates/zinc_block.json create mode 100644 src/main/resources/assets/nnow/models/block/aluminum_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/aluminum_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/aluminum_block.json create mode 100644 src/main/resources/assets/nnow/models/block/banker_poi.json create mode 100644 src/main/resources/assets/nnow/models/block/bismuth_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/bismuth_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/bismuth_block.json create mode 100644 src/main/resources/assets/nnow/models/block/clay_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/clay_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/copper_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/copper_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/copper_block.json create mode 100644 src/main/resources/assets/nnow/models/block/dirt_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/dirt_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/end_trader.json create mode 100644 src/main/resources/assets/nnow/models/block/gravel_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/gravel_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/ingot_furnace.json create mode 100644 src/main/resources/assets/nnow/models/block/iridium_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/iridium_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/iridium_block.json create mode 100644 src/main/resources/assets/nnow/models/block/lead_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/lead_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/lead_block.json create mode 100644 src/main/resources/assets/nnow/models/block/nether_trader.json create mode 100644 src/main/resources/assets/nnow/models/block/nether_trader_bottom.json create mode 100644 src/main/resources/assets/nnow/models/block/nether_trader_top.json create mode 100644 src/main/resources/assets/nnow/models/block/nickel_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/nickel_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/nickel_block.json rename src/main/resources/assets/nnow/models/block/{ => old}/barley_crop0.json (100%) rename src/main/resources/assets/nnow/models/block/{ => old}/barley_crop1.json (100%) rename src/main/resources/assets/nnow/models/block/{ => old}/barley_crop2.json (100%) rename src/main/resources/assets/nnow/models/block/{ => old}/barley_crop3.json (100%) rename src/main/resources/assets/nnow/models/block/{ => old}/barley_crop4.json (100%) rename src/main/resources/assets/nnow/models/block/{ => old}/barley_crop5.json (100%) rename src/main/resources/assets/nnow/models/block/{ => old}/barley_crop6.json (100%) rename src/main/resources/assets/nnow/models/block/{ => old}/barley_crop7.json (100%) rename src/main/resources/assets/nnow/models/block/{ => old}/pepper_stage0.json (100%) rename src/main/resources/assets/nnow/models/block/{ => old}/pepper_stage1.json (100%) rename src/main/resources/assets/nnow/models/block/{ => old}/pepper_stage2.json (100%) rename src/main/resources/assets/nnow/models/block/{ => old}/pepper_stage3.json (100%) rename src/main/resources/assets/nnow/models/block/{ => old}/test_block.json (100%) create mode 100644 src/main/resources/assets/nnow/models/block/osmium_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/osmium_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/osmium_block.json create mode 100644 src/main/resources/assets/nnow/models/block/path_slab.json create mode 100644 src/main/resources/assets/nnow/models/block/path_slab_top.json create mode 100644 src/main/resources/assets/nnow/models/block/platinum_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/platinum_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/platinum_block.json create mode 100644 src/main/resources/assets/nnow/models/block/sand_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/sand_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/silver_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/silver_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/silver_block.json create mode 100644 src/main/resources/assets/nnow/models/block/stone_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/stone_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/tin_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/tin_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/tin_block.json create mode 100644 src/main/resources/assets/nnow/models/block/uranium_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/uranium_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/uranium_block.json create mode 100644 src/main/resources/assets/nnow/models/block/zinc_berry_bush_stage2.json create mode 100644 src/main/resources/assets/nnow/models/block/zinc_berry_bush_stage3.json create mode 100644 src/main/resources/assets/nnow/models/block/zinc_block.json create mode 100644 src/main/resources/assets/nnow/models/item/aluminum_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/aluminum_block.json create mode 100644 src/main/resources/assets/nnow/models/item/aluminum_ingot.json create mode 100644 src/main/resources/assets/nnow/models/item/aluminum_nugget.json create mode 100644 src/main/resources/assets/nnow/models/item/banker_poi.json create mode 100644 src/main/resources/assets/nnow/models/item/bismuth_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/bismuth_block.json create mode 100644 src/main/resources/assets/nnow/models/item/bismuth_ingot.json create mode 100644 src/main/resources/assets/nnow/models/item/bismuth_nugget.json create mode 100644 src/main/resources/assets/nnow/models/item/bowl_of_weetabix.json create mode 100644 src/main/resources/assets/nnow/models/item/bun_in_the_oven.json create mode 100644 src/main/resources/assets/nnow/models/item/clay_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/copper_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/copper_block.json create mode 100644 src/main/resources/assets/nnow/models/item/copper_ingot.json create mode 100644 src/main/resources/assets/nnow/models/item/copper_nugget.json create mode 100644 src/main/resources/assets/nnow/models/item/dirt_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/emerald_hammer.json create mode 100644 src/main/resources/assets/nnow/models/item/emerald_spade.json create mode 100644 src/main/resources/assets/nnow/models/item/end_trader.json create mode 100644 src/main/resources/assets/nnow/models/item/ender_bag.json create mode 100644 src/main/resources/assets/nnow/models/item/gravel_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/ingot_furnace.json create mode 100644 src/main/resources/assets/nnow/models/item/iridium_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/iridium_block.json create mode 100644 src/main/resources/assets/nnow/models/item/iridium_ingot.json create mode 100644 src/main/resources/assets/nnow/models/item/iridium_nugget.json create mode 100644 src/main/resources/assets/nnow/models/item/lead_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/lead_block.json create mode 100644 src/main/resources/assets/nnow/models/item/lead_ingot.json create mode 100644 src/main/resources/assets/nnow/models/item/lead_nugget.json create mode 100644 src/main/resources/assets/nnow/models/item/nether_trader.json create mode 100644 src/main/resources/assets/nnow/models/item/nickel_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/nickel_block.json create mode 100644 src/main/resources/assets/nnow/models/item/nickel_ingot.json create mode 100644 src/main/resources/assets/nnow/models/item/nickel_nugget.json create mode 100644 src/main/resources/assets/nnow/models/item/osmium_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/osmium_block.json create mode 100644 src/main/resources/assets/nnow/models/item/osmium_ingot.json create mode 100644 src/main/resources/assets/nnow/models/item/osmium_nugget.json delete mode 100644 src/main/resources/assets/nnow/models/item/path_stairs.json create mode 100644 src/main/resources/assets/nnow/models/item/platinum_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/platinum_block.json create mode 100644 src/main/resources/assets/nnow/models/item/platinum_ingot.json create mode 100644 src/main/resources/assets/nnow/models/item/platinum_nugget.json create mode 100644 src/main/resources/assets/nnow/models/item/sand_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/silver_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/silver_block.json create mode 100644 src/main/resources/assets/nnow/models/item/silver_ingot.json create mode 100644 src/main/resources/assets/nnow/models/item/silver_nugget.json create mode 100644 src/main/resources/assets/nnow/models/item/stone_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/test_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/tin_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/tin_block.json create mode 100644 src/main/resources/assets/nnow/models/item/tin_ingot.json create mode 100644 src/main/resources/assets/nnow/models/item/tin_nugget.json create mode 100644 src/main/resources/assets/nnow/models/item/uranium_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/uranium_block.json create mode 100644 src/main/resources/assets/nnow/models/item/uranium_ingot.json create mode 100644 src/main/resources/assets/nnow/models/item/uranium_nugget.json create mode 100644 src/main/resources/assets/nnow/models/item/zinc_berry.json create mode 100644 src/main/resources/assets/nnow/models/item/zinc_block.json create mode 100644 src/main/resources/assets/nnow/models/item/zinc_ingot.json create mode 100644 src/main/resources/assets/nnow/models/item/zinc_nugget.json create mode 100644 src/main/resources/assets/nnow/textures/blocks/book.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/aluminum_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/aluminum_berry_bush_stage3.png rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/berry_bush_stage0.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/berry_bush_stage1.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/bismuth_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/bismuth_berry_bush_stage3.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/clay_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/clay_berry_bush_stage3.png rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/coal_berry_bush_stage2.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/coal_berry_bush_stage3.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/copper_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/copper_berry_bush_stage3.png rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/diamond_berry_bush_stage2.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/diamond_berry_bush_stage3.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/dirt_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/dirt_berry_bush_stage3.png rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/emerald_berry_bush_stage2.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/emerald_berry_bush_stage3.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/fire_berry_bush_stage2.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/fire_berry_bush_stage2.png.mcmeta (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/fire_berry_bush_stage3.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/fire_berry_bush_stage3.png.mcmeta (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/gold_berry_bush_stage2.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/gold_berry_bush_stage3.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/gravel_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/gravel_berry_bush_stage3.png rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/ice_berry_bush_stage2.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/ice_berry_bush_stage3.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/iridium_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/iridium_berry_bush_stage3.png rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/iron_berry_bush_stage2.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/iron_berry_bush_stage3.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/lapis_berry_bush_stage2.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/lapis_berry_bush_stage3.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/lead_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/lead_berry_bush_stage3.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/nickel_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/nickel_berry_bush_stage3.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/osmium_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/osmium_berry_bush_stage3.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/platinum_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/platinum_berry_bush_stage3.png rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/quartz_berry_bush_stage2.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/quartz_berry_bush_stage3.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/redstone_berry_bush_stage2.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/redstone_berry_bush_stage3.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/sand_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/sand_berry_bush_stage3.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/silver_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/silver_berry_bush_stage3.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/stone_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/stone_berry_bush_stage3.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/tin_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/tin_berry_bush_stage3.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/uranium_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/uranium_berry_bush_stage3.png rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/wooden_berry_bush_stage2.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/wooden_berry_bush_stage3.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/xp_berry_bush_stage2.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => bushes}/xp_berry_bush_stage3.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/zinc_berry_bush_stage2.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/bushes/zinc_berry_bush_stage3.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/enchanted_book.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/end_trader_bottom.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/end_trader_side1.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/end_trader_top.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/end_trader_top.png.mcmeta create mode 100644 src/main/resources/assets/nnow/textures/blocks/ingot_furnace/ingot_furnace_bottom.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/ingot_furnace/ingot_furnace_front.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/ingot_furnace/ingot_furnace_side.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/ingot_furnace/ingot_furnace_top.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/metals/aluminum_block.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/metals/bismuth_block.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/metals/copper_block.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/metals/iridium_block.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/metals/lead_block.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/metals/nickel_block.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/metals/osmium_block.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/metals/platinum_block.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/metals/silver_block.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/metals/tin_block.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/metals/uranium_block.png create mode 100644 src/main/resources/assets/nnow/textures/blocks/metals/zinc_block.png rename src/main/resources/assets/nnow/textures/blocks/{ => old}/barley_crop0.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => old}/barley_crop1.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => old}/barley_crop2.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => old}/barley_crop3.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => old}/barley_crop4.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => old}/barley_crop5.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => old}/barley_crop6.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => old}/barley_crop7.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => old}/pepper_stage0.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => old}/pepper_stage1.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => old}/pepper_stage2.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => old}/pepper_stage3.png (100%) rename src/main/resources/assets/nnow/textures/blocks/{ => old}/spawner_bars.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/entity/villager/profession/ingot_trader.png create mode 100644 src/main/resources/assets/nnow/textures/entity/villager/profession/nether_trader.png create mode 100644 src/main/resources/assets/nnow/textures/entity/zombie_villager/profession/ingot_trader.png create mode 100644 src/main/resources/assets/nnow/textures/entity/zombie_villager/profession/nether_trader.png create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/aluminum_berry.png create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/bismuth_berry.png create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/clay_berry.png rename src/main/resources/assets/nnow/textures/items/{ => berrys}/coal_berry.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/copper_berry.png rename src/main/resources/assets/nnow/textures/items/{ => berrys}/diamond_berry.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/dirt_berry.png rename src/main/resources/assets/nnow/textures/items/{ => berrys}/emerald_berry.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => berrys}/fire_berry.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => berrys}/gold_berry.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/gravel_berry.png rename src/main/resources/assets/nnow/textures/items/{ => berrys}/ice_berry.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/iridium_berry.png rename src/main/resources/assets/nnow/textures/items/{ => berrys}/iron_berry.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => berrys}/lapis_berry.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/lead_berry.png create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/nickel_berry.png create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/osmium_berry.png create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/platinum_berry.png rename src/main/resources/assets/nnow/textures/items/{ => berrys}/quartz_berry.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => berrys}/redstone_berry.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/sand_berry.png create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/silver_berry.png create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/stone_berry.png create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/tin_berry.png create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/uranium_berry.png rename src/main/resources/assets/nnow/textures/items/{ => berrys}/wooden_berry.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => berrys}/xp_berry.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/items/berrys/zinc_berry.png create mode 100644 src/main/resources/assets/nnow/textures/items/bun_in_the_oven.png delete mode 100644 src/main/resources/assets/nnow/textures/items/diamond_hammer.png rename src/main/resources/assets/nnow/textures/items/{ => dusts}/clay_dust.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => dusts}/dirt_dust.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => dusts}/gravel_dust.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => dusts}/sand_dust.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => dusts}/stone_dust.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/items/ender_bag.png create mode 100644 src/main/resources/assets/nnow/textures/items/ender_bag.png.mcmeta create mode 100644 src/main/resources/assets/nnow/textures/items/food/bowl_of_weetabix.png rename src/main/resources/assets/nnow/textures/items/{ => food}/weetabix.png (100%) delete mode 100644 src/main/resources/assets/nnow/textures/items/golden_spade.png create mode 100644 src/main/resources/assets/nnow/textures/items/hammers/diamond_hammer.png create mode 100644 src/main/resources/assets/nnow/textures/items/hammers/emerald_hammer.png rename src/main/resources/assets/nnow/textures/items/{ => hammers}/golden_hammer.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => hammers}/iron_hammer.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => hammers}/stone_hammer.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/items/ingots/aluminum_ingot.png create mode 100644 src/main/resources/assets/nnow/textures/items/ingots/bismuth_ingot.png create mode 100644 src/main/resources/assets/nnow/textures/items/ingots/copper_ingot.png create mode 100644 src/main/resources/assets/nnow/textures/items/ingots/iridium_ingot.png create mode 100644 src/main/resources/assets/nnow/textures/items/ingots/lead_ingot.png create mode 100644 src/main/resources/assets/nnow/textures/items/ingots/nickel_ingot.png create mode 100644 src/main/resources/assets/nnow/textures/items/ingots/osmium_ingot.png create mode 100644 src/main/resources/assets/nnow/textures/items/ingots/platinum_ingot.png create mode 100644 src/main/resources/assets/nnow/textures/items/ingots/silver_ingot.png create mode 100644 src/main/resources/assets/nnow/textures/items/ingots/tin_ingot.png create mode 100644 src/main/resources/assets/nnow/textures/items/ingots/uranium_ingot.png create mode 100644 src/main/resources/assets/nnow/textures/items/ingots/zinc_ingot.png create mode 100644 src/main/resources/assets/nnow/textures/items/nuggets/aluminum_nugget.png create mode 100644 src/main/resources/assets/nnow/textures/items/nuggets/bismuth_nugget.png rename src/main/resources/assets/nnow/textures/items/{ => nuggets}/coal_nugget.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/items/nuggets/copper_nugget.png rename src/main/resources/assets/nnow/textures/items/{ => nuggets}/diamond_nugget.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => nuggets}/emerald_nugget.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => nuggets}/fire_nugget.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => nuggets}/ice_nugget.png (73%) create mode 100644 src/main/resources/assets/nnow/textures/items/nuggets/iridium_nugget.png rename src/main/resources/assets/nnow/textures/items/{ => nuggets}/lapis_nugget.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/items/nuggets/lead_nugget.png create mode 100644 src/main/resources/assets/nnow/textures/items/nuggets/nickel_nugget.png create mode 100644 src/main/resources/assets/nnow/textures/items/nuggets/osmium_nugget.png create mode 100644 src/main/resources/assets/nnow/textures/items/nuggets/platinum_nugget.png rename src/main/resources/assets/nnow/textures/items/{ => nuggets}/quartz_nugget.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => nuggets}/redstone_nugget.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/items/nuggets/silver_nugget.png create mode 100644 src/main/resources/assets/nnow/textures/items/nuggets/tin_nugget.png create mode 100644 src/main/resources/assets/nnow/textures/items/nuggets/uranium_nugget.png rename src/main/resources/assets/nnow/textures/items/{ => nuggets}/wooden_nugget.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/items/nuggets/zinc_nugget.png rename src/main/resources/assets/nnow/textures/items/{ => old}/barley.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => old}/barley_seeds.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => old}/pepper.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => old}/pepper_seeds.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => spades}/diamond_spade.png (100%) create mode 100644 src/main/resources/assets/nnow/textures/items/spades/emerald_spade.png create mode 100644 src/main/resources/assets/nnow/textures/items/spades/golden_spade.png rename src/main/resources/assets/nnow/textures/items/{ => spades}/iron_spade.png (100%) rename src/main/resources/assets/nnow/textures/items/{ => spades}/stone_spade.png (100%) create mode 100644 src/main/resources/data/botanypots/recipes/crops/aluminum_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/bismuth_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/clay_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/coal_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/copper_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/diamond_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/dirt_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/emerald_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/fire_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/gold_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/gravel_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/ice_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/iridium_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/iron_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/lapis_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/lead_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/nickel_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/osmium_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/platinum_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/quartz_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/redstone_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/sand_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/silver_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/stone_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/tin_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/uranium_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/wooden_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/xp_berry.json create mode 100644 src/main/resources/data/botanypots/recipes/crops/zinc_berry.json create mode 100644 src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json create mode 100644 src/main/resources/data/forge/tags/items/ingots.json create mode 100644 src/main/resources/data/forge/tags/items/ingots/aluminum.json create mode 100644 src/main/resources/data/forge/tags/items/ingots/bismuth.json create mode 100644 src/main/resources/data/forge/tags/items/ingots/copper.json create mode 100644 src/main/resources/data/forge/tags/items/ingots/iridium.json create mode 100644 src/main/resources/data/forge/tags/items/ingots/lead.json create mode 100644 src/main/resources/data/forge/tags/items/ingots/nickel.json create mode 100644 src/main/resources/data/forge/tags/items/ingots/osmium.json create mode 100644 src/main/resources/data/forge/tags/items/ingots/platinum.json create mode 100644 src/main/resources/data/forge/tags/items/ingots/silver.json create mode 100644 src/main/resources/data/forge/tags/items/ingots/tin.json create mode 100644 src/main/resources/data/forge/tags/items/ingots/uranium.json create mode 100644 src/main/resources/data/forge/tags/items/ingots/zinc.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets/aluminum.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets/bismuth.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets/copper.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets/iridium.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets/lead.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets/nickel.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets/osmium.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets/platinum.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets/silver.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets/tin.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets/uranium.json create mode 100644 src/main/resources/data/forge/tags/items/nuggets/zinc.json create mode 100644 src/main/resources/data/forge/tags/items/storage_blocks.json create mode 100644 src/main/resources/data/forge/tags/items/storage_blocks/aluminum.json create mode 100644 src/main/resources/data/forge/tags/items/storage_blocks/bismuth.json create mode 100644 src/main/resources/data/forge/tags/items/storage_blocks/copper.json create mode 100644 src/main/resources/data/forge/tags/items/storage_blocks/iridium.json create mode 100644 src/main/resources/data/forge/tags/items/storage_blocks/lead.json create mode 100644 src/main/resources/data/forge/tags/items/storage_blocks/nickel.json create mode 100644 src/main/resources/data/forge/tags/items/storage_blocks/osmium.json create mode 100644 src/main/resources/data/forge/tags/items/storage_blocks/platinum.json create mode 100644 src/main/resources/data/forge/tags/items/storage_blocks/silver.json create mode 100644 src/main/resources/data/forge/tags/items/storage_blocks/tin.json create mode 100644 src/main/resources/data/forge/tags/items/storage_blocks/uranium.json create mode 100644 src/main/resources/data/forge/tags/items/storage_blocks/zinc.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/aluminum_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/bismuth_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/clay_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/copper_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/dirt_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/gravel_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/iridium_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/lead_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/nickel_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/osmium_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/platinum_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/sand_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/silver_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/stone_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/tin_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/uranium_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/xp_berry_bush.json create mode 100644 src/main/resources/data/immersiveengineering/recipes/cloche/zinc_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_modifiers/hammer_clay_ball_from_dirt.json create mode 100644 src/main/resources/data/nnow/loot_modifiers/hammer_dirt_dust_from_red_sand.json create mode 100644 src/main/resources/data/nnow/loot_modifiers/hammer_dirt_dust_from_sand.json create mode 100644 src/main/resources/data/nnow/loot_modifiers/hammer_gravel_dust_from_cobblestone.json create mode 100644 src/main/resources/data/nnow/loot_modifiers/hammer_sand_dust_from_gravel.json create mode 100644 src/main/resources/data/nnow/loot_modifiers/spade_clay_ball_from_dirt.json create mode 100644 src/main/resources/data/nnow/loot_modifiers/spade_dirt_dust_from_red_sand.json create mode 100644 src/main/resources/data/nnow/loot_modifiers/spade_dirt_dust_from_sand.json create mode 100644 src/main/resources/data/nnow/loot_modifiers/spade_sand_dust_from_gravel.json create mode 100644 src/main/resources/data/nnow/loot_modifiers/sugar_cane_from_grass.json create mode 100644 src/main/resources/data/nnow/loot_modifiers/sugar_cane_from_tall_grass.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/aluminum_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/aluminum_block.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/banker_poi.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/bismuth_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/bismuth_block.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/clay_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/copper_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/copper_block.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/dirt_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/end_trader.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/fire_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/gravel_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/ingot_furnace.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/iridium_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/iridium_block.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/lead_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/lead_block.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/nether_trader.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/nickel_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/nickel_block.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/osmium_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/osmium_block.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/path_slab.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/platinum_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/platinum_block.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/sand_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/silver_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/silver_block.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/stone_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/tin_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/tin_block.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/uranium_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/uranium_block.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/wooden_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/xp_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/zinc_berry_bush.json create mode 100644 src/main/resources/data/nnow/loot_tables/blocks/zinc_block.json create mode 100644 src/main/resources/data/nnow/recipes/armor/clear_netherite_helmet.json create mode 100644 src/main/resources/data/nnow/recipes/armor/clear_netherite_helmet_reverse.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/alumium_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/bismuth_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/clay_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/copper_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/dirt_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/gravel_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/iridium_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/lead_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/nickel_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/osmuim_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/platinum_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/sand_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/silver_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/stone_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/tin_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/uranium_berry.json create mode 100644 src/main/resources/data/nnow/recipes/berrys/zinc_berry.json rename src/main/resources/data/nnow/recipes/{slabs => blocks_to_slabs}/acacia_leaves_slab.json (100%) rename src/main/resources/data/nnow/recipes/{slabs => blocks_to_slabs}/birch_leaves_slab.json (100%) rename src/main/resources/data/nnow/recipes/{slabs => blocks_to_slabs}/bookshelf_slab.json (100%) rename src/main/resources/data/nnow/recipes/{slabs => blocks_to_slabs}/coarsedirt_slab.json (100%) rename src/main/resources/data/nnow/recipes/{slabs => blocks_to_slabs}/cracked_stone_bricks_slab.json (100%) rename src/main/resources/data/nnow/recipes/{slabs => blocks_to_slabs}/dark_oak_leaves_slab.json (100%) rename src/main/resources/data/nnow/recipes/{slabs => blocks_to_slabs}/dirt_slab.json (100%) rename src/main/resources/data/nnow/recipes/{slabs => blocks_to_slabs}/grass_slab.json (100%) rename src/main/resources/data/nnow/recipes/{slabs => blocks_to_slabs}/gravel_slab.json (100%) rename src/main/resources/data/nnow/recipes/{slabs => blocks_to_slabs}/jungle_leaves_slab.json (100%) rename src/main/resources/data/nnow/recipes/{slabs => blocks_to_slabs}/oak_leaves_slab.json (100%) rename src/main/resources/data/nnow/recipes/{slabs => blocks_to_slabs}/redsand_slab.json (100%) rename src/main/resources/data/nnow/recipes/{slabs => blocks_to_slabs}/sand_slab.json (100%) rename src/main/resources/data/nnow/recipes/{slabs => blocks_to_slabs}/spruce_leaves_slab.json (100%) rename src/main/resources/data/nnow/recipes/{stairs => blocks_to_stairs}/acacia_leaves_stairs.json (100%) rename src/main/resources/data/nnow/recipes/{stairs => blocks_to_stairs}/birch_leaves_stairs.json (100%) rename src/main/resources/data/nnow/recipes/{stairs => blocks_to_stairs}/bookshelf_stairs.json (100%) rename src/main/resources/data/nnow/recipes/{stairs => blocks_to_stairs}/coarsedirt_stairs.json (100%) rename src/main/resources/data/nnow/recipes/{stairs => blocks_to_stairs}/cracked_stone_bricks_stairs.json (100%) rename src/main/resources/data/nnow/recipes/{stairs => blocks_to_stairs}/dark_oak_leaves_stairs.json (100%) rename src/main/resources/data/nnow/recipes/{stairs => blocks_to_stairs}/dirt_stairs.json (100%) rename src/main/resources/data/nnow/recipes/{stairs => blocks_to_stairs}/gravel_stairs.json (100%) rename src/main/resources/data/nnow/recipes/{stairs => blocks_to_stairs}/jungle_leaves_stairs.json (100%) rename src/main/resources/data/nnow/recipes/{stairs => blocks_to_stairs}/oak_leaves_stairs.json (100%) rename src/main/resources/data/nnow/recipes/{stairs => blocks_to_stairs}/redsand_stairs.json (100%) rename src/main/resources/data/nnow/recipes/{stairs => blocks_to_stairs}/sand_stairs.json (100%) rename src/main/resources/data/nnow/recipes/{stairs => blocks_to_stairs}/spruce_leaves_stairs.json (100%) create mode 100644 src/main/resources/data/nnow/recipes/dust/cobblestone_to_stone_dust.json rename src/main/resources/data/nnow/recipes/dust/{dirt.json => dirt_dust_to_dirt.json} (100%) create mode 100644 src/main/resources/data/nnow/recipes/dust/dirt_to_dirt_dust.json rename src/main/resources/data/nnow/recipes/dust/{gravel.json => gravel_dust_to_gravel.json} (100%) create mode 100644 src/main/resources/data/nnow/recipes/dust/gravel_to_gravel_dust.json create mode 100644 src/main/resources/data/nnow/recipes/dust/red_sand_to_sand_dust.json create mode 100644 src/main/resources/data/nnow/recipes/dust/sand_dust_to_red_sand.json rename src/main/resources/data/nnow/recipes/dust/{sand.json => sand_dust_to_sand.json} (100%) create mode 100644 src/main/resources/data/nnow/recipes/dust/sand_to_sand_dust.json rename src/main/resources/data/nnow/recipes/dust/{cobblestone.json => stone_dust_to_cobblestone.json} (100%) create mode 100644 src/main/resources/data/nnow/recipes/food/bowl_of_weetabix.json rename src/main/resources/data/nnow/recipes/{ => food}/weetabix.json (100%) create mode 100644 src/main/resources/data/nnow/recipes/items/bun_in_the_oven.json rename src/main/resources/data/nnow/recipes/{ => items}/magnet.json (100%) rename src/main/resources/data/nnow/recipes/{ => items}/poking_stick.json (100%) rename src/main/resources/data/nnow/recipes/{ => items}/viagra.json (78%) create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/aluminum_block_to_aluminum_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/aluminum_ingot_to_aluminum_block.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/aluminum_ingot_to_aluminum_nugget.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/aluminum_nugget_to_aluminum_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/bismuth_block_to_bismuth_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/bismuth_ingot_to_bismuth_block.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/bismuth_ingot_to_bismuth_nugget.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/bismuth_nugget_to_bismuth_ingot.json rename src/main/resources/data/nnow/recipes/{nuggets/coal_nugget.json => metal_blocks/coal_nugget_to_coal.json} (100%) rename src/main/resources/data/nnow/recipes/{nuggets/coal.json => metal_blocks/coal_to_coal_nugget.json} (100%) create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/copper_block_to_copper_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/copper_ingot_to_copper_block.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/copper_ingot_to_copper_nugget.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/copper_nugget_to_copper_ingot.json rename src/main/resources/data/nnow/recipes/{nuggets/diamond_nugget.json => metal_blocks/diamond_nugget_to_diamond.json} (100%) rename src/main/resources/data/nnow/recipes/{nuggets/diamond.json => metal_blocks/diamond_to_diamond_nugget.json} (100%) rename src/main/resources/data/nnow/recipes/{nuggets/emerald_nugget.json => metal_blocks/emerald_nugget_to_emerald.json} (100%) rename src/main/resources/data/nnow/recipes/{nuggets/emerald.json => metal_blocks/emerald_to_emerald_nugget.json} (100%) rename src/main/resources/data/nnow/recipes/{lava_bucket.json => metal_blocks/fire_nugget_to_lava_bucket.json} (100%) rename src/main/resources/data/nnow/recipes/{nuggets/ice.json => metal_blocks/ice_nugget_to_ice.json} (83%) rename src/main/resources/data/nnow/recipes/{nuggets/snow_block.json => metal_blocks/ice_nugget_to_snow_block.json} (100%) rename src/main/resources/data/nnow/recipes/{water_bucket.json => metal_blocks/ice_nugget_to_water_bucket.json} (100%) create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/iridium_block_to_iridium_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/iridium_ingot_to_iridium_block.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/iridium_ingot_to_iridium_nugget.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/iridium_nugget_to_iridium_ingot.json rename src/main/resources/data/nnow/recipes/{nuggets/lapis_lazuli.json => metal_blocks/lapis_lazuli_to_lapis_nugget.json} (100%) rename src/main/resources/data/nnow/recipes/{nuggets/lapis_nugget.json => metal_blocks/lapis_nugget_to_lapis.json} (100%) create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/lead_block_to_lead_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/lead_ingot_to_lead_block.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/lead_ingot_to_lead_nugget.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/lead_nugget_to_lead_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/nickel_block_to_nickel_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/nickel_ingot_to_nickel_block.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/nickel_ingot_to_nickel_nugget.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/nickel_nugget_to_nickel_nugget.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/osmium_block_to_osmium_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/osmium_ingot_to_osmium_block.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/osmium_ingot_to_osmium_nugget.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/osmium_nugget_to_osmium_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/platinum_block_to_platinum_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/platinum_ingot_to_platinum_block.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/platinum_ingot_to_platinum_nugget.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/platinum_nugget_to_platinum_ingot.json rename src/main/resources/data/nnow/recipes/{nuggets/quartz_nugget.json => metal_blocks/quartz_nugget_to_quartz.json} (100%) rename src/main/resources/data/nnow/recipes/{nuggets/quartz.json => metal_blocks/quartz_to_quartz_nugget.json} (100%) rename src/main/resources/data/nnow/recipes/{nuggets/redstone_nugget.json => metal_blocks/redstone_nugget_to_redstone.json} (100%) rename src/main/resources/data/nnow/recipes/{nuggets/redstone.json => metal_blocks/redstone_to_redstone_nugget.json} (100%) create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/silver_block_to_silver_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/silver_ingot_to_silver_block.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/silver_ingot_to_sliver_nugget.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/silver_nugget_to_silver_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/tin_block_to_tin_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/tin_ingot_to_tin_block.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/tin_ingot_to_tin_nugget.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/tin_nugget_to_tin_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/uranium_block_to_uranium_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/uranium_ingot_to_uranium_block.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/uranium_ingot_to_uranium_nugget.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/uranium_nugget_to_uranium_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/zinc_block_to_zinc_ingot.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/zinc_ingot_to_zinc_block.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/zinc_ingot_to_zinc_nugget.json create mode 100644 src/main/resources/data/nnow/recipes/metal_blocks/zinc_nugget_to_zinc_ingot.json rename src/main/resources/data/nnow/recipes/{blocks => nnow_blocks}/agg_block.json (100%) rename src/main/resources/data/nnow/recipes/{blocks => nnow_blocks}/agrs_block.json (100%) rename src/main/resources/data/nnow/recipes/{blocks => nnow_blocks}/ags_block.json (100%) rename src/main/resources/data/nnow/recipes/{blocks => nnow_blocks}/bookshelf_chest.json (100%) rename src/main/resources/data/nnow/recipes/{blocks => nnow_blocks}/cobblegen.json (100%) rename src/main/resources/data/nnow/recipes/{blocks => nnow_blocks}/cobblegen_2.json (100%) rename src/main/resources/data/nnow/recipes/{blocks => nnow_blocks}/dark_glass.json (100%) rename src/main/resources/data/nnow/recipes/{blocks => nnow_blocks}/end_lantern.json (100%) create mode 100644 src/main/resources/data/nnow/recipes/nnow_blocks/ingot_furnace.json rename src/main/resources/data/nnow/recipes/{blocks => nnow_blocks}/lavawell.json (100%) rename src/main/resources/data/nnow/recipes/{blocks => nnow_blocks}/rsg_head.json (100%) rename src/main/resources/data/nnow/recipes/{blocks => nnow_blocks}/safe_chest.json (100%) rename src/main/resources/data/nnow/recipes/{blocks => nnow_blocks}/super_obsidian.json (100%) rename src/main/resources/data/nnow/recipes/{blocks => nnow_blocks}/super_obsidian_bars.json (100%) rename src/main/resources/data/nnow/recipes/{blocks/super_obsidian_2.json => nnow_blocks/super_obsidian_bars_to_super_obsidian.json} (100%) rename src/main/resources/data/nnow/recipes/{blocks/super_obsidian_bars_2.json => nnow_blocks/super_obsidian_to_super_obsidian_bars.json} (100%) rename src/main/resources/data/nnow/recipes/{blocks => nnow_blocks}/waterwell.json (100%) create mode 100644 src/main/resources/data/nnow/recipes/poi/banker_poi.json rename src/main/resources/data/nnow/recipes/{blocks => poi}/beekeeper_block.json (100%) create mode 100644 src/main/resources/data/nnow/recipes/poi/end_trader.json create mode 100644 src/main/resources/data/nnow/recipes/poi/nether_trader.json rename src/main/resources/data/nnow/recipes/{blocks => poi}/sea_fisherman.json (100%) rename src/main/resources/data/nnow/recipes/{blocks => poi}/sea_trader.json (100%) rename src/main/resources/data/nnow/recipes/{blocks => poi}/sword_in_stone.json (100%) rename src/main/resources/data/nnow/recipes/{traps => poi}/trap_block.json (100%) create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/acacia_leaves.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/acacia_planks.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/andesite.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/birch_leaves.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/birch_planks.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/bookshelf.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/bricks.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/coarse_dirt.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/cobblestone.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/cracked_stone_bricks.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/cut_red_sandstone.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/cut_sandstone.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/dark_oak_leaves.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/dark_oak_planks.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/dark_prismarine.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/diorite.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/dirt.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/end_stone_bricks.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/granite.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/grass_block.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/gravel.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/jungle_leaves.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/jungle_planks.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/mossy_cobblestone.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/mossy_stone_bricks.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/nether_bricks.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/oak_leaves.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/oak_planks.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/polished_andesite.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/polished_diorite.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/polished_granite.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/prismarine.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/prismarine_bricks.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/purpur_block.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/quartz_block.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/red_nether_bricks.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/red_sand.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/red_sandstone.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/sand.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/sandstone.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/smooth_quartz.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/smooth_red_sandstone.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/smooth_sandstone.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/smooth_stone.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/spruce_leaves.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/spruce_planks.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/stone.json create mode 100644 src/main/resources/data/nnow/recipes/slabs_to_blocks/stone_bricks.json delete mode 100644 src/main/resources/data/nnow/recipes/smelting/brick.json create mode 100644 src/main/resources/data/nnow/recipes/smelting/bun_in_the_oven_to_villager_spawn_egg.json create mode 100644 src/main/resources/data/nnow/recipes/tools/emerald_hammer.json create mode 100644 src/main/resources/data/nnow/recipes/tools/emerald_spade.json create mode 100644 src/main/resources/data/nnow/recipes/tools/ender_bag.json rename src/main/resources/data/nnow/recipes/{wood => wooden_nuggets_to_logs}/acacia_log.json (100%) rename src/main/resources/data/nnow/recipes/{wood => wooden_nuggets_to_logs}/birch_log.json (100%) rename src/main/resources/data/nnow/recipes/{wood => wooden_nuggets_to_logs}/dark_oak_log.json (100%) rename src/main/resources/data/nnow/recipes/{wood => wooden_nuggets_to_logs}/jungle_log.json (100%) rename src/main/resources/data/nnow/recipes/{wood => wooden_nuggets_to_logs}/oak_log.json (100%) rename src/main/resources/data/nnow/recipes/{wood => wooden_nuggets_to_logs}/spruce_log.json (100%) create mode 100644 src/main/resources/data/nnow/recipes/wooden_nuggets_to_saplings/wooden_nugget_to_acacia_sapling.json create mode 100644 src/main/resources/data/nnow/recipes/wooden_nuggets_to_saplings/wooden_nugget_to_birch_sapling.json create mode 100644 src/main/resources/data/nnow/recipes/wooden_nuggets_to_saplings/wooden_nugget_to_dark_oak_sapling.json create mode 100644 src/main/resources/data/nnow/recipes/wooden_nuggets_to_saplings/wooden_nugget_to_jungle_sapling.json create mode 100644 src/main/resources/data/nnow/recipes/wooden_nuggets_to_saplings/wooden_nugget_to_oak_sapling.json create mode 100644 src/main/resources/data/nnow/recipes/wooden_nuggets_to_saplings/wooden_nugget_to_spruce_sapling.json create mode 100644 src/main/resources/data/nnow/tags/items/hammers.json create mode 100644 src/main/resources/data/nnow/tags/items/spades.json diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 3397c9a..0000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-architect \ No newline at end of file diff --git a/build.gradle b/build.gradle index 3a9a16a..c41fe29 100644 --- a/build.gradle +++ b/build.gradle @@ -19,6 +19,7 @@ archivesBaseName = modFileName sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) minecraft { // The mappings can be changed at any time, and must be in the following format. // snapshot_YYYYMMDD Snapshot are built nightly. @@ -89,7 +90,7 @@ dependencies { // Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed // that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied. // The userdev artifact is a special name and will get all sorts of transformations applied to it. - minecraft "net.minecraftforge:forge:" + modMinecraftVersion + "-" + modForgeVersion + minecraft 'net.minecraftforge:forge:1.16.2-33.0.10' // You may put jars on which you depend on in ./libs or you may define them like so.. // compile "some.group:artifact:version:classifier" @@ -115,12 +116,12 @@ dependencies { jar { manifest { attributes([ - "Specification-Title": modId, - "Specification-Vendor": modGroup, + "Specification-Title": "examplemod", + "Specification-Vendor": "examplemodsareus", "Specification-Version": "1", // We are version 1 of ourselves "Implementation-Title": project.name, "Implementation-Version": "${version}", - "Implementation-Vendor" :modGroup, + "Implementation-Vendor" :"examplemodsareus", "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") ]) } diff --git a/gradle.properties b/gradle.properties index d355e6b..7ac3c80 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,11 +3,11 @@ org.gradle.jvmargs=-Xmx6G org.gradle.daemon=false -modVersion = 0.1.5 -modMinecraftVersion = 1.15.2 -modForgeVersion = 31.1.78 +modVersion = 1.0.0 +modMinecraftVersion = 1.16.2 +modForgeVersion = 33.0.10 mappingsChannel = snapshot -mappingsVersion = 20200521-1.15.1 +mappingsVersion = 20200723-1.16.1 modId = nnow modGroup = com.github.wimpingego.nnow -modFileName = NeverNeededOrWanted +modFileName = NeverNeededOrWanted \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/NNOW.java b/src/main/java/com/github/wimpingego/nnow/NNOW.java index 6a6414f..70fc2bf 100644 --- a/src/main/java/com/github/wimpingego/nnow/NNOW.java +++ b/src/main/java/com/github/wimpingego/nnow/NNOW.java @@ -3,12 +3,9 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import com.github.wimpingego.nnow.container.ModContainerTypes; -import com.github.wimpingego.nnow.entities.ModTileEntityTypes; -import com.github.wimpingego.nnow.init.BlockList; -import com.github.wimpingego.nnow.init.ItemList; -import com.github.wimpingego.nnow.init.SoundList; +import com.github.wimpingego.nnow.init.*; import com.github.wimpingego.nnow.util.ClientRenderer; +import com.github.wimpingego.nnow.util.MetalClientRenderer; import com.github.wimpingego.nnow.util.Trollnventory; import com.github.wimpingego.nnow.util.WitherEvents; import com.github.wimpingego.nnow.util.ModConfigs; @@ -44,30 +41,42 @@ public class NNOW public static final ItemGroup NNOW_TAB = new ItemGroup("NNOWTab") { public ItemStack createIcon() { - return new ItemStack(ItemList.MAGNET.get()); + return new ItemStack(ItemList.ENDER_BAG.get()); } }; - + public NNOW() { - + final IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); + ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, ModConfigs.COMMON_CONFIG); + ModConfigs.load(ModConfigs.COMMON_CONFIG, FMLPaths.CONFIGDIR.get().resolve("nnow-common.toml")); + modEventBus.addListener(this::setup); modEventBus.addListener(this::clientSetup); SoundList.SOUNDS.register(modEventBus); ItemList.ITEMS.register(modEventBus); + + if(ModConfigs.METALS_ITEMS_LOADED.get() == true) + { + MetalItemList.ITEMS.register(modEventBus); + } + BlockList.BLOCKS.register(modEventBus); BlockList.NO_ITEM_BLOCK.register(modEventBus); - ModTileEntityTypes.TILE_ENTITY_TYPES.register(modEventBus); - ModContainerTypes.CONTAINER_TYPES.register(modEventBus); + if(ModConfigs.METALS_ITEMS_LOADED.get() == true) + { + MetalBlockList.BLOCKS.register(modEventBus); + MetalBlockList.NO_ITEM_BLOCK.register(modEventBus); + } + MinecraftForge.EVENT_BUS.register(this); - //MinecraftForge.EVENT_BUS.register(Trollnventory.class); - ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, ModConfigs.COMMON_CONFIG); - ModConfigs.load(ModConfigs.COMMON_CONFIG, FMLPaths.CONFIGDIR.get().resolve("nnow-common.toml")); + //ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, ModConfigs.COMMON_CONFIG); + ///ModConfigs.load(ModConfigs.COMMON_CONFIG, FMLPaths.CONFIGDIR.get().resolve("nnow-common.toml")); IEventBus forgeEventBus = MinecraftForge.EVENT_BUS; @@ -84,7 +93,18 @@ public static void createBlockItems(final RegistryEvent.Register event) { final BlockItem blockItem = new BlockItem(block, properties); blockItem.setRegistryName(block.getRegistryName()); registry.register(blockItem); - }); + }); + + if(ModConfigs.METALS_ITEMS_LOADED.get() == true) + { + MetalBlockList.BLOCKS.getEntries().stream().map(RegistryObject::get).forEach(block -> { + final Item.Properties properties = new Item.Properties().group(NNOW_TAB); + final BlockItem blockItem = new BlockItem(block, properties); + blockItem.setRegistryName(block.getRegistryName()); + registry.register(blockItem); + }); + } + } private void setup(final FMLCommonSetupEvent event) @@ -100,11 +120,18 @@ private void setup(final FMLCommonSetupEvent event) VillagerUtil.fixPOITypeBlockStates(PointOfInterestTypes.END_TRADER); VillagerUtil.fixPOITypeBlockStates(PointOfInterestTypes.SEA_TRADER); VillagerUtil.fixPOITypeBlockStates(PointOfInterestTypes.SEA_FISHERMAN); + VillagerUtil.fixPOITypeBlockStates(PointOfInterestTypes.NETHER_TRADER); + VillagerUtil.fixPOITypeBlockStates(PointOfInterestTypes.INGOT_TRADER); } private void clientSetup(final FMLClientSetupEvent event) { ClientRenderer.registerBlocks(); + + if(ModConfigs.METALS_ITEMS_LOADED.get() == true) + { + MetalClientRenderer.registerBlocks(); + } } } diff --git a/src/main/java/com/github/wimpingego/nnow/client/gui/BookshelfChestScreen.java b/src/main/java/com/github/wimpingego/nnow/client/gui/BookshelfChestScreen.java deleted file mode 100644 index 41ebc29..0000000 --- a/src/main/java/com/github/wimpingego/nnow/client/gui/BookshelfChestScreen.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.github.wimpingego.nnow.client.gui; - -import com.github.wimpingego.nnow.NNOW; -import com.github.wimpingego.nnow.container.BookshelfChestContainer; -import com.mojang.blaze3d.systems.RenderSystem; - -import net.minecraft.client.gui.screen.inventory.ContainerScreen; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.ITextComponent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn(Dist.CLIENT) -public class BookshelfChestScreen extends ContainerScreen { - - private static final ResourceLocation BACKGROUND_TEXTURE = new ResourceLocation(NNOW.MOD_ID, "textures/gui/bookshelf_chest.png"); - - public BookshelfChestScreen(BookshelfChestContainer screenContainer, PlayerInventory inv, ITextComponent titleIn) { - super(screenContainer, inv, titleIn); - this.guiLeft = 0; - this.guiTop = 0; - this.xSize = 175; - this.ySize = 183; - } - - @Override - public void render(final int mouseX, final int mouseY, final float partialTicks) { - this.renderBackground(); - super.render(mouseX, mouseY, partialTicks); - this.renderHoveredToolTip(mouseX, mouseY); - } - - @Override - protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - super.drawGuiContainerForegroundLayer(mouseX, mouseY); - this.font.drawString(this.title.getFormattedText(), 8.0f, 6.0f, 4210752); - this.font.drawString(this.playerInventory.getDisplayName().getFormattedText(), 8.0f, 91.0f, 4210752); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { - RenderSystem.color4f(1.0f, 1.0f, 1.0f, 1.0f); - this.minecraft.getTextureManager().bindTexture(BACKGROUND_TEXTURE); - int x = (this.width - this.xSize) / 2; - int y = (this.height - this.ySize) / 2; - this.blit(x, y, 0, 0, this.xSize, this.ySize); - } -} diff --git a/src/main/java/com/github/wimpingego/nnow/client/gui/SafeChestScreen.java b/src/main/java/com/github/wimpingego/nnow/client/gui/SafeChestScreen.java deleted file mode 100644 index f656ab0..0000000 --- a/src/main/java/com/github/wimpingego/nnow/client/gui/SafeChestScreen.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.github.wimpingego.nnow.client.gui; - -//import com.github.wimpingego.nnow.NNOW; -import com.github.wimpingego.nnow.container.SafeChestContainer; -import com.mojang.blaze3d.systems.RenderSystem; - -import net.minecraft.client.gui.screen.inventory.ContainerScreen; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.ITextComponent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn(Dist.CLIENT) -public class SafeChestScreen extends ContainerScreen { - - private static final ResourceLocation BACKGROUND_TEXTURE = new ResourceLocation("textures/gui/container/shulker_box.png"); - - public SafeChestScreen(SafeChestContainer screenContainer, PlayerInventory inv, ITextComponent titleIn) { - super(screenContainer, inv, titleIn); - this.guiLeft = 0; - this.guiTop = 0; - this.xSize = 175; - this.ySize = 183; - } - - @Override - public void render(final int mouseX, final int mouseY, final float partialTicks) { - this.renderBackground(); - super.render(mouseX, mouseY, partialTicks); - this.renderHoveredToolTip(mouseX, mouseY); - } - - @Override - protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - super.drawGuiContainerForegroundLayer(mouseX, mouseY); - this.font.drawString(this.title.getFormattedText(), 8.0f, 6.0f, 4210752); - this.font.drawString(this.playerInventory.getDisplayName().getFormattedText(), 8.0f, 73.0f, 4210752); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { - RenderSystem.color4f(1.0f, 1.0f, 1.0f, 1.0f); - this.minecraft.getTextureManager().bindTexture(BACKGROUND_TEXTURE); - int x = (this.width - this.xSize) / 2; - int y = (this.height - this.ySize) / 2; - this.blit(x, y, 0, 0, this.xSize, this.ySize); - } -} diff --git a/src/main/java/com/github/wimpingego/nnow/container/BookshelfChestContainer.java b/src/main/java/com/github/wimpingego/nnow/container/BookshelfChestContainer.java deleted file mode 100644 index b0258fd..0000000 --- a/src/main/java/com/github/wimpingego/nnow/container/BookshelfChestContainer.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.github.wimpingego.nnow.container; - -import java.util.Objects; - -import com.github.wimpingego.nnow.init.BlockList; -import com.github.wimpingego.nnow.tileentity.BookshelfChestTileEntity; - -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.inventory.container.Container; -import net.minecraft.inventory.container.Slot; -import net.minecraft.item.ItemStack; -import net.minecraft.network.PacketBuffer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IWorldPosCallable; - -public class BookshelfChestContainer extends Container { - - public final BookshelfChestTileEntity tileEntity; - private final IWorldPosCallable canInteractWithCallable; - - public BookshelfChestContainer(final int windowId, final PlayerInventory playerInventory, - final BookshelfChestTileEntity bookshelfChestTileEntity) { - super(ModContainerTypes.BOOKSHELF_CHEST.get(), windowId); - this.tileEntity = bookshelfChestTileEntity; - this.canInteractWithCallable = IWorldPosCallable.of(bookshelfChestTileEntity.getWorld(), bookshelfChestTileEntity.getPos()); - - // Main Inventory - int startX = 8; - int startY = 18; - int slotSizePlus2 = 18; - for (int row = 0; row < 4; ++row) { - for (int column = 0; column < 9; ++column) { - this.addSlot(new Slot(bookshelfChestTileEntity, (row * 9) + column, startX + (column * slotSizePlus2), - startY + (row * slotSizePlus2))); - } - } - - // Main Player Inventory - int startPlayerInvY = startY * 5 + 12; - for (int row = 0; row < 3; ++row) { - for (int column = 0; column < 9; ++column) { - this.addSlot(new Slot(playerInventory, 9 + (row * 9) + column, startX + (column * slotSizePlus2), - startPlayerInvY + (row * slotSizePlus2))); - } - } - - // Hotbar - int hotbarY = startPlayerInvY + (startPlayerInvY / 2) + 7; - for (int column = 0; column < 9; ++column) { - this.addSlot(new Slot(playerInventory, column, startX + (column * slotSizePlus2), hotbarY)); - } - } - - private static BookshelfChestTileEntity getTileEntity(final PlayerInventory playerInventory, - final PacketBuffer data) { - Objects.requireNonNull(playerInventory, "playerInventory cannot be null"); - Objects.requireNonNull(data, "data cannot be null"); - final TileEntity tileAtPos = playerInventory.player.world.getTileEntity(data.readBlockPos()); - if (tileAtPos instanceof BookshelfChestTileEntity) { - return (BookshelfChestTileEntity) tileAtPos; - } - throw new IllegalStateException("Tile entity is not correct! " + tileAtPos); - } - - public BookshelfChestContainer(final int windowId, final PlayerInventory playerInventory, final PacketBuffer data) { - this(windowId, playerInventory, getTileEntity(playerInventory, data)); - } - - @Override - public boolean canInteractWith(PlayerEntity playerIn) { - return isWithinUsableDistance(canInteractWithCallable, playerIn, BlockList.BOOKSHELF_CHEST.get()); - } - - @Override - public ItemStack transferStackInSlot(PlayerEntity playerIn, int index) { - ItemStack itemstack = ItemStack.EMPTY; - Slot slot = this.inventorySlots.get(index); - if (slot != null && slot.getHasStack()) { - ItemStack itemstack1 = slot.getStack(); - itemstack = itemstack1.copy(); - if (index < 36) { - if (!this.mergeItemStack(itemstack1, 36, this.inventorySlots.size(), true)) { - return ItemStack.EMPTY; - } - } else if (!this.mergeItemStack(itemstack1, 0, 36, false)) { - return ItemStack.EMPTY; - } - - if (itemstack1.isEmpty()) { - slot.putStack(ItemStack.EMPTY); - } else { - slot.onSlotChanged(); - } - } - return itemstack; - } -} diff --git a/src/main/java/com/github/wimpingego/nnow/container/ModContainerTypes.java b/src/main/java/com/github/wimpingego/nnow/container/ModContainerTypes.java deleted file mode 100644 index 961005d..0000000 --- a/src/main/java/com/github/wimpingego/nnow/container/ModContainerTypes.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.github.wimpingego.nnow.container; - -import com.github.wimpingego.nnow.NNOW; - -import net.minecraft.inventory.container.ContainerType; -import net.minecraftforge.common.extensions.IForgeContainerType; -import net.minecraftforge.fml.RegistryObject; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; - -public class ModContainerTypes { - - public static final DeferredRegister> CONTAINER_TYPES = new DeferredRegister<>( - ForgeRegistries.CONTAINERS, NNOW.MOD_ID); - - public static final RegistryObject> BOOKSHELF_CHEST = CONTAINER_TYPES - .register("bookshelf_chest", () -> IForgeContainerType.create(BookshelfChestContainer::new)); - - public static final RegistryObject> SAFE_CHEST = CONTAINER_TYPES - .register("safe_chest", () -> IForgeContainerType.create(SafeChestContainer::new)); -} diff --git a/src/main/java/com/github/wimpingego/nnow/container/SafeChestContainer.java b/src/main/java/com/github/wimpingego/nnow/container/SafeChestContainer.java deleted file mode 100644 index 5fbb74b..0000000 --- a/src/main/java/com/github/wimpingego/nnow/container/SafeChestContainer.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.github.wimpingego.nnow.container; - -import java.util.Objects; - -import com.github.wimpingego.nnow.init.BlockList; -import com.github.wimpingego.nnow.tileentity.SafeChestTileEntity; - -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.inventory.container.Container; -import net.minecraft.inventory.container.Slot; -import net.minecraft.item.ItemStack; -import net.minecraft.network.PacketBuffer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IWorldPosCallable; - -public class SafeChestContainer extends Container { - - public final SafeChestTileEntity tileEntity; - private final IWorldPosCallable canInteractWithCallable; - - public SafeChestContainer(final int windowId, final PlayerInventory playerInventory, - final SafeChestTileEntity SafeChestTileEntity) { - super(ModContainerTypes.SAFE_CHEST.get(), windowId); - this.tileEntity = SafeChestTileEntity; - this.canInteractWithCallable = IWorldPosCallable.of(SafeChestTileEntity.getWorld(), SafeChestTileEntity.getPos()); - - // Main Inventory - int startX = 8; - int startY = 18; - int slotSizePlus2 = 18; - for (int row = 0; row < 3; ++row) { - for (int column = 0; column < 9; ++column) { - this.addSlot(new Slot(SafeChestTileEntity, (row * 9) + column, startX + (column * slotSizePlus2), - startY + (row * slotSizePlus2))); - } - } - - // Main Player Inventory - int startPlayerInvY = startY * 4 + 12; - for (int row = 0; row < 3; ++row) { - for (int column = 0; column < 9; ++column) { - this.addSlot(new Slot(playerInventory, 9 + (row * 9) + column, startX + (column * slotSizePlus2), - startPlayerInvY + (row * slotSizePlus2))); - } - } - - // Hotbar - int hotbarY = startPlayerInvY + (startPlayerInvY / 2) + 16; - for (int column = 0; column < 9; ++column) { - this.addSlot(new Slot(playerInventory, column, startX + (column * slotSizePlus2), hotbarY)); - } - } - - private static SafeChestTileEntity getTileEntity(final PlayerInventory playerInventory, - final PacketBuffer data) { - Objects.requireNonNull(playerInventory, "playerInventory cannot be null"); - Objects.requireNonNull(data, "data cannot be null"); - final TileEntity tileAtPos = playerInventory.player.world.getTileEntity(data.readBlockPos()); - if (tileAtPos instanceof SafeChestTileEntity) { - return (SafeChestTileEntity) tileAtPos; - } - throw new IllegalStateException("Tile entity is not correct! " + tileAtPos); - } - - public SafeChestContainer(final int windowId, final PlayerInventory playerInventory, final PacketBuffer data) { - this(windowId, playerInventory, getTileEntity(playerInventory, data)); - } - - @Override - public boolean canInteractWith(PlayerEntity playerIn) { - return isWithinUsableDistance(canInteractWithCallable, playerIn, BlockList.SAFE_CHEST.get()); - } - - @Override - public ItemStack transferStackInSlot(PlayerEntity playerIn, int index) { - ItemStack itemstack = ItemStack.EMPTY; - Slot slot = this.inventorySlots.get(index); - if (slot != null && slot.getHasStack()) { - ItemStack itemstack1 = slot.getStack(); - itemstack = itemstack1.copy(); - if (index < 27) { - if (!this.mergeItemStack(itemstack1, 27, this.inventorySlots.size(), true)) { - return ItemStack.EMPTY; - } - } else if (!this.mergeItemStack(itemstack1, 0, 27, false)) { - return ItemStack.EMPTY; - } - - if (itemstack1.isEmpty()) { - slot.putStack(ItemStack.EMPTY); - } else { - slot.onSlotChanged(); - } - } - return itemstack; - } -} diff --git a/src/main/java/com/github/wimpingego/nnow/entities/ModTileEntityTypes.java b/src/main/java/com/github/wimpingego/nnow/entities/ModTileEntityTypes.java deleted file mode 100644 index 47aaac8..0000000 --- a/src/main/java/com/github/wimpingego/nnow/entities/ModTileEntityTypes.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.github.wimpingego.nnow.entities; - -import com.github.wimpingego.nnow.NNOW; -import com.github.wimpingego.nnow.init.BlockList; -import com.github.wimpingego.nnow.tileentity.BookshelfChestTileEntity; -import com.github.wimpingego.nnow.tileentity.SafeChestTileEntity; - -import net.minecraft.tileentity.TileEntityType; -import net.minecraftforge.fml.RegistryObject; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; - -public class ModTileEntityTypes { - - public static final DeferredRegister> TILE_ENTITY_TYPES = new DeferredRegister<>( - ForgeRegistries.TILE_ENTITIES, NNOW.MOD_ID); - - - - public static final RegistryObject> BOOKSHELF_CHEST = TILE_ENTITY_TYPES - .register("bookshelf_chest", () -> TileEntityType.Builder - .create(BookshelfChestTileEntity::new, BlockList.BOOKSHELF_CHEST.get()).build(null)); - - public static final RegistryObject> SAFE_CHEST = TILE_ENTITY_TYPES - .register("safe_chest", () -> TileEntityType.Builder - .create(SafeChestTileEntity::new, BlockList.SAFE_CHEST.get()).build(null)); - -} diff --git a/src/main/java/com/github/wimpingego/nnow/init/BlockList.java b/src/main/java/com/github/wimpingego/nnow/init/BlockList.java index 07c1bfe..f21a8f3 100644 --- a/src/main/java/com/github/wimpingego/nnow/init/BlockList.java +++ b/src/main/java/com/github/wimpingego/nnow/init/BlockList.java @@ -1,48 +1,19 @@ package com.github.wimpingego.nnow.init; import com.github.wimpingego.nnow.NNOW; -import com.github.wimpingego.nnow.objects.blocks.AGBlock; -import com.github.wimpingego.nnow.objects.blocks.BookshelfChestBlock; -import com.github.wimpingego.nnow.objects.blocks.BookshelfSlabBlock; -import com.github.wimpingego.nnow.objects.blocks.BookshelfStairsBlock; -import com.github.wimpingego.nnow.objects.blocks.CobbleGen; -import com.github.wimpingego.nnow.objects.blocks.DarkGlass; -import com.github.wimpingego.nnow.objects.blocks.EndLantern; -import com.github.wimpingego.nnow.objects.blocks.LavaWell; -import com.github.wimpingego.nnow.objects.blocks.RedstoneGolemHead; -import com.github.wimpingego.nnow.objects.blocks.SuperObsidian; -import com.github.wimpingego.nnow.objects.blocks.SafeChestBlock; -import com.github.wimpingego.nnow.objects.blocks.WaterWell; -import com.github.wimpingego.nnow.objects.blocks.DoubleHighBlock; -import com.github.wimpingego.nnow.objects.blocks.slabs.BirchSlab; -import com.github.wimpingego.nnow.objects.blocks.slabs.GrassSlab; -import com.github.wimpingego.nnow.objects.blocks.slabs.LeafSlab; -import com.github.wimpingego.nnow.objects.blocks.slabs.SpruceSlab; -import com.github.wimpingego.nnow.objects.blocks.stairs.BirchStairsBlock; -import com.github.wimpingego.nnow.objects.blocks.stairs.CustomStairsBlock; -import com.github.wimpingego.nnow.objects.blocks.stairs.LeafStairsBlock; -import com.github.wimpingego.nnow.objects.blocks.stairs.SpruceStairsBlock; -import com.github.wimpingego.nnow.objects.blocks.traps.TrapBlock; -import com.github.wimpingego.nnow.objects.blocks.traps.TrapType; -import com.github.wimpingego.nnow.objects.blocks.BeekeeperBlock; -import com.github.wimpingego.nnow.objects.bushs.CoalBerryBush; -import com.github.wimpingego.nnow.objects.bushs.DiamondBerryBush; -import com.github.wimpingego.nnow.objects.bushs.EmeraldBerryBush; -import com.github.wimpingego.nnow.objects.bushs.ExperienceBerryBush; -import com.github.wimpingego.nnow.objects.bushs.FireBerryBush; -import com.github.wimpingego.nnow.objects.bushs.IceberryBush; -import com.github.wimpingego.nnow.objects.bushs.GoldBerryBush; -import com.github.wimpingego.nnow.objects.bushs.IronBerryBush; -import com.github.wimpingego.nnow.objects.bushs.LapisBerryBush; -import com.github.wimpingego.nnow.objects.bushs.QuartzBerryBush; -import com.github.wimpingego.nnow.objects.bushs.RedstoneBerryBush; -import com.github.wimpingego.nnow.objects.bushs.WoodenBerryBush; -//import com.github.wimpingego.nnow.objects.crops.CropBlock; +import com.github.wimpingego.nnow.objects.blocks.*; +import com.github.wimpingego.nnow.objects.blocks.slabs.*; +import com.github.wimpingego.nnow.objects.blocks.stairs.*; +import com.github.wimpingego.nnow.objects.blocks.traps.*; +import com.github.wimpingego.nnow.objects.blocks.poi.*; +import com.github.wimpingego.nnow.objects.bushs.*; +import com.github.wimpingego.nnow.objects.bushs.dusts.*; +import com.github.wimpingego.nnow.objects.bushs.ores.*; +import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.Blocks; +import net.minecraft.block.LanternBlock; import net.minecraft.block.SlabBlock; -//import net.minecraft.block.SoundType; -//import net.minecraft.block.material.Material; import net.minecraftforge.common.ToolType; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.DeferredRegister; @@ -50,21 +21,25 @@ public class BlockList { - public static final DeferredRegister BLOCKS = new DeferredRegister<>(ForgeRegistries.BLOCKS,NNOW.MOD_ID); + public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS,NNOW.MOD_ID); + + public static final RegistryObject END_LANTERN = BLOCKS.register("end_lantern",() -> new LanternBlock(Block.Properties.from(Blocks.LANTERN))); //Traps - public static final RegistryObject TRAP_BLOCK = BLOCKS.register("trap_block",() -> new TrapBlock(Block.Properties.from(Blocks.IRON_BLOCK).harvestTool(ToolType.PICKAXE),TrapType.FAKE)); - public static final RegistryObject IRON_TRAP = BLOCKS.register("iron_trap",() -> new TrapBlock(Block.Properties.from(Blocks.IRON_BLOCK).harvestTool(ToolType.PICKAXE), TrapType.IRON)); - public static final RegistryObject GOLDERN_TRAP = BLOCKS.register("gold_trap",() -> new TrapBlock(Block.Properties.from(Blocks.IRON_BLOCK).harvestTool(ToolType.PICKAXE), TrapType.GOLD)); - public static final RegistryObject DIAMOND_TRAP = BLOCKS.register("diamond_trap",() -> new TrapBlock(Block.Properties.from(Blocks.IRON_BLOCK).harvestTool(ToolType.PICKAXE), TrapType.DIAMOND)); - public static final RegistryObject WITHER_TRAP = BLOCKS.register("wither_trap",() -> new TrapBlock(Block.Properties.from(Blocks.IRON_BLOCK).harvestTool(ToolType.PICKAXE), TrapType.WITHER)); + public static final RegistryObject IRON_TRAP = BLOCKS.register("iron_trap",() -> new IronTrapBlock(Block.Properties.from(Blocks.IRON_BLOCK).harvestTool(ToolType.PICKAXE), TrapType.IRON)); + public static final RegistryObject GOLDERN_TRAP = BLOCKS.register("gold_trap",() -> new GoldTrapBlock(Block.Properties.from(Blocks.IRON_BLOCK).harvestTool(ToolType.PICKAXE), TrapType.GOLD)); + public static final RegistryObject DIAMOND_TRAP = BLOCKS.register("diamond_trap",() -> new DiamondTrapBlock(Block.Properties.from(Blocks.IRON_BLOCK).harvestTool(ToolType.PICKAXE), TrapType.DIAMOND)); + public static final RegistryObject WITHER_TRAP = BLOCKS.register("wither_trap",() -> new WitherTrapBlock(Block.Properties.from(Blocks.IRON_BLOCK).harvestTool(ToolType.PICKAXE), TrapType.WITHER)); //POI - public static final RegistryObject END_LANTERN = BLOCKS.register("end_lantern",() -> new EndLantern(Block.Properties.from(Blocks.LANTERN))); + public static final RegistryObject TRAP_BLOCK = BLOCKS.register("trap_block",() -> new MonsterTrapperBlock(Block.Properties.from(Blocks.STONE).harvestTool(ToolType.PICKAXE))); + public static final RegistryObject BANKER_POI = BLOCKS.register("banker_poi",() -> new BeekeeperBlock(Block.Properties.from(Blocks.OAK_PLANKS).harvestTool(ToolType.AXE))); + public static final RegistryObject END_TRADER = BLOCKS.register("end_trader",() -> new EndTraderBlock(Block.Properties.from(Blocks.OAK_PLANKS).harvestTool(ToolType.AXE))); public static final RegistryObject SWORD_IN_STONE = BLOCKS.register("sword_in_stone",() -> new DoubleHighBlock(Block.Properties.from(Blocks.STONE))); - public static final RegistryObject BEEKEEPER_BLOCK = BLOCKS.register("beekeeper_block",() -> new BeekeeperBlock(Block.Properties.from(Blocks.BOOKSHELF).lightValue(4).harvestTool(ToolType.AXE))); + public static final RegistryObject BEEKEEPER_BLOCK = BLOCKS.register("beekeeper_block",() -> new BeekeeperBlock(Block.Properties.from(Blocks.BOOKSHELF).harvestTool(ToolType.AXE))); public static final RegistryObject SEA_FISHERMAN_POI = BLOCKS.register("sea_fisherman",() -> new DoubleHighBlock(Block.Properties.from(Blocks.IRON_BLOCK).harvestTool(ToolType.PICKAXE))); - public static final RegistryObject SEA_TRADER_POI = BLOCKS.register("sea_trader",() -> new DoubleHighBlock(Block.Properties.from(Blocks.OAK_LOG).harvestTool(ToolType.AXE))); + public static final RegistryObject SEA_TRADER_POI = BLOCKS.register("sea_trader",() -> new DoubleHighBlock(Block.Properties.from(Blocks.OAK_PLANKS).harvestTool(ToolType.AXE))); + public static final RegistryObject NETHER_TRADER_POI = BLOCKS.register("nether_trader",() -> new DoubleHighBlock(Block.Properties.from(Blocks.NETHERRACK).harvestTool(ToolType.PICKAXE))); //Blocks public static final RegistryObject AGG_BLOCK = BLOCKS.register("agg_block",() -> new AGBlock(Block.Properties.from(Blocks.GRAVEL))); @@ -75,8 +50,8 @@ public class BlockList { public static final RegistryObject SUPER_OBSIDIAN_BARS = BLOCKS.register("super_obsidian_bars",() -> new SuperObsidian()); public static final RegistryObject WATERWELL = BLOCKS.register("waterwell", () -> new WaterWell(Block.Properties.from(Blocks.IRON_BLOCK).harvestTool(ToolType.PICKAXE))); - public static final RegistryObject LAVAWELL = BLOCKS.register("lavawell",() -> new LavaWell(Block.Properties.from(Blocks.IRON_BLOCK).lightValue(8).harvestTool(ToolType.PICKAXE))); - public static final RegistryObject COBBLEGEN = BLOCKS.register("cobblegen",() -> new CobbleGen(Block.Properties.from(Blocks.IRON_BLOCK).lightValue(4).harvestTool(ToolType.PICKAXE))); + public static final RegistryObject LAVAWELL = BLOCKS.register("lavawell",() -> new LavaWell(Block.Properties.from(Blocks.IRON_BLOCK).harvestTool(ToolType.PICKAXE))); + public static final RegistryObject COBBLEGEN = BLOCKS.register("cobblegen",() -> new CobbleGen(Block.Properties.from(Blocks.IRON_BLOCK).harvestTool(ToolType.PICKAXE))); //Stairs public static final RegistryObject GRAVEL_STAIRS = BLOCKS.register("gravel_stairs",() -> new CustomStairsBlock(AGS_BLOCK.get().getDefaultState(),Block.Properties.from(Blocks.GRAVEL).harvestTool(ToolType.SHOVEL))); @@ -101,6 +76,7 @@ public class BlockList { public static final RegistryObject REDSAND_SLAB = BLOCKS.register("redsand_slab",() -> new SlabBlock(Block.Properties.from(Blocks.RED_SAND).harvestTool(ToolType.SHOVEL))); public static final RegistryObject COARSEDIRT_SLAB = BLOCKS.register("coarsedirt_slab",() -> new SlabBlock(Block.Properties.from(Blocks.DIRT).harvestTool(ToolType.SHOVEL))); public static final RegistryObject DIRT_SLAB = BLOCKS.register("dirt_slab",() -> new SlabBlock(Block.Properties.from(Blocks.DIRT).harvestTool(ToolType.SHOVEL))); + public static final RegistryObject PATH_SLAB = BLOCKS.register("path_slab",() -> new PathSlab()); public static final RegistryObject CRACKED_STONE_SLAB = BLOCKS.register("cracked_stone_bricks_slab",() -> new SlabBlock(Block.Properties.from(Blocks.STONE).harvestTool(ToolType.PICKAXE))); public static final RegistryObject BOOKSHELF_SLAB = BLOCKS.register("bookshelf_slab",() -> new BookshelfSlabBlock(Block.Properties.from(Blocks.BOOKSHELF).harvestTool(ToolType.AXE))); @@ -111,32 +87,35 @@ public class BlockList { public static final RegistryObject SPRUCE_LEAVES_SLAB = BLOCKS.register("spruce_leaves_slab",() -> new SpruceSlab(Block.Properties.from(Blocks.SPRUCE_LEAVES))); public static final RegistryObject BIRCH_LEAVES_SLAB = BLOCKS.register("birch_leaves_slab",() -> new BirchSlab(Block.Properties.from(Blocks.BIRCH_LEAVES))); - //Chests - public static final RegistryObject BOOKSHELF_CHEST = BLOCKS.register("bookshelf_chest",() -> new BookshelfChestBlock(Block.Properties.from(Blocks.BOOKSHELF).hardnessAndResistance(2.5f, 600.0f).harvestTool(ToolType.AXE))); - public static final RegistryObject SAFE_CHEST = BLOCKS.register("safe_chest",() -> new SafeChestBlock(Block.Properties.from(Blocks.IRON_BLOCK).hardnessAndResistance(2.5f, 600.0f).harvestTool(ToolType.PICKAXE))); - //Golem public static final RegistryObject RSG_HEAD = BLOCKS.register("rsg_head",() -> new RedstoneGolemHead(Block.Properties.from(Blocks.STONE))); //No Item Blocks Info - public static final DeferredRegister NO_ITEM_BLOCK = new DeferredRegister<>(ForgeRegistries.BLOCKS, NNOW.MOD_ID); + public static final DeferredRegister NO_ITEM_BLOCK = DeferredRegister.create(ForgeRegistries.BLOCKS, NNOW.MOD_ID); //Bushes - public static final RegistryObject IRONBERRY_BUSH = NO_ITEM_BLOCK.register("iron_berry_bush",() -> new IronBerryBush(Block.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); - public static final RegistryObject GOLDBERRY_BUSH = NO_ITEM_BLOCK.register("gold_berry_bush",() -> new GoldBerryBush(Block.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); - public static final RegistryObject COALBERRY_BUSH = NO_ITEM_BLOCK.register("coal_berry_bush",() -> new CoalBerryBush(Block.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); - public static final RegistryObject REDSTONEBERRY_BUSH = NO_ITEM_BLOCK.register("redstone_berry_bush",() -> new RedstoneBerryBush(Block.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); - public static final RegistryObject QUARTZBERRY_BUSH = NO_ITEM_BLOCK.register("quartz_berry_bush",() -> new QuartzBerryBush(Block.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); - public static final RegistryObject DIAMONDBERRY_BUSH = NO_ITEM_BLOCK.register("diamond_berry_bush",() -> new DiamondBerryBush(Block.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); - public static final RegistryObject EMERALDBERRY_BUSH = NO_ITEM_BLOCK.register("emerald_berry_bush",() -> new EmeraldBerryBush(Block.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); - public static final RegistryObject LAPISBERRY_BUSH = NO_ITEM_BLOCK.register("lapis_berry_bush",() -> new LapisBerryBush(Block.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); - public static final RegistryObject ICEBERRY_BUSH = NO_ITEM_BLOCK.register("ice_berry_bush",() -> new IceberryBush(Block.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); - public static final RegistryObject XP_BUSH = NO_ITEM_BLOCK.register("xp_berry_bush",() -> new ExperienceBerryBush(Block.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); - public static final RegistryObject FIREBERRY_BUSH = NO_ITEM_BLOCK.register("fire_berry_bush",() -> new FireBerryBush(Block.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); - public static final RegistryObject WOODENBERRY_BUSH = NO_ITEM_BLOCK.register("wooden_berry_bush",() -> new WoodenBerryBush(Block.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject IRON_BERRY_BUSH = NO_ITEM_BLOCK.register("iron_berry_bush",() -> new IronBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject GOLD_BERRY_BUSH = NO_ITEM_BLOCK.register("gold_berry_bush",() -> new GoldBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject COAL_BERRY_BUSH = NO_ITEM_BLOCK.register("coal_berry_bush",() -> new CoalBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject REDSTONE_BERRY_BUSH = NO_ITEM_BLOCK.register("redstone_berry_bush",() -> new RedstoneBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject QUARTZ_BERRY_BUSH = NO_ITEM_BLOCK.register("quartz_berry_bush",() -> new QuartzBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject DIAMOND_BERRY_BUSH = NO_ITEM_BLOCK.register("diamond_berry_bush",() -> new DiamondBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject EMERALD_BERRY_BUSH = NO_ITEM_BLOCK.register("emerald_berry_bush",() -> new EmeraldBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject LAPIS_BERRY_BUSH = NO_ITEM_BLOCK.register("lapis_berry_bush",() -> new LapisBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject ICE_BERRY_BUSH = NO_ITEM_BLOCK.register("ice_berry_bush",() -> new IceBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject XP_BERRY_BUSH = NO_ITEM_BLOCK.register("xp_berry_bush",() -> new ExperienceBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject FIRE_BERRY_BUSH = NO_ITEM_BLOCK.register("fire_berry_bush",() -> new FireBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject WOODEN_BERRY_BUSH = NO_ITEM_BLOCK.register("wooden_berry_bush",() -> new WoodenBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject STONE_BERRY_BUSH = NO_ITEM_BLOCK.register("stone_berry_bush",() -> new StoneBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject SAND_BERRY_BUSH = NO_ITEM_BLOCK.register("sand_berry_bush",() -> new SandBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject CLAY_BERRY_BUSH = NO_ITEM_BLOCK.register("clay_berry_bush",() -> new ClayBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject DIRT_BERRY_BUSH = NO_ITEM_BLOCK.register("dirt_berry_bush",() -> new DirtBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject GRAVEL_BERRY_BUSH = NO_ITEM_BLOCK.register("gravel_berry_bush",() -> new GravelBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + + //POI + public static final RegistryObject INGOT_FURNACE = NO_ITEM_BLOCK.register("ingot_furnace",() -> new WaterWell(Block.Properties.from(Blocks.IRON_BLOCK))); //Crops //public static final RegistryObject PEPPER_CROP = NO_ITEM_BLOCK.register("pepper_crop",() -> new CropBlock(Block.Properties.create(Material.PLANTS).doesNotBlockMovement().tickRandomly().hardnessAndResistance(0).sound(SoundType.PLANT),"pepper")); //public static final RegistryObject BARLEY_CROP = NO_ITEM_BLOCK.register("barley_crop", () -> new CropBlock(Block.Properties.create(Material.PLANTS).doesNotBlockMovement().tickRandomly().hardnessAndResistance(0).sound(SoundType.CROP), "barley")); - } diff --git a/src/main/java/com/github/wimpingego/nnow/init/FoodList.java b/src/main/java/com/github/wimpingego/nnow/init/FoodList.java index fa1fdef..da95800 100644 --- a/src/main/java/com/github/wimpingego/nnow/init/FoodList.java +++ b/src/main/java/com/github/wimpingego/nnow/init/FoodList.java @@ -6,14 +6,14 @@ public class FoodList { - public static final Food PEPPER = (new Food.Builder().hunger(2).saturation(0.2F).setAlwaysEdible()).build(); - + //public static final Food PEPPER = (new Food.Builder().hunger(2).saturation(0.2F).setAlwaysEdible()).build(); public static final Food BERRY = (new Food.Builder().hunger(2).saturation(0.2f).setAlwaysEdible().fastToEat()).build(); + public static final Food WEETABIX = (new Food.Builder()).hunger(5).saturation(0.6F).build(); @SuppressWarnings("deprecation") - public static final Food DEATH_POTATO = (new Food.Builder()).hunger(4).saturation(1.2F).effect(new EffectInstance(Effects.REGENERATION, 100, 0), 0.6F).effect(new EffectInstance(Effects.NAUSEA, 240, 1), 1.0F).setAlwaysEdible().build(); - @SuppressWarnings("deprecation") - public static final Food WEETABIX = (new Food.Builder()).hunger(5).saturation(1.2F).effect(new EffectInstance(Effects.STRENGTH, 600, 0), 1.0F).setAlwaysEdible().build(); - + public static final Food DEATH_POTATO = (new Food.Builder()).hunger(4).saturation(1.2F).effect(new EffectInstance(Effects.REGENERATION, 200, 1), 0.6F).effect(new EffectInstance(Effects.NAUSEA, 240, 1), 1.0F).build(); + @SuppressWarnings("deprecation") + public static final Food BOWLOFWEETABIX = (new Food.Builder()).hunger(10).saturation(1.2F).effect(new EffectInstance(Effects.STRENGTH, 600, 2), 1.0F).effect(new EffectInstance(Effects.REGENERATION, 300, 4), 1.0F).build(); + } diff --git a/src/main/java/com/github/wimpingego/nnow/init/ItemList.java b/src/main/java/com/github/wimpingego/nnow/init/ItemList.java index d97087f..505ed10 100644 --- a/src/main/java/com/github/wimpingego/nnow/init/ItemList.java +++ b/src/main/java/com/github/wimpingego/nnow/init/ItemList.java @@ -1,49 +1,43 @@ package com.github.wimpingego.nnow.init; import com.github.wimpingego.nnow.NNOW; -import com.github.wimpingego.nnow.objects.items.CoalNugget; -import com.github.wimpingego.nnow.objects.items.DeathPotato; -import com.github.wimpingego.nnow.objects.items.MusicDisc; -import com.github.wimpingego.nnow.objects.items.Magnet; -import com.github.wimpingego.nnow.objects.items.PokingStick; -import com.github.wimpingego.nnow.objects.items.Viagra; -import com.github.wimpingego.nnow.objects.items.armor.ItemCustomArmorTC; -import com.github.wimpingego.nnow.objects.items.hammers.DiamondHammer; -import com.github.wimpingego.nnow.objects.items.hammers.GoldenHammer; -import com.github.wimpingego.nnow.objects.items.hammers.IronHammer; -import com.github.wimpingego.nnow.objects.items.hammers.StoneHammer; -import com.github.wimpingego.nnow.objects.items.shovel.DiamondSpade; -import com.github.wimpingego.nnow.objects.items.shovel.GoldenSpade; -import com.github.wimpingego.nnow.objects.items.shovel.IronSpade; -import com.github.wimpingego.nnow.objects.items.shovel.StoneSpade; +import com.github.wimpingego.nnow.objects.items.*; +import com.github.wimpingego.nnow.objects.items.armor.*; +import com.github.wimpingego.nnow.objects.items.hammers.*; +import com.github.wimpingego.nnow.objects.items.spades.*; import com.github.wimpingego.nnow.util.enums.ModArmorMaterials; - import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.ArmorItem; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; import net.minecraft.item.ItemTier; +import net.minecraft.item.SoupItem; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; public class ItemList { - public static final DeferredRegister ITEMS = new DeferredRegister<>(ForgeRegistries.ITEMS, NNOW.MOD_ID); + public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, NNOW.MOD_ID); //Bush Blocks - public static final RegistryObject IRONBERRY = ITEMS.register("iron_berry", () -> new BlockItem(BlockList.IRONBERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); - public static final RegistryObject GOLDBERRY = ITEMS.register("gold_berry", () -> new BlockItem(BlockList.GOLDBERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); - public static final RegistryObject COALBERRY = ITEMS.register("coal_berry", () -> new BlockItem(BlockList.COALBERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); - public static final RegistryObject REDSTONEBERRY = ITEMS.register("redstone_berry", () -> new BlockItem(BlockList.REDSTONEBERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); - public static final RegistryObject QUARTZBERRY = ITEMS.register("quartz_berry", () -> new BlockItem(BlockList.QUARTZBERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); - public static final RegistryObject DIAMONDBERRY = ITEMS.register("diamond_berry", () -> new BlockItem(BlockList.DIAMONDBERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); - public static final RegistryObject EMERALDBERRY = ITEMS.register("emerald_berry", () -> new BlockItem(BlockList.EMERALDBERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); - public static final RegistryObject LAPISBERRY = ITEMS.register("lapis_berry", () -> new BlockItem(BlockList.LAPISBERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); - public static final RegistryObject ICEBERRY = ITEMS.register("ice_berry", () -> new BlockItem(BlockList.ICEBERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); - public static final RegistryObject FIREBERRY = ITEMS.register("fire_berry", () -> new BlockItem(BlockList.FIREBERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); - public static final RegistryObject WOODENBERRY = ITEMS.register("wooden_berry", () -> new BlockItem(BlockList.WOODENBERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); - public static final RegistryObject XPBERRY = ITEMS.register("xp_berry", () -> new BlockItem(BlockList.XP_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject IRON_BERRY = ITEMS.register("iron_berry", () -> new BlockItem(BlockList.IRON_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject GOLD_BERRY = ITEMS.register("gold_berry", () -> new BlockItem(BlockList.GOLD_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject COAL_BERRY = ITEMS.register("coal_berry", () -> new BlockItem(BlockList.COAL_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject REDSTONE_BERRY = ITEMS.register("redstone_berry", () -> new BlockItem(BlockList.REDSTONE_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject QUARTZ_BERRY = ITEMS.register("quartz_berry", () -> new BlockItem(BlockList.QUARTZ_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject DIAMOND_BERRY = ITEMS.register("diamond_berry", () -> new BlockItem(BlockList.DIAMOND_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject EMERALD_BERRY = ITEMS.register("emerald_berry", () -> new BlockItem(BlockList.EMERALD_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject LAPIS_BERRY = ITEMS.register("lapis_berry", () -> new BlockItem(BlockList.LAPIS_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject ICE_BERRY = ITEMS.register("ice_berry", () -> new BlockItem(BlockList.ICE_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject FIRE_BERRY = ITEMS.register("fire_berry", () -> new BlockItem(BlockList.FIRE_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject WOODEN_BERRY = ITEMS.register("wooden_berry", () -> new BlockItem(BlockList.WOODEN_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject XP_BERRY = ITEMS.register("xp_berry", () -> new BlockItem(BlockList.XP_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject STONE_BERRY = ITEMS.register("stone_berry", () -> new BlockItem(BlockList.STONE_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject SAND_BERRY = ITEMS.register("sand_berry", () -> new BlockItem(BlockList.SAND_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject CLAY_BERRY = ITEMS.register("clay_berry", () -> new BlockItem(BlockList.CLAY_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject DIRT_BERRY = ITEMS.register("dirt_berry", () -> new BlockItem(BlockList.DIRT_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject GRAVEL_BERRY = ITEMS.register("gravel_berry", () -> new BlockItem(BlockList.GRAVEL_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); //Nuggets public static final RegistryObject COAL_NUGGET = ITEMS.register("coal_nugget", () -> new CoalNugget(new Item.Properties().group(NNOW.NNOW_TAB))); @@ -55,15 +49,15 @@ public class ItemList { public static final RegistryObject ICE_NUGGET = ITEMS.register("ice_nugget", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); public static final RegistryObject FIRE_NUGGET = ITEMS.register("fire_nugget", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); public static final RegistryObject WOODEN_NUGGET = ITEMS.register("wooden_nugget", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); - + //Crops + Food + public static final RegistryObject WEETABIX = ITEMS.register("weetabix", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.WEETABIX))); + public static final RegistryObject BOWL_OF_WEETABIX = ITEMS.register("bowl_of_weetabix", () -> new SoupItem(new Item.Properties().maxStackSize(1).group(NNOW.NNOW_TAB).food(FoodList.BOWLOFWEETABIX))); //public static final RegistryObject PEPPER_SEEDS = ITEMS.register("pepper_seeds", () -> new BlockItem(BlockList.PEPPER_CROP.get(), new Item.Properties().group(NNOW.NNOW_TAB))); //public static final RegistryObject PEPPER = ITEMS.register("pepper", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.PEPPER))); //public static final RegistryObject BARLEY_SEEDS = ITEMS.register("barley_seeds", () -> new BlockItem(BlockList.BARLEY_CROP.get(), new Item.Properties().group(NNOW.NNOW_TAB))); //public static final RegistryObject BARLEY = ITEMS.register("barley", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); - public static final RegistryObject WEETABIX = ITEMS.register("weetabix", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.WEETABIX))); - //Dust public static final RegistryObject STONE_DUST = ITEMS.register("stone_dust", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); public static final RegistryObject SAND_DUST = ITEMS.register("sand_dust", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); @@ -72,29 +66,30 @@ public class ItemList { public static final RegistryObject CLAY_DUST = ITEMS.register("clay_dust", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); //Other items - public static final RegistryObject S_HAMMER = ITEMS.register("stone_hammer", () -> new StoneHammer(ItemTier.STONE, 7, -3.3f, new Item.Properties().group(NNOW.NNOW_TAB))); public static final RegistryObject I_HAMMER = ITEMS.register("iron_hammer", () -> new IronHammer(ItemTier.IRON, 6, -3.2f, new Item.Properties().group(NNOW.NNOW_TAB))); public static final RegistryObject G_HAMMER = ITEMS.register("golden_hammer", () -> new GoldenHammer(ItemTier.GOLD, 7, -3.1f, new Item.Properties().group(NNOW.NNOW_TAB))); public static final RegistryObject D_HAMMER = ITEMS.register("diamond_hammer", () -> new DiamondHammer(ItemTier.DIAMOND, 6, -3.1f, new Item.Properties().group(NNOW.NNOW_TAB))); - + public static final RegistryObject E_HAMMER = ITEMS.register("emerald_hammer", () -> new EmeraldHammer(ItemTier.DIAMOND, 6, -3.1f, new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject S_SPADE = ITEMS.register("stone_spade", () -> new StoneSpade(ItemTier.STONE, 1.5f, -3f, new Item.Properties().group(NNOW.NNOW_TAB))); public static final RegistryObject I_SPADE = ITEMS.register("iron_spade", () -> new IronSpade(ItemTier.IRON, 1.5f, -3f, new Item.Properties().group(NNOW.NNOW_TAB))); public static final RegistryObject G_SPADE = ITEMS.register("golden_spade", () -> new GoldenSpade(ItemTier.GOLD, 1.5f, -3f, new Item.Properties().group(NNOW.NNOW_TAB))); public static final RegistryObject D_SPADE = ITEMS.register("diamond_spade", () -> new DiamondSpade(ItemTier.DIAMOND, 1.5f, -3f, new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject E_SPADE = ITEMS.register("emerald_spade", () -> new EmeraldSpade(ItemTier.DIAMOND, 1.5f, -3f, new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject ENDER_BAG = ITEMS.register("ender_bag", () -> new EnderBag(new Item.Properties().group(NNOW.NNOW_TAB))); public static final RegistryObject POKING_STICK = ITEMS.register("poking_stick", () -> new PokingStick(new Item.Properties().group(NNOW.NNOW_TAB))); public static final RegistryObject MAGNET = ITEMS.register("magnet", () -> new Magnet(new Item.Properties().group(NNOW.NNOW_TAB))); public static final RegistryObject VIAGRA = ITEMS.register("viagra", () -> new Viagra(new Item.Properties().group(NNOW.NNOW_TAB))); public static final RegistryObject DEATH_POTATO = ITEMS.register("death_potato", () -> new DeathPotato(new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.DEATH_POTATO))); + public static final RegistryObject VILLAGER_EGG = ITEMS.register("bun_in_the_oven", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); //Discs - public static final RegistryObject DOOM_MUSIC_DISC = ITEMS.register("doom_disc", () -> new MusicDisc(1, SoundList.DOOM_DISC_LAZY.get(), new Item.Properties().maxStackSize(1).group(NNOW.NNOW_TAB))); public static final RegistryObject MIZZY_MUSIC_DISC = ITEMS.register("mizzy_disc", () -> new MusicDisc(2, SoundList.MIZZY_DISC_LAZY.get(), new Item.Properties().maxStackSize(1).group(NNOW.NNOW_TAB))); //Armour - public static final RegistryObject LC_HELMET = ITEMS.register("clear_leather_helmet",() -> new ArmorItem(ModArmorMaterials.LC, EquipmentSlotType.HEAD, new Item.Properties().group(NNOW.NNOW_TAB))); public static final RegistryObject CC_HELMET = ITEMS.register("clear_chain_helmet",() -> new ArmorItem(ModArmorMaterials.CC, EquipmentSlotType.HEAD, new Item.Properties().group(NNOW.NNOW_TAB))); public static final RegistryObject IC_HELMET = ITEMS.register("clear_iron_helmet",() -> new ArmorItem(ModArmorMaterials.IC, EquipmentSlotType.HEAD, new Item.Properties().group(NNOW.NNOW_TAB))); diff --git a/src/main/java/com/github/wimpingego/nnow/init/MetalBlockList.java b/src/main/java/com/github/wimpingego/nnow/init/MetalBlockList.java new file mode 100644 index 0000000..6f86700 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/init/MetalBlockList.java @@ -0,0 +1,46 @@ +package com.github.wimpingego.nnow.init; + +import com.github.wimpingego.nnow.NNOW; +import com.github.wimpingego.nnow.objects.bushs.metals.*; +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.block.Blocks; +import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +public class MetalBlockList { + + public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS,NNOW.MOD_ID); + + //Metal Blocks + public static final RegistryObject COPPER_BLOCK = BLOCKS.register("copper_block",() -> new Block(Block.Properties.from(Blocks.IRON_BLOCK).hardnessAndResistance(2, 6))); + public static final RegistryObject NICKEL_BLOCK = BLOCKS.register("nickel_block",() -> new Block(Block.Properties.from(Blocks.IRON_BLOCK).hardnessAndResistance(2, 6))); + public static final RegistryObject SILVER_BLOCK = BLOCKS.register("silver_block",() -> new Block(Block.Properties.from(Blocks.IRON_BLOCK).hardnessAndResistance(2, 6))); + public static final RegistryObject URANIUM_BLOCK = BLOCKS.register("uranium_block",() -> new Block(Block.Properties.from(Blocks.IRON_BLOCK).hardnessAndResistance(2, 6))); + public static final RegistryObject LEAD_BLOCK = BLOCKS.register("lead_block",() -> new Block(Block.Properties.from(Blocks.IRON_BLOCK).hardnessAndResistance(2, 6))); + public static final RegistryObject ALUMINUM_BLOCK = BLOCKS.register("aluminum_block",() -> new Block(Block.Properties.from(Blocks.IRON_BLOCK).hardnessAndResistance(2, 6))); + public static final RegistryObject TIN_BLOCK = BLOCKS.register("tin_block",() -> new Block(Block.Properties.from(Blocks.IRON_BLOCK).hardnessAndResistance(2, 6))); + public static final RegistryObject OSMIUM_BLOCK = BLOCKS.register("osmium_block",() -> new Block(Block.Properties.from(Blocks.IRON_BLOCK).hardnessAndResistance(2, 6))); + public static final RegistryObject BISMUTH_BLOCK = BLOCKS.register("bismuth_block",() -> new Block(Block.Properties.from(Blocks.IRON_BLOCK).hardnessAndResistance(2, 6))); + public static final RegistryObject ZINC_BLOCK = BLOCKS.register("zinc_block",() -> new Block(Block.Properties.from(Blocks.IRON_BLOCK).hardnessAndResistance(2, 6))); + public static final RegistryObject PLATINUM_BLOCK = BLOCKS.register("platinum_block",() -> new Block(Block.Properties.from(Blocks.IRON_BLOCK).hardnessAndResistance(2, 6))); + public static final RegistryObject IRIDIUM_BLOCK = BLOCKS.register("iridium_block",() -> new Block(Block.Properties.from(Blocks.IRON_BLOCK).hardnessAndResistance(2, 6))); + + //No Item Blocks Info + public static final DeferredRegister NO_ITEM_BLOCK = DeferredRegister.create(ForgeRegistries.BLOCKS, NNOW.MOD_ID); + + //Metal Bushes + public static final RegistryObject COPPER_BERRY_BUSH = NO_ITEM_BLOCK.register("copper_berry_bush",() -> new CopperBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject NICKEL_BERRY_BUSH = NO_ITEM_BLOCK.register("nickel_berry_bush",() -> new NickelBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject SILVER_BERRY_BUSH = NO_ITEM_BLOCK.register("silver_berry_bush",() -> new SilverBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject URANIUM_BERRY_BUSH = NO_ITEM_BLOCK.register("uranium_berry_bush",() -> new UraniumBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject LEAD_BERRY_BUSH = NO_ITEM_BLOCK.register("lead_berry_bush",() -> new LeadBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject ALUMINUM_BERRY_BUSH = NO_ITEM_BLOCK.register("aluminum_berry_bush",() -> new AluminumBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject TIN_BERRY_BUSH = NO_ITEM_BLOCK.register("tin_berry_bush",() -> new TinBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject OSMIUM_BERRY_BUSH = NO_ITEM_BLOCK.register("osmium_berry_bush",() -> new OsmiumBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject BISMUTH_BERRY_BUSH = NO_ITEM_BLOCK.register("bismuth_berry_bush",() -> new BismuthBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject ZINC_BERRY_BUSH = NO_ITEM_BLOCK.register("zinc_berry_bush",() -> new ZincBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject PLATINUM_BERRY_BUSH = NO_ITEM_BLOCK.register("platinum_berry_bush",() -> new PlatinumBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); + public static final RegistryObject IRIDIUM_BERRY_BUSH = NO_ITEM_BLOCK.register("iridium_berry_bush",() -> new IridiumBerryBush(AbstractBlock.Properties.from(Blocks.SWEET_BERRY_BUSH).tickRandomly())); +} diff --git a/src/main/java/com/github/wimpingego/nnow/init/MetalItemList.java b/src/main/java/com/github/wimpingego/nnow/init/MetalItemList.java new file mode 100644 index 0000000..8473fd6 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/init/MetalItemList.java @@ -0,0 +1,58 @@ +package com.github.wimpingego.nnow.init; + +import com.github.wimpingego.nnow.NNOW; +import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; +import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +public class MetalItemList { + + public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, NNOW.MOD_ID); + + //Metal Berrys + public static final RegistryObject COPPER_BERRY = ITEMS.register("copper_berry", () -> new BlockItem(MetalBlockList.COPPER_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject NICKEL_BERRY = ITEMS.register("nickel_berry", () -> new BlockItem(MetalBlockList.NICKEL_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject SILVER_BERRY = ITEMS.register("silver_berry", () -> new BlockItem(MetalBlockList.SILVER_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject URANIUM_BERRY = ITEMS.register("uranium_berry", () -> new BlockItem(MetalBlockList.URANIUM_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject LEAD_BERRY = ITEMS.register("lead_berry", () -> new BlockItem(MetalBlockList.LEAD_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject ALUMINUM_BERRY = ITEMS.register("aluminum_berry", () -> new BlockItem(MetalBlockList.ALUMINUM_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject TIN_BERRY = ITEMS.register("tin_berry", () -> new BlockItem(MetalBlockList.TIN_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject OSMIUM_BERRY = ITEMS.register("osmium_berry", () -> new BlockItem(MetalBlockList.OSMIUM_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject BISMUTH_BERRY = ITEMS.register("bismuth_berry", () -> new BlockItem(MetalBlockList.BISMUTH_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject ZINC_BERRY = ITEMS.register("zinc_berry", () -> new BlockItem(MetalBlockList.ZINC_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject PLATINUM_BERRY = ITEMS.register("platinum_berry", () -> new BlockItem(MetalBlockList.PLATINUM_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + public static final RegistryObject IRIDIUM_BERRY = ITEMS.register("iridium_berry", () -> new BlockItem(MetalBlockList.IRIDIUM_BERRY_BUSH.get(), new Item.Properties().group(NNOW.NNOW_TAB).food(FoodList.BERRY))); + + //Metal Nuggets + public static final RegistryObject COPPER_NUGGET = ITEMS.register("copper_nugget", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject NICKEL_NUGGET = ITEMS.register("nickel_nugget", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject SILVER_NUGGET = ITEMS.register("silver_nugget", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject URANIUM_NUGGET = ITEMS.register("uranium_nugget", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject LEAD_NUGGET = ITEMS.register("lead_nugget", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject ALUMINUM_NUGGET = ITEMS.register("aluminum_nugget", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject TIN_NUGGET = ITEMS.register("tin_nugget", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject OSMIUM_NUGGET = ITEMS.register("osmium_nugget", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject BISMUTH_NUGGET = ITEMS.register("bismuth_nugget", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject ZINC_NUGGET = ITEMS.register("zinc_nugget", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject PLATINUM_NUGGET = ITEMS.register("platinum_nugget", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject IRIDIUM_NUGGET = ITEMS.register("iridium_nugget", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + + //Metal Ingots + public static final RegistryObject COPPER_INGOT = ITEMS.register("copper_ingot", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject NICKEL_INGOT = ITEMS.register("nickel_ingot", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject SILVER_INGOT = ITEMS.register("silver_ingot", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject URANIUM_INGOT = ITEMS.register("uranium_ingot", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject LEAD_INGOT = ITEMS.register("lead_ingot", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject ALUMINUM_INGOT = ITEMS.register("aluminum_ingot", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject TIN_INGOT = ITEMS.register("tin_ingot", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject OSMIUM_INGOT = ITEMS.register("osmium_ingot", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject BISMUTH_INGOT = ITEMS.register("bismuth_ingot", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject ZINC_INGOT = ITEMS.register("zinc_ingot", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject PLATINUM_INGOT = ITEMS.register("platinum_ingot", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + public static final RegistryObject IRIDIUM_INGOT = ITEMS.register("iridium_ingot", () -> new Item(new Item.Properties().group(NNOW.NNOW_TAB))); + + //Villager Item + public static final RegistryObject INGOT_FURNACE = ITEMS.register("ingot_furnace", () -> new BlockItem(BlockList.INGOT_FURNACE.get(), new Item.Properties().group(NNOW.NNOW_TAB))); +} diff --git a/src/main/java/com/github/wimpingego/nnow/init/SoundList.java b/src/main/java/com/github/wimpingego/nnow/init/SoundList.java index 5b309f0..ed34988 100644 --- a/src/main/java/com/github/wimpingego/nnow/init/SoundList.java +++ b/src/main/java/com/github/wimpingego/nnow/init/SoundList.java @@ -11,11 +11,9 @@ public class SoundList { - public static final DeferredRegister SOUNDS = new DeferredRegister<>(ForgeRegistries.SOUND_EVENTS, - NNOW.MOD_ID); + public static final DeferredRegister SOUNDS = DeferredRegister.create(ForgeRegistries.SOUND_EVENTS,NNOW.MOD_ID); //Doom - public static final RegistryObject DOOM_SOUND = SOUNDS.register("item.doom_sound", () -> new SoundEvent(new ResourceLocation(NNOW.MOD_ID, "item.doom_sound"))); @@ -25,7 +23,6 @@ public class SoundList { public static final RegistryObject DOOM_DISC = SOUNDS.register("item.doom_disc.disc", DOOM_DISC_LAZY); //Mizzy - public static final RegistryObject MIZZY_SOUND = SOUNDS.register("item.mizzy_sound", () -> new SoundEvent(new ResourceLocation(NNOW.MOD_ID, "item.mizzy_sound"))); diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/AGBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/AGBlock.java index 766b608..4e945fb 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/AGBlock.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/AGBlock.java @@ -1,44 +1,69 @@ package com.github.wimpingego.nnow.objects.blocks; +import com.github.wimpingego.nnow.init.BlockList; + import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.block.material.Material; -import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.block.Blocks; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockReader; -import net.minecraftforge.common.IPlantable; -import net.minecraftforge.common.PlantType; public class AGBlock extends Block { public AGBlock(Properties properties) { super(properties); } - - @Override - public boolean canSustainPlant(BlockState state, IBlockReader blockReader, BlockPos pos, Direction direction, IPlantable iPlantable) { - final BlockPos plantPos = new BlockPos(pos.getX(), pos.getY() + 1, pos.getZ()); - final PlantType plantType = iPlantable.getPlantType(blockReader, plantPos); - - switch (plantType) { - case Desert: { - return true; - } - case Water: { - return blockReader.getBlockState(pos).getMaterial() == Material.WATER && blockReader.getBlockState(pos) == getDefaultState(); - } - case Beach: { - return ((blockReader.getBlockState(pos.east()).getMaterial() == Material.WATER || blockReader.getBlockState(pos.east()).has(BlockStateProperties.WATERLOGGED)) - || (blockReader.getBlockState(pos.west()).getMaterial() == Material.WATER || blockReader.getBlockState(pos.west()).has(BlockStateProperties.WATERLOGGED)) - || (blockReader.getBlockState(pos.north()).getMaterial() == Material.WATER || blockReader.getBlockState(pos.north()).has(BlockStateProperties.WATERLOGGED)) - || (blockReader.getBlockState(pos.south()).getMaterial() == Material.WATER || blockReader.getBlockState(pos.south()).has(BlockStateProperties.WATERLOGGED)) - || (blockReader.getBlockState(pos.down()).getMaterial() == Material.WATER || blockReader.getBlockState(pos.down()).has(BlockStateProperties.WATERLOGGED))); - } - default: - break; - } - return false; - } + @Override + public boolean canSustainPlant(BlockState state, IBlockReader world, BlockPos pos, Direction facing, net.minecraftforge.common.IPlantable plantable) { + BlockState plant = plantable.getPlant(world, pos.offset(facing)); + net.minecraftforge.common.PlantType type = plantable.getPlantType(world, pos.offset(facing)); + + if (plant.getBlock() == Blocks.CACTUS) + return state.isIn(Blocks.CACTUS) || this.getBlock() == BlockList.AGG_BLOCK.get() + || this.getBlock() == BlockList.AGRS_BLOCK.get() || this.getBlock() == BlockList.AGS_BLOCK.get(); + + if (plant.getBlock() == Blocks.SUGAR_CANE && this == Blocks.SUGAR_CANE) + return true; + + //if (plantable instanceof BushBlock && ((BushBlock)plantable).isValidGround(state, world, pos)) + //return true; + + if (net.minecraftforge.common.PlantType.DESERT.equals(type)) { + return this.getBlock() == BlockList.AGG_BLOCK.get() || this.getBlock() == BlockList.AGRS_BLOCK.get() || this.getBlock() == BlockList.AGS_BLOCK.get(); +// } else if (net.minecraftforge.common.PlantType.NETHER.equals(type)) { +// return this.getBlock() == Blocks.SOUL_SAND; +// } else if (net.minecraftforge.common.PlantType.CROP.equals(type)) { +// return state.isIn(Blocks.FARMLAND); +// } else if (net.minecraftforge.common.PlantType.CAVE.equals(type)) { +// return Block.hasSolidSide(state, world, pos, Direction.UP); + } else if (net.minecraftforge.common.PlantType.PLAINS.equals(type)) { + return this.getBlock() == BlockList.AGG_BLOCK.get() || this.getBlock() == BlockList.AGRS_BLOCK.get() || this.getBlock() == BlockList.AGS_BLOCK.get(); + } else if (net.minecraftforge.common.PlantType.WATER.equals(type)) { + return state.getMaterial() == net.minecraft.block.material.Material.WATER; //&& state.getValue(BlockLiquidWrapper) + } else if (net.minecraftforge.common.PlantType.BEACH.equals(type)) { + boolean isBeach = this.getBlock() == BlockList.AGG_BLOCK.get() || this.getBlock() == BlockList.AGRS_BLOCK.get() || this.getBlock() == BlockList.AGS_BLOCK.get(); + boolean hasWater = false; + for (Direction face : Direction.Plane.HORIZONTAL) { + BlockState blockState = world.getBlockState(pos.offset(face)); + net.minecraft.fluid.FluidState fluidState = world.getFluidState(pos.offset(face)); + hasWater |= blockState.isIn(Blocks.FROSTED_ICE); + hasWater |= fluidState.isTagged(net.minecraft.tags.FluidTags.WATER); + if (hasWater) + break; //No point continuing. + } + + for (Direction face : Direction.Plane.VERTICAL) { + BlockState blockState = world.getBlockState(pos.offset(face)); + net.minecraft.fluid.FluidState fluidState = world.getFluidState(pos.offset(face)); + hasWater |= blockState.isIn(Blocks.FROSTED_ICE); + hasWater |= fluidState.isTagged(net.minecraft.tags.FluidTags.WATER); + if (hasWater) + break; //No point continuing. + } + return isBeach && hasWater; + } + return false; + } } diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/BookshelfChestBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/BookshelfChestBlock.java deleted file mode 100644 index e8c3bdd..0000000 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/BookshelfChestBlock.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.github.wimpingego.nnow.objects.blocks; - -import com.github.wimpingego.nnow.entities.ModTileEntityTypes; -import com.github.wimpingego.nnow.init.BlockList; -import com.github.wimpingego.nnow.tileentity.BookshelfChestTileEntity; -import com.github.wimpingego.nnow.util.ModConfigs; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.inventory.InventoryHelper; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; -import net.minecraftforge.fml.network.NetworkHooks; - -public class BookshelfChestBlock extends Block { - - public BookshelfChestBlock(Properties properties) { - super(properties); - } - - int value = ModConfigs.ENCHANT_POWER.get(); - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return ModTileEntityTypes.BOOKSHELF_CHEST.get().create(); - } - - @Override - public ActionResultType onBlockActivated(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, - Hand handIn, BlockRayTraceResult result) { - if (!worldIn.isRemote) { - TileEntity tile = worldIn.getTileEntity(pos); - if (tile instanceof BookshelfChestTileEntity) { - NetworkHooks.openGui((ServerPlayerEntity) player, (BookshelfChestTileEntity) tile, pos); - return ActionResultType.SUCCESS; - } - } - return ActionResultType.FAIL; - } - - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (state.getBlock() != newState.getBlock()) { - TileEntity te = worldIn.getTileEntity(pos); - if (te instanceof BookshelfChestTileEntity) { - InventoryHelper.dropItems(worldIn, pos, ((BookshelfChestTileEntity) te).getItems()); - } - } - } - - @Override - public float getEnchantPowerBonus(BlockState state, IWorldReader world, BlockPos pos) - { - return this.getBlock() == BlockList.BOOKSHELF_CHEST.get() ? value: 0; - } -} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/CobbleGen.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/CobbleGen.java index b3dd12e..bd3dcf7 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/CobbleGen.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/CobbleGen.java @@ -20,7 +20,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; @@ -213,7 +212,7 @@ public ActionResultType onBlockActivated(BlockState state, World worldIn, BlockP public void addInformation(ItemStack stack, @Nullable IBlockReader worldIn, List tooltip, ITooltipFlag flagIn) { super.addInformation(stack, worldIn, tooltip, flagIn); - tooltip.add((new TranslationTextComponent("item.nnow.cobblegen.line1").applyTextStyle(TextFormatting.GREEN))); - tooltip.add((new TranslationTextComponent("item.nnow.cobblegen.general.line1").applyTextStyle(TextFormatting.YELLOW))); + tooltip.add((new TranslationTextComponent("item.nnow.cobblegen.line1"))); + tooltip.add((new TranslationTextComponent("item.nnow.cobblegen.general.line1"))); } } \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/DarkGlass.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/DarkGlass.java index bce0c39..e059707 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/DarkGlass.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/DarkGlass.java @@ -15,7 +15,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.IBlockReader; import net.minecraftforge.api.distmarker.Dist; @@ -39,6 +38,6 @@ public int getOpacity (BlockState state, IBlockReader world, BlockPos pos) { public void addInformation(ItemStack stack, @Nullable IBlockReader worldIn, List tooltip, ITooltipFlag flagIn) { super.addInformation(stack, worldIn, tooltip, flagIn); - tooltip.add((new TranslationTextComponent("item.nnow.witherproof.line1").applyTextStyle(TextFormatting.GRAY))); + tooltip.add((new TranslationTextComponent("item.nnow.witherproof.line1"))); } } diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/EndLantern.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/EndLantern.java deleted file mode 100644 index 230d6da..0000000 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/EndLantern.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.github.wimpingego.nnow.objects.blocks; - -import net.minecraft.block.LanternBlock; - -public class EndLantern extends LanternBlock{ - - public EndLantern(Properties properties) { - super(properties); - - } - -} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/LavaWell.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/LavaWell.java index 6aa6f88..f87f6c1 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/LavaWell.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/LavaWell.java @@ -19,7 +19,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; @@ -77,7 +76,7 @@ else if (!player.inventory.addItemStackToInventory(itemstack1)) public void addInformation(ItemStack stack, @Nullable IBlockReader worldIn, List tooltip, ITooltipFlag flagIn) { super.addInformation(stack, worldIn, tooltip, flagIn); - tooltip.add((new TranslationTextComponent("item.nnow.lavawell.line1").applyTextStyle(TextFormatting.RED))); - tooltip.add((new TranslationTextComponent("item.nnow.lavawell.general.line1").applyTextStyle(TextFormatting.YELLOW))); + tooltip.add((new TranslationTextComponent("item.nnow.lavawell.line1"))); + tooltip.add((new TranslationTextComponent("item.nnow.lavawell.general.line1"))); } } \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/RedstoneGolemHead.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/RedstoneGolemHead.java index 3cf386f..bc17f27 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/RedstoneGolemHead.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/RedstoneGolemHead.java @@ -2,7 +2,6 @@ import javax.annotation.Nullable; import com.github.wimpingego.nnow.init.ItemList; -import com.github.wimpingego.nnow.util.ModConfigs; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -28,7 +27,6 @@ public class RedstoneGolemHead extends Block { public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; - double DropChance = ModConfigs.DROP_CHANCE.get(); public RedstoneGolemHead(Properties properties) { super(properties); @@ -54,130 +52,7 @@ protected void fillStateContainer(StateContainer.Builder buil public ActionResultType onBlockActivated(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) { ItemStack itemstack = player.getHeldItem(handIn); - - //DUST TO BLOCK - - if (itemstack.getItem() == Items.REDSTONE) - { - itemstack.shrink(1); - ItemStack itemstack1; - itemstack1 = new ItemStack(Items.REDSTONE, 1 + RANDOM.nextInt(2)); - - if (itemstack.isEmpty()) - { - player.setHeldItem(handIn, itemstack1); - return ActionResultType.SUCCESS; - } - - else if (!player.inventory.addItemStackToInventory(itemstack1)) - { - player.dropItem(itemstack1, false); - return ActionResultType.SUCCESS; - } - } - - //NNOW DUST - - if (itemstack.getItem() == ItemList.STONE_DUST.get()) - { - itemstack.shrink(1); - ItemStack itemstack1; - itemstack1 = new ItemStack(ItemList.STONE_DUST.get(), 1 + RANDOM.nextInt(2)); - - if (itemstack.isEmpty()) - { - player.setHeldItem(handIn, itemstack1); - - return ActionResultType.SUCCESS; - } - else if (!player.inventory.addItemStackToInventory(itemstack1)) - { - player.dropItem(itemstack1, false); - - return ActionResultType.SUCCESS; - } - } - - if (itemstack.getItem() == ItemList.SAND_DUST.get()) - { - itemstack.shrink(1); - ItemStack itemstack1; - itemstack1 = new ItemStack(ItemList.SAND_DUST.get(), 1 + RANDOM.nextInt(2)); - - if (itemstack.isEmpty()) - { - player.setHeldItem(handIn, itemstack1); - - return ActionResultType.SUCCESS; - } - else if (!player.inventory.addItemStackToInventory(itemstack1)) - { - player.dropItem(itemstack1, false); - - return ActionResultType.SUCCESS; - } - } - - if (itemstack.getItem() == ItemList.DIRT_DUST.get()) - { - itemstack.shrink(1); - ItemStack itemstack1; - itemstack1 = new ItemStack(ItemList.DIRT_DUST.get(), 1 + RANDOM.nextInt(2)); - - if (itemstack.isEmpty()) - { - player.setHeldItem(handIn, itemstack1); - - return ActionResultType.SUCCESS; - } - else if (!player.inventory.addItemStackToInventory(itemstack1)) - { - player.dropItem(itemstack1, false); - - return ActionResultType.SUCCESS; - } - } - - if (itemstack.getItem() == ItemList.GRAVEL_DUST.get()) - { - itemstack.shrink(1); - ItemStack itemstack1; - itemstack1 = new ItemStack(ItemList.GRAVEL_DUST.get(), 1 + RANDOM.nextInt(2)); - - if (itemstack.isEmpty()) - { - player.setHeldItem(handIn, itemstack1); - - return ActionResultType.SUCCESS; - } - else if (!player.inventory.addItemStackToInventory(itemstack1)) - { - player.dropItem(itemstack1, false); - - return ActionResultType.SUCCESS; - } - } - - if (itemstack.getItem() == ItemList.CLAY_DUST.get()) - { - itemstack.shrink(1); - ItemStack itemstack1; - itemstack1 = new ItemStack(ItemList.CLAY_DUST.get(), 1 + RANDOM.nextInt(2)); - - if (itemstack.isEmpty()) - { - player.setHeldItem(handIn, itemstack1); - - return ActionResultType.SUCCESS; - } - else if (!player.inventory.addItemStackToInventory(itemstack1)) - { - player.dropItem(itemstack1, false); - - return ActionResultType.SUCCESS; - } - } - + if (itemstack.getItem() == ItemList.DEATH_POTATO.get()) { itemstack.shrink(1); diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/SafeChestBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/SafeChestBlock.java deleted file mode 100644 index fb6415b..0000000 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/SafeChestBlock.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.github.wimpingego.nnow.objects.blocks; - -import javax.annotation.Nullable; - -import com.github.wimpingego.nnow.entities.ModTileEntityTypes; -import com.github.wimpingego.nnow.tileentity.SafeChestTileEntity; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.DirectionalBlock; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.inventory.InventoryHelper; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.state.DirectionProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.Rotation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; -import net.minecraftforge.fml.network.NetworkHooks; - -public class SafeChestBlock extends DirectionalBlock { - - public static final DirectionProperty NORTH = DirectionalBlock.FACING; - public static final DirectionProperty EAST = DirectionalBlock.FACING; - public static final DirectionProperty SOUTH = DirectionalBlock.FACING; - public static final DirectionProperty WEST = DirectionalBlock.FACING; - public static final DirectionProperty UP = DirectionalBlock.FACING; - public static final DirectionProperty DOWN = DirectionalBlock.FACING; - - public SafeChestBlock(Block.Properties builder) { - super(builder); - } - - @Nullable - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - return this.getDefaultState().with(NORTH, context.getNearestLookingDirection().getOpposite()); - } - - @Override - public BlockState rotate(BlockState state, IWorld world, BlockPos pos, Rotation direction) { - return state.with(NORTH, direction.rotate(state.get(SOUTH))); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(NORTH ); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return ModTileEntityTypes.SAFE_CHEST.get().create(); - } - - @Override - public ActionResultType onBlockActivated(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, - Hand handIn, BlockRayTraceResult result) { - if (!worldIn.isRemote) { - TileEntity tile = worldIn.getTileEntity(pos); - if (tile instanceof SafeChestTileEntity) { - NetworkHooks.openGui((ServerPlayerEntity) player, (SafeChestTileEntity) tile, pos); - return ActionResultType.SUCCESS; - } - } - return ActionResultType.FAIL; - } - - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (state.getBlock() != newState.getBlock()) { - TileEntity te = worldIn.getTileEntity(pos); - if (te instanceof SafeChestTileEntity) { - InventoryHelper.dropItems(worldIn, pos, ((SafeChestTileEntity) te).getItems()); - } - } - } -} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/SuperObsidian.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/SuperObsidian.java index 88f633d..aa511dc 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/SuperObsidian.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/SuperObsidian.java @@ -11,7 +11,6 @@ import net.minecraft.client.util.ITooltipFlag; import net.minecraft.item.ItemStack; import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.IBlockReader; import net.minecraftforge.api.distmarker.Dist; @@ -32,6 +31,6 @@ public SuperObsidian() { public void addInformation(ItemStack stack, @Nullable IBlockReader worldIn, List tooltip, ITooltipFlag flagIn) { super.addInformation(stack, worldIn, tooltip, flagIn); - tooltip.add((new TranslationTextComponent("item.nnow.witherproof.line1").applyTextStyle(TextFormatting.GRAY))); + tooltip.add((new TranslationTextComponent("item.nnow.witherproof.line1"))); } } diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/WaterWell.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/WaterWell.java index ce10cf5..7c31b3b 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/WaterWell.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/WaterWell.java @@ -19,7 +19,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; @@ -77,7 +76,7 @@ else if (!player.inventory.addItemStackToInventory(itemstack1)) public void addInformation(ItemStack stack, @Nullable IBlockReader worldIn, List tooltip, ITooltipFlag flagIn) { super.addInformation(stack, worldIn, tooltip, flagIn); - tooltip.add((new TranslationTextComponent("item.nnow.waterwell.line1").applyTextStyle(TextFormatting.BLUE))); - tooltip.add((new TranslationTextComponent("item.nnow.waterwell.general.line1").applyTextStyle(TextFormatting.YELLOW))); + tooltip.add((new TranslationTextComponent("item.nnow.waterwell.line1"))); + tooltip.add((new TranslationTextComponent("item.nnow.waterwell.general.line1"))); } } diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/BeekeeperBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/BeekeeperBlock.java similarity index 98% rename from src/main/java/com/github/wimpingego/nnow/objects/blocks/BeekeeperBlock.java rename to src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/BeekeeperBlock.java index 55a0812..b03627c 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/BeekeeperBlock.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/BeekeeperBlock.java @@ -1,4 +1,4 @@ -package com.github.wimpingego.nnow.objects.blocks; +package com.github.wimpingego.nnow.objects.blocks.poi; import javax.annotation.Nullable; diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/DirectionalBaseBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/DirectionalBaseBlock.java new file mode 100644 index 0000000..8ea8fc9 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/DirectionalBaseBlock.java @@ -0,0 +1,44 @@ +package com.github.wimpingego.nnow.objects.blocks.poi; + +import javax.annotation.Nullable; +import com.github.wimpingego.nnow.util.ModConfigs; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.DirectionalBlock; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.state.DirectionProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.state.properties.BlockStateProperties; + +public class DirectionalBaseBlock extends DirectionalBlock { + + public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + + int wcost = ModConfigs.W_COST.get(); + int wreturn = ModConfigs.W_RETURN.get(); + int scost = ModConfigs.S_COST.get(); + int sreturn = ModConfigs.S_RETURN.get(); + int icost = ModConfigs.I_COST.get(); + int ireturn = ModConfigs.I_RETURN.get(); + int gcost = ModConfigs.G_COST.get(); + int greturn = ModConfigs.G_RETURN.get(); + int dcost = ModConfigs.D_COST.get(); + int dreturn = ModConfigs.D_RETURN.get(); + + public DirectionalBaseBlock(Properties properties) + { + super(properties); + } + + @Nullable + @Override + public BlockState getStateForPlacement(BlockItemUseContext context) { + return getDefaultState().with(FACING, context.getPlacementHorizontalFacing().getOpposite()); + } + + @Override + protected void fillStateContainer(StateContainer.Builder builder) { + builder.add(FACING); + } + +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/DoubleHighBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/DoubleHighBlock.java similarity index 98% rename from src/main/java/com/github/wimpingego/nnow/objects/blocks/DoubleHighBlock.java rename to src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/DoubleHighBlock.java index 3fdddaa..7378643 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/DoubleHighBlock.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/DoubleHighBlock.java @@ -1,4 +1,4 @@ -package com.github.wimpingego.nnow.objects.blocks; +package com.github.wimpingego.nnow.objects.blocks.poi; import net.minecraft.block.Block; import net.minecraft.block.BlockState; diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/EndTraderBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/EndTraderBlock.java new file mode 100644 index 0000000..f6c3db5 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/EndTraderBlock.java @@ -0,0 +1,89 @@ +package com.github.wimpingego.nnow.objects.blocks.poi; + +import com.github.wimpingego.nnow.init.ItemList; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.World; + +public class EndTraderBlock extends Block { + + public EndTraderBlock(Properties properties) { + super(properties); + } + + @SuppressWarnings("deprecation") + public ActionResultType onBlockActivated(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) + { + ItemStack itemstack = player.getHeldItem(handIn); + + if (itemstack.getItem() == ItemList.DEATH_POTATO.get()) + { + itemstack.shrink(1); + ItemStack itemstack1; + itemstack1 = new ItemStack(Items.ENDER_PEARL,8 + RANDOM.nextInt(4)); + + if (itemstack.isEmpty()) + { + player.setHeldItem(handIn, itemstack1); + + return ActionResultType.SUCCESS; + } + else if (!player.inventory.addItemStackToInventory(itemstack1)) + { + player.dropItem(itemstack1, false); + + return ActionResultType.SUCCESS; + } + } + + if (itemstack.getItem() == Items.STONE) + { + itemstack.shrink(1); + ItemStack itemstack1; + itemstack1 = new ItemStack(Items.END_STONE,1 + RANDOM.nextInt(2)); + + if (itemstack.isEmpty()) + { + player.setHeldItem(handIn, itemstack1); + + return ActionResultType.SUCCESS; + } + else if (!player.inventory.addItemStackToInventory(itemstack1)) + { + player.dropItem(itemstack1, false); + + return ActionResultType.SUCCESS; + } + } + + if (itemstack.getItem() == Items.STONE_BRICKS) + { + itemstack.shrink(1); + ItemStack itemstack1; + itemstack1 = new ItemStack(Items.END_STONE_BRICKS,1 + RANDOM.nextInt(2)); + + if (itemstack.isEmpty()) + { + player.setHeldItem(handIn, itemstack1); + + return ActionResultType.SUCCESS; + } + else if (!player.inventory.addItemStackToInventory(itemstack1)) + { + player.dropItem(itemstack1, false); + + return ActionResultType.SUCCESS; + } + } + + return super.onBlockActivated(state, worldIn, pos, player, handIn, hit); + } + +} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapBlockWither.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/MonsterTrapperBlock.java similarity index 55% rename from src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapBlockWither.java rename to src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/MonsterTrapperBlock.java index c875226..271793b 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapBlockWither.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/MonsterTrapperBlock.java @@ -1,16 +1,11 @@ -package com.github.wimpingego.nnow.objects.blocks.traps; +package com.github.wimpingego.nnow.objects.blocks.poi; import javax.annotation.Nullable; -import com.github.wimpingego.nnow.util.IExplosionResistant; -import com.github.wimpingego.nnow.util.NNOWFakePlayer; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.DirectionalBlock; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; import net.minecraft.item.BlockItemUseContext; import net.minecraft.state.DirectionProperty; import net.minecraft.state.StateContainer.Builder; @@ -21,16 +16,15 @@ import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.IWorld; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; + /* @author: Naxanria @edits: Wimpingego */ -public class TrapBlockWither extends Block implements IExplosionResistant{ - +public class MonsterTrapperBlock extends Block { + public static final VoxelShape NORTH_SHAPE = makeCuboidShape(0.05D * 16, 0.05D * 16, 0.0D * 16, 0.95 * 16, 0.95D * 16, 0.25D * 16); @@ -56,57 +50,25 @@ public class TrapBlockWither extends Block implements IExplosionResistant{ public static final DirectionProperty UP = DirectionalBlock.FACING; public static final DirectionProperty DOWN = DirectionalBlock.FACING; + public MonsterTrapperBlock(Properties properties) { + super(properties); + } + + @Nullable + @Override + public BlockState getStateForPlacement(BlockItemUseContext context) { + return this.getDefaultState().with(NORTH, context.getNearestLookingDirection().getOpposite()); + } -private final TrapType type; - -public TrapBlockWither(Properties properties, TrapType type) -{ - super(properties); - this.type = type; -} - -@Nullable -@Override -public BlockState getStateForPlacement(BlockItemUseContext context) { - return this.getDefaultState().with(NORTH, context.getNearestLookingDirection().getOpposite()); -} - -@Override -public BlockState rotate(BlockState state, IWorld world, BlockPos pos, Rotation direction) { - return state.with(NORTH, direction.rotate(state.get(SOUTH))); -} - -@Override -protected void fillStateContainer(Builder builder) { - builder.add(NORTH); -} - -@Override -public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn) { - if (entityIn instanceof LivingEntity && entityIn.getType() != EntityType.PLAYER - && entityIn.getType() != EntityType.VILLAGER) //{ - - if (entityIn instanceof LivingEntity) - { - LivingEntity livingEntity = (LivingEntity) entityIn; - if (type.lethal || livingEntity.getHealth() > 1f) - { - TrapDamageSource spikeDmgSource = new TrapDamageSource(type); - if (type.isPlayer) - { - NNOWFakePlayer fakePlayer = NNOWFakePlayer.getInstance((ServerWorld) worldIn).get(); - - if (fakePlayer != null) - { - spikeDmgSource.setSource(fakePlayer); - } - } - - livingEntity.attackEntityFrom(spikeDmgSource, type.damage); - - } - } -} + @Override + public BlockState rotate(BlockState state, IWorld world, BlockPos pos, Rotation direction) { + return state.with(NORTH, direction.rotate(state.get(SOUTH))); + } + + @Override + protected void fillStateContainer(Builder builder) { + builder.add(NORTH); + } @Override public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/NetherTraderBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/NetherTraderBlock.java new file mode 100644 index 0000000..e3b66fb --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/poi/NetherTraderBlock.java @@ -0,0 +1,87 @@ +package com.github.wimpingego.nnow.objects.blocks.poi; + +import javax.annotation.Nullable; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.DirectionalBlock; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.state.DirectionProperty; +import net.minecraft.state.StateContainer.Builder; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.util.Rotation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; + + + +public class NetherTraderBlock extends Block { + public static final VoxelShape NORTHS = makeCuboidShape(0.0D*16, 0.0D*16, 0.0D*16, 1.0D*16, 1.0D*16, 1.0D*16); + public static final VoxelShape WESTS = makeCuboidShape(0.0D*16, 0.0D*16, 0.0D*16, 1.0D*16, 1.0D*16, 1.0D*16); + public static final VoxelShape SOUTHS = makeCuboidShape(0.0D*16, 0.0D*16, 0.0D*16, 1.0D*16, 1.0D*16, 1.0D*16); + public static final VoxelShape EASTS = makeCuboidShape(0.0D*16, 0.0D*16, 0.0D*16, 1.0D*16, 1.0D*16, 1.0D*16); + public static final VoxelShape UPS = makeCuboidShape(0.0D*16, 0.0D*16, 0.0D*16, 1.0D*16, 1.0D*16, 1.0D*16); + public static final VoxelShape DOWNS = makeCuboidShape(0.0D*16, 0.0D*16, 0.0D*16, 1.0D*16, 1.0D*16, 1.0D*16); + + public static final DirectionProperty NORTH = DirectionalBlock.FACING; + public static final DirectionProperty EAST = DirectionalBlock.FACING; + public static final DirectionProperty SOUTH = DirectionalBlock.FACING; + public static final DirectionProperty WEST = DirectionalBlock.FACING; + public static final DirectionProperty UP = DirectionalBlock.FACING; + public static final DirectionProperty DOWN = DirectionalBlock.FACING; + + public NetherTraderBlock(Properties properties) { + super(properties); +} + + @Nullable + @Override + public BlockState getStateForPlacement(BlockItemUseContext context) { + return this.getDefaultState().with(NORTH, context.getNearestLookingDirection().getOpposite()); + } + + @Override + public BlockState rotate(BlockState state, IWorld world, BlockPos pos, Rotation direction) { + return state.with(NORTH, direction.rotate(state.get(SOUTH))); + } + + @Override + protected void fillStateContainer(Builder builder) { + builder.add(NORTH); + } + + public void setBlockBoundsForItemRender() { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F, 1.0F); + } + + private void setBlockBounds(float f, float g, float h, float i, float j, float k) { + } + + @Override + @Deprecated + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + switch(state.get(BlockStateProperties.FACING)) { + case DOWN: + return DOWNS; + case EAST: + return EASTS; + case NORTH: + return NORTHS; + case SOUTH: + return SOUTHS; + case UP: + return UPS; + case WEST: + return WESTS; + default: + return NORTHS; + } + } + + public VoxelShape getCollisionShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { + return this.getShape(state, worldIn, pos, context); + } +} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/BirchSlab.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/BirchSlab.java index 4a8ae4c..f6024ad 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/BirchSlab.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/BirchSlab.java @@ -13,7 +13,7 @@ import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.state.properties.SlabType; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.ILightReader; +import net.minecraft.world.IBlockDisplayReader; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; @@ -42,7 +42,7 @@ public boolean isTransparent(BlockState state) { public static class ColorHandler implements IBlockColor { - public int getColor(BlockState state, @Nullable ILightReader reader , @Nullable BlockPos blockPos, int tintIndex) + public int getColor(BlockState state, @Nullable IBlockDisplayReader reader , @Nullable BlockPos blockPos, int tintIndex) { //if(reader != null && blockPos != null) diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/GrassSlab.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/GrassSlab.java index 81f3eca..0a9cd1a 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/GrassSlab.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/GrassSlab.java @@ -8,18 +8,27 @@ import net.minecraft.block.BlockState; import net.minecraft.block.SlabBlock; import net.minecraft.client.renderer.color.IBlockColor; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ShovelItem; import net.minecraft.state.BooleanProperty; import net.minecraft.state.StateContainer; import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.state.properties.SlabType; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.world.GrassColors; -import net.minecraft.world.ILightReader; +import net.minecraft.world.IBlockDisplayReader; +import net.minecraft.world.World; import net.minecraft.world.biome.BiomeColors; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; +import com.github.wimpingego.nnow.util.SlabAction; + @EventBusSubscriber(modid=NNOW.MOD_ID, bus=Bus.MOD, value=Dist.CLIENT) public class GrassSlab extends SlabBlock { @@ -44,7 +53,7 @@ public boolean isTransparent(BlockState state) { public static class ColorHandler implements IBlockColor { - public int getColor(BlockState state, @Nullable ILightReader reader , @Nullable BlockPos blockPos, int tintIndex) + public int getColor(BlockState state, @Nullable IBlockDisplayReader reader , @Nullable BlockPos blockPos, int tintIndex) { if(reader != null && blockPos != null) @@ -55,4 +64,18 @@ public int getColor(BlockState state, @Nullable ILightReader reader , @Nullable } } + @Override + public ActionResultType onBlockActivated(BlockState state, World worldIn, BlockPos pos, + PlayerEntity playerIn, Hand hand, BlockRayTraceResult p_225533_6_) + { + + ItemStack itemStack = playerIn.getHeldItem(hand); + + if (itemStack.getItem() instanceof ShovelItem) + return SlabAction.onItemUseSpade(state, worldIn, pos, playerIn, hand, p_225533_6_); + + return ActionResultType.FAIL; + + } + } diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/LeafSlab.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/LeafSlab.java index 33a241c..795aaff 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/LeafSlab.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/LeafSlab.java @@ -13,7 +13,7 @@ import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.state.properties.SlabType; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.ILightReader; +import net.minecraft.world.IBlockDisplayReader; import net.minecraft.world.biome.BiomeColors; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; @@ -43,7 +43,7 @@ public boolean isTransparent(BlockState state) { public static class ColorHandler implements IBlockColor { - public int getColor(BlockState state, @Nullable ILightReader reader , @Nullable BlockPos blockPos, int tintIndex) + public int getColor(BlockState state, @Nullable IBlockDisplayReader reader , @Nullable BlockPos blockPos, int tintIndex) { if(reader != null && blockPos != null) diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/PathSlab.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/PathSlab.java new file mode 100644 index 0000000..384d551 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/PathSlab.java @@ -0,0 +1,138 @@ +package com.github.wimpingego.nnow.objects.blocks.slabs; + +import com.github.wimpingego.nnow.NNOW; +import com.github.wimpingego.nnow.init.BlockList; + + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.FenceGateBlock; +import net.minecraft.block.IWaterLoggable; +import net.minecraft.block.SlabBlock; +import net.minecraft.fluid.FluidState; +import net.minecraft.fluid.Fluids; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.pathfinding.PathType; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.StateContainer; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.state.properties.SlabType; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; + +import javax.annotation.Nullable; + +@EventBusSubscriber(modid=NNOW.MOD_ID, bus=Bus.MOD, value=Dist.CLIENT) +public class PathSlab extends SlabBlock implements IWaterLoggable +{ + + private static final VoxelShape BOTTOM_SHAPE = Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 8.0D, 16.0D); + private static final VoxelShape TOP_SHAPE = Block.makeCuboidShape(0.0D, 8.0D, 0.0D, 16.0D, 15.0D, 16.0D); + private static final VoxelShape DOUBLE_SHAPE = Block.makeCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 15.0D, 16.0D); + private static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; + + public PathSlab() + { + super(Block.Properties.from(Blocks.GRASS_PATH)); + this.setDefaultState(this.getDefaultState().with(SlabBlock.TYPE, SlabType.BOTTOM).with(WATERLOGGED, Boolean.FALSE)); + } + + protected void fillStateContainer(StateContainer.Builder builder) + { + builder.add(SlabBlock.TYPE, WATERLOGGED); + } + + @Override + public boolean isTransparent(BlockState state) { + return state.get(SlabBlock.TYPE) != SlabType.DOUBLE; + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) + { + SlabType slabtype = state.get(SlabBlock.TYPE); + switch (slabtype) + { + case DOUBLE: + return PathSlab.DOUBLE_SHAPE; + case TOP: + return PathSlab.TOP_SHAPE; + default: + return PathSlab.BOTTOM_SHAPE; + } + } + + @Override + @Nullable + public BlockState getStateForPlacement(BlockItemUseContext context) + { + + BlockPos blockpos = context.getPos(); + BlockState blockstate = context.getWorld().getBlockState(blockpos); + + SlabType slabtype = null; + //if(blockstate.getProperties().contains(SlabBlock.TYPE)) + //slabtype = blockstate.get(SlabBlock.TYPE); + + if (blockstate.getBlock() == this || slabtype == SlabType.BOTTOM + &&(blockstate.getBlock() == BlockList.DIRT_SLAB.get() + || blockstate.getBlock() == BlockList.GRASS_SLAB.get() + || blockstate.getBlock() == BlockList.COARSEDIRT_SLAB.get())) + { + return Blocks.GRASS_PATH.getDefaultState(); + } + else if (slabtype == SlabType.TOP && blockstate.getBlock() == BlockList.DIRT_SLAB.get()) + { + return Blocks.DIRT.getDefaultState(); + } + else if (slabtype == SlabType.TOP && blockstate.getBlock() == BlockList.GRASS_SLAB.get()) + { + return Blocks.GRASS_BLOCK.getDefaultState(); + } + else if (slabtype == SlabType.TOP && blockstate.getBlock() == BlockList.COARSEDIRT_SLAB.get()) + { + return Blocks.COARSE_DIRT.getDefaultState(); + } + else + { + FluidState ifluidstate = context.getWorld().getFluidState(blockpos); + BlockState blockstate1 = this.getDefaultState().with(SlabBlock.TYPE, SlabType.BOTTOM).with(WATERLOGGED, ifluidstate.getFluid() == Fluids.WATER); + Direction direction = context.getFace(); + return direction != Direction.DOWN && (direction == Direction.UP || !(context.getHitVec().y - (double) blockpos.getY() > 0.5D)) ? blockstate1 : blockstate1.with(SlabBlock.TYPE, SlabType.TOP); + } + } + + @Override + public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { + BlockState blockstate = worldIn.getBlockState(pos.up()); + return !blockstate.getMaterial().isSolid() || blockstate.getBlock() instanceof FenceGateBlock; + } + + public boolean allowsMovement(BlockState state, IBlockReader worldIn, BlockPos pos, PathType type) { + return false; + } + + @OnlyIn(Dist.CLIENT) + public boolean func_229870_f_(BlockState p_229870_1_, IBlockReader p_229870_2_, BlockPos p_229870_3_) { + return true; + } + + @Override + public BlockState updatePostPlacement(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, BlockPos currentPos, BlockPos facingPos) { + if (facing == Direction.UP && !stateIn.isValidPosition(worldIn, currentPos)) { + worldIn.getPendingBlockTicks().scheduleTick(currentPos, this, 1); + } + + return super.updatePostPlacement(stateIn, facing, facingState, worldIn, currentPos, facingPos); + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/SpruceSlab.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/SpruceSlab.java index d6a8888..cd84481 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/SpruceSlab.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/slabs/SpruceSlab.java @@ -13,7 +13,7 @@ import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.state.properties.SlabType; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.ILightReader; +import net.minecraft.world.IBlockDisplayReader; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; @@ -42,7 +42,7 @@ public boolean isTransparent(BlockState state) { public static class ColorHandler implements IBlockColor { - public int getColor(BlockState state, @Nullable ILightReader reader , @Nullable BlockPos blockPos, int tintIndex) + public int getColor(BlockState state, @Nullable IBlockDisplayReader reader , @Nullable BlockPos blockPos, int tintIndex) { //if(reader != null && blockPos != null) //{ diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/stairs/BirchStairsBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/stairs/BirchStairsBlock.java index d4608db..91e6e68 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/stairs/BirchStairsBlock.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/stairs/BirchStairsBlock.java @@ -6,7 +6,7 @@ import net.minecraft.block.StairsBlock; import net.minecraft.client.renderer.color.IBlockColor; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.ILightReader; +import net.minecraft.world.IBlockDisplayReader; public class BirchStairsBlock extends StairsBlock { @@ -19,7 +19,7 @@ public BirchStairsBlock(BlockState state, Properties properties) public static class ColorHandler implements IBlockColor { - public int getColor(BlockState state, @Nullable ILightReader reader , @Nullable BlockPos blockPos, int tintIndex) + public int getColor(BlockState state, @Nullable IBlockDisplayReader reader , @Nullable BlockPos blockPos, int tintIndex) { return getBirch(); } diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/stairs/LeafStairsBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/stairs/LeafStairsBlock.java index 4cd34ea..edc8afd 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/stairs/LeafStairsBlock.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/stairs/LeafStairsBlock.java @@ -6,7 +6,7 @@ import net.minecraft.block.StairsBlock; import net.minecraft.client.renderer.color.IBlockColor; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.ILightReader; +import net.minecraft.world.IBlockDisplayReader; import net.minecraft.world.biome.BiomeColors; public class LeafStairsBlock extends StairsBlock @@ -20,7 +20,7 @@ public LeafStairsBlock(BlockState state, Properties properties) public static class ColorHandler implements IBlockColor { - public int getColor(BlockState state, @Nullable ILightReader reader , @Nullable BlockPos blockPos, int tintIndex) + public int getColor(BlockState state, @Nullable IBlockDisplayReader reader , @Nullable BlockPos blockPos, int tintIndex) { if(reader != null && blockPos != null) diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/stairs/SpruceStairsBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/stairs/SpruceStairsBlock.java index 46674a6..aed6e9e 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/stairs/SpruceStairsBlock.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/stairs/SpruceStairsBlock.java @@ -6,7 +6,7 @@ import net.minecraft.block.StairsBlock; import net.minecraft.client.renderer.color.IBlockColor; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.ILightReader; +import net.minecraft.world.IBlockDisplayReader; public class SpruceStairsBlock extends StairsBlock { @@ -19,7 +19,7 @@ public SpruceStairsBlock(BlockState state, Properties properties) public static class ColorHandler implements IBlockColor { - public int getColor(BlockState state, @Nullable ILightReader reader , @Nullable BlockPos blockPos, int tintIndex) + public int getColor(BlockState state, @Nullable IBlockDisplayReader reader , @Nullable BlockPos blockPos, int tintIndex) { return getSpruce(); } diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/DiamondTrapBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/DiamondTrapBlock.java new file mode 100644 index 0000000..3630d81 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/DiamondTrapBlock.java @@ -0,0 +1,28 @@ +package com.github.wimpingego.nnow.objects.blocks.traps; + + +import java.util.List; + +import javax.annotation.Nullable; + +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.item.ItemStack; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.IBlockReader; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +public class DiamondTrapBlock extends TrapBaseBlock{ + + public DiamondTrapBlock(Properties properties, TrapType type) { + super(properties, type); + } + + @OnlyIn(Dist.CLIENT) + public void addInformation(ItemStack stack, @Nullable IBlockReader worldIn, List tooltip, ITooltipFlag flagIn) + { + super.addInformation(stack, worldIn, tooltip, flagIn); + tooltip.add((new TranslationTextComponent("item.nnow.DiamondTrap.line1"))); + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/GoldTrapBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/GoldTrapBlock.java new file mode 100644 index 0000000..7afcaaf --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/GoldTrapBlock.java @@ -0,0 +1,28 @@ +package com.github.wimpingego.nnow.objects.blocks.traps; + + +import java.util.List; + +import javax.annotation.Nullable; + +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.item.ItemStack; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.IBlockReader; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +public class GoldTrapBlock extends TrapBaseBlock{ + + public GoldTrapBlock(Properties properties, TrapType type) { + super(properties, type); + } + + @OnlyIn(Dist.CLIENT) + public void addInformation(ItemStack stack, @Nullable IBlockReader worldIn, List tooltip, ITooltipFlag flagIn) + { + super.addInformation(stack, worldIn, tooltip, flagIn); + tooltip.add((new TranslationTextComponent("item.nnow.GoldTrap.line1"))); + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/IronTrapBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/IronTrapBlock.java new file mode 100644 index 0000000..3b0bbe5 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/IronTrapBlock.java @@ -0,0 +1,28 @@ +package com.github.wimpingego.nnow.objects.blocks.traps; + + +import java.util.List; + +import javax.annotation.Nullable; + +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.item.ItemStack; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.IBlockReader; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +public class IronTrapBlock extends TrapBaseBlock{ + + public IronTrapBlock(Properties properties, TrapType type) { + super(properties, type); + } + + @OnlyIn(Dist.CLIENT) + public void addInformation(ItemStack stack, @Nullable IBlockReader worldIn, List tooltip, ITooltipFlag flagIn) + { + super.addInformation(stack, worldIn, tooltip, flagIn); + tooltip.add((new TranslationTextComponent("item.nnow.IronTrap.line1"))); + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapBaseBlock.java similarity index 89% rename from src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapBlock.java rename to src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapBaseBlock.java index bdc6abd..e12eb08 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapBlock.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapBaseBlock.java @@ -27,7 +27,7 @@ @edits: Wimpingego */ -public class TrapBlock extends Block{ +public class TrapBaseBlock extends Block{ public static final VoxelShape NORTH_SHAPE = makeCuboidShape(0.05D * 16, 0.05D * 16, 0.0D * 16, 0.95 * 16, 0.95D * 16, 0.25D * 16); @@ -57,7 +57,7 @@ public class TrapBlock extends Block{ private final TrapType type; -public TrapBlock(Properties properties, TrapType type) +public TrapBaseBlock(Properties properties, TrapType type) { super(properties); this.type = type; @@ -80,19 +80,21 @@ protected void fillStateContainer(Builder builder) { } @Override -public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn) { +public void onEntityWalk(World worldIn, BlockPos pos, Entity entityIn) { if (entityIn instanceof LivingEntity && entityIn.getType() != EntityType.PLAYER - && entityIn.getType() != EntityType.VILLAGER) //{ - + && entityIn.getType() != EntityType.VILLAGER) + + if (!worldIn.isRemote) + { if (entityIn instanceof LivingEntity) { LivingEntity livingEntity = (LivingEntity) entityIn; if (type.lethal || livingEntity.getHealth() > 1f) { - TrapDamageSource spikeDmgSource = new TrapDamageSource(type); + TrapDamageSource spikeDmgSource = new TrapDamageSource(type); if (type.isPlayer) { - NNOWFakePlayer fakePlayer = NNOWFakePlayer.getInstance((ServerWorld) worldIn).get(); + NNOWFakePlayer fakePlayer = NNOWFakePlayer.getInstance((ServerWorld) worldIn).get(); if (fakePlayer != null) { @@ -101,9 +103,9 @@ public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Ent } livingEntity.attackEntityFrom(spikeDmgSource, type.damage); - } } + } } @Override diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapDamageSource.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapDamageSource.java index 8d5663b..f7161f1 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapDamageSource.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapDamageSource.java @@ -11,13 +11,13 @@ */ public class TrapDamageSource extends DamageSource { - @SuppressWarnings("unused") + +@SuppressWarnings("unused") private TrapType type; private Entity source = null; - // todo: have an option for fakeplayer kills public TrapDamageSource(TrapType type) { - super("spikes." + type.name); + super("trap." + type.name); this.type = type; setDamageBypassesArmor(); diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapType.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapType.java index 1c78537..6a6ff27 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapType.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/TrapType.java @@ -8,22 +8,20 @@ @edits: Wimpingego */ public class TrapType { - static int I_Attack = ModConfigs.IRON_ATTACK_POWER.get(); static int G_Attack = ModConfigs.GOLDERN_ATTACK_POWER.get(); static int D_Attack = ModConfigs.DIAMOND_ATTACK_POWER.get(); static int W_Attack = ModConfigs.WITHER_ATTACK_POWER.get(); - public static final TrapType FAKE = new TrapType("fake", 0, false, false, false); - public static final TrapType IRON = new TrapType("iron", I_Attack, true, false, false); - public static final TrapType GOLD = new TrapType("gold", G_Attack, true, false, true); + public static final TrapType IRON = new TrapType("iron", 1f, false, false, false); + public static final TrapType GOLD = new TrapType("gold", G_Attack, true, false, false); public static final TrapType DIAMOND = new TrapType("diamond", D_Attack, true, true, true); public static final TrapType WITHER = new TrapType("wither", W_Attack, true, true, true); public final String name; public final float damage; public final boolean lethal; - public final boolean isPlayer; public final boolean dropXP; + public final boolean isPlayer; public TrapType(String name, float damage, boolean lethal, boolean dropXP, boolean isPlayer) { this.name = name; diff --git a/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/WitherTrapBlock.java b/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/WitherTrapBlock.java new file mode 100644 index 0000000..abd7cfa --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/blocks/traps/WitherTrapBlock.java @@ -0,0 +1,29 @@ +package com.github.wimpingego.nnow.objects.blocks.traps; + + +import java.util.List; + +import javax.annotation.Nullable; + +import com.github.wimpingego.nnow.util.IExplosionResistant; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.item.ItemStack; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.IBlockReader; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +public class WitherTrapBlock extends TrapBaseBlock implements IExplosionResistant{ + + public WitherTrapBlock(Properties properties, TrapType type) { + super(properties, type); + } + + @OnlyIn(Dist.CLIENT) + public void addInformation(ItemStack stack, @Nullable IBlockReader worldIn, List tooltip, ITooltipFlag flagIn) + { + super.addInformation(stack, worldIn, tooltip, flagIn); + tooltip.add((new TranslationTextComponent("item.nnow.witherproof.line1"))); + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/IronBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/BaseBerryBush.java similarity index 92% rename from src/main/java/com/github/wimpingego/nnow/objects/bushs/IronBerryBush.java rename to src/main/java/com/github/wimpingego/nnow/objects/bushs/BaseBerryBush.java index f40d0e3..0d7e1d0 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/bushs/IronBerryBush.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/BaseBerryBush.java @@ -1,12 +1,11 @@ package com.github.wimpingego.nnow.objects.bushs; import java.util.Random; - -import com.github.wimpingego.nnow.init.BlockList; import com.github.wimpingego.nnow.util.ModConfigs; import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; import net.minecraft.block.BushBlock; import net.minecraft.block.IGrowable; import net.minecraft.entity.Entity; @@ -25,29 +24,29 @@ import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.util.math.vector.Vector3d; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; import net.minecraft.world.server.ServerWorld; -public class IronBerryBush extends BushBlock implements IGrowable +public class BaseBerryBush extends BushBlock implements IGrowable { public static final IntegerProperty AGE = BlockStateProperties.AGE_0_3; private static final VoxelShape field_220126_b = Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 8.0D, 13.0D); private static final VoxelShape field_220127_c = Block.makeCuboidShape(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); - - int Nugget = ModConfigs.IRON_NUGGETS.get(); + + int Nugget = 2; int Damage = ModConfigs.BERRY_DAMAGE.get(); - public IronBerryBush(Block.Properties properties) { + public BaseBerryBush(Block.Properties properties) { super(properties); this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); } public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { - return new ItemStack(BlockList.IRONBERRY_BUSH.get()); + return new ItemStack(Blocks.SWEET_BERRY_BUSH); } @SuppressWarnings("deprecation") @@ -78,7 +77,7 @@ public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_ return ActionResultType.PASS; } else if (i > 1) { int j = Nugget + p_225533_2_.rand.nextInt(2); - spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(Items.IRON_NUGGET, j + (flag ? 1 : 0))); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(Items.ENDER_PEARL, j + (flag ? 1 : 0))); p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); return ActionResultType.SUCCESS; @@ -110,7 +109,7 @@ public void grow(ServerWorld p_225535_1_, Random p_225535_2_, BlockPos p_225535_ public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn){ if(ModConfigs.BERRY_DO_DAMAGE.get()){ if (entityIn instanceof LivingEntity && entityIn.getType() != EntityType.FOX && entityIn.getType() != EntityType.BEE) { - entityIn.setMotionMultiplier(state, new Vec3d((double)0.8F, 0.75D, (double)0.8F)); + entityIn.setMotionMultiplier(state, new Vector3d((double)0.8F, 0.75D, (double)0.8F)); if (!worldIn.isRemote && state.get(AGE) > 0 && (entityIn.lastTickPosX != entityIn.getPosX() || entityIn.lastTickPosZ != entityIn.getPosZ())) { double d0 = Math.abs(entityIn.getPosX() - entityIn.lastTickPosX); double d1 = Math.abs(entityIn.getPosZ() - entityIn.lastTickPosZ); @@ -122,4 +121,7 @@ public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Ent } } } + + + diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/CoalBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/CoalBerryBush.java deleted file mode 100644 index b79cad4..0000000 --- a/src/main/java/com/github/wimpingego/nnow/objects/bushs/CoalBerryBush.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.github.wimpingego.nnow.objects.bushs; - -import java.util.Random; - -import com.github.wimpingego.nnow.init.BlockList; -import com.github.wimpingego.nnow.init.ItemList; -import com.github.wimpingego.nnow.util.ModConfigs; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.BushBlock; -import net.minecraft.block.IGrowable; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.StateContainer; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class CoalBerryBush extends BushBlock implements IGrowable -{ - public static final IntegerProperty AGE = BlockStateProperties.AGE_0_3; - private static final VoxelShape field_220126_b = Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 8.0D, 13.0D); - private static final VoxelShape field_220127_c = Block.makeCuboidShape(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); - - int Nugget = ModConfigs.COAL_NUGGETS.get(); - int Damage = ModConfigs.BERRY_DAMAGE.get(); - - public CoalBerryBush(Block.Properties properties) { - super(properties); - this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); - } - - public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { - return new ItemStack(BlockList.COALBERRY_BUSH.get()); - } - - @SuppressWarnings("deprecation") - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - if (state.get(AGE) == 0) { - return field_220126_b; - } else { - return state.get(AGE) < 3 ? field_220127_c : super.getShape(state, worldIn, pos, context); - } - } - - @SuppressWarnings("deprecation") - public void tick(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) { - super.tick(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_); - int i = p_225534_1_.get(AGE); - if (i < 3 && p_225534_2_.getLightSubtracted(p_225534_3_.up(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt(5) == 0)) { - p_225534_2_.setBlockState(p_225534_3_, p_225534_1_.with(AGE, Integer.valueOf(i + 1)), 2); - net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_); - } - - } - - @SuppressWarnings("deprecation") - public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { - int i = p_225533_1_.get(AGE); - boolean flag = i == 3; - if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { - return ActionResultType.PASS; - } else if (i > 1) { - int j = Nugget + p_225533_2_.rand.nextInt(2); - spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.COAL_NUGGET.get(), j + (flag ? 1 : 0))); - p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); - p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); - return ActionResultType.SUCCESS; - } else { - return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); - } - } - - protected void fillStateContainer(StateContainer.Builder builder) { - builder.add(AGE); - } - - /** - * Whether this IGrowable can grow - */ - public boolean canGrow(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) { - return state.get(AGE) < 3; - } - - public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, BlockState state) { - return true; - } - - public void grow(ServerWorld p_225535_1_, Random p_225535_2_, BlockPos p_225535_3_, BlockState p_225535_4_) { - int i = Math.min(3, p_225535_4_.get(AGE) + 1); - p_225535_1_.setBlockState(p_225535_3_, p_225535_4_.with(AGE, Integer.valueOf(i)), 2); - } - - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn){ - if(ModConfigs.BERRY_DO_DAMAGE.get()){ - if (entityIn instanceof LivingEntity && entityIn.getType() != EntityType.FOX && entityIn.getType() != EntityType.BEE) { - entityIn.setMotionMultiplier(state, new Vec3d((double)0.8F, 0.75D, (double)0.8F)); - if (!worldIn.isRemote && state.get(AGE) > 0 && (entityIn.lastTickPosX != entityIn.getPosX() || entityIn.lastTickPosZ != entityIn.getPosZ())) { - double d0 = Math.abs(entityIn.getPosX() - entityIn.lastTickPosX); - double d1 = Math.abs(entityIn.getPosZ() - entityIn.lastTickPosZ); - if (d0 >= (double)0.003F || d1 >= (double)0.003F) { - entityIn.attackEntityFrom(DamageSource.SWEET_BERRY_BUSH, Damage); - } - } - } - } - } -} - - - - diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/DiamondBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/DiamondBerryBush.java deleted file mode 100644 index 725e016..0000000 --- a/src/main/java/com/github/wimpingego/nnow/objects/bushs/DiamondBerryBush.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.github.wimpingego.nnow.objects.bushs; - -import java.util.Random; - -import com.github.wimpingego.nnow.init.BlockList; -import com.github.wimpingego.nnow.init.ItemList; -import com.github.wimpingego.nnow.util.ModConfigs; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.BushBlock; -import net.minecraft.block.IGrowable; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.StateContainer; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class DiamondBerryBush extends BushBlock implements IGrowable -{ - public static final IntegerProperty AGE = BlockStateProperties.AGE_0_3; - private static final VoxelShape field_220126_b = Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 8.0D, 13.0D); - private static final VoxelShape field_220127_c = Block.makeCuboidShape(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); - - int Nugget = ModConfigs.DIAMOND_NUGGETS.get(); - int Damage = ModConfigs.BERRY_DAMAGE.get(); - - public DiamondBerryBush(Block.Properties properties) { - super(properties); - this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); - } - - public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { - return new ItemStack(BlockList.DIAMONDBERRY_BUSH.get()); - } - - @SuppressWarnings("deprecation") - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - if (state.get(AGE) == 0) { - return field_220126_b; - } else { - return state.get(AGE) < 3 ? field_220127_c : super.getShape(state, worldIn, pos, context); - } - } - - @SuppressWarnings("deprecation") - public void tick(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) { - super.tick(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_); - int i = p_225534_1_.get(AGE); - if (i < 3 && p_225534_2_.getLightSubtracted(p_225534_3_.up(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt(5) == 0)) { - p_225534_2_.setBlockState(p_225534_3_, p_225534_1_.with(AGE, Integer.valueOf(i + 1)), 2); - net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_); - } - - } - - @SuppressWarnings("deprecation") - public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { - int i = p_225533_1_.get(AGE); - boolean flag = i == 3; - if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { - return ActionResultType.PASS; - } else if (i > 1) { - int j = Nugget + p_225533_2_.rand.nextInt(2); - spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.DIAMOND_NUGGET.get(), j + (flag ? 1 : 0))); - p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); - p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); - return ActionResultType.SUCCESS; - } else { - return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); - } - } - - protected void fillStateContainer(StateContainer.Builder builder) { - builder.add(AGE); - } - - /** - * Whether this IGrowable can grow - */ - public boolean canGrow(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) { - return state.get(AGE) < 3; - } - - public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, BlockState state) { - return true; - } - - public void grow(ServerWorld p_225535_1_, Random p_225535_2_, BlockPos p_225535_3_, BlockState p_225535_4_) { - int i = Math.min(3, p_225535_4_.get(AGE) + 1); - p_225535_1_.setBlockState(p_225535_3_, p_225535_4_.with(AGE, Integer.valueOf(i)), 2); - } - - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn){ - if(ModConfigs.BERRY_DO_DAMAGE.get()){ - if (entityIn instanceof LivingEntity && entityIn.getType() != EntityType.FOX && entityIn.getType() != EntityType.BEE) { - entityIn.setMotionMultiplier(state, new Vec3d((double)0.8F, 0.75D, (double)0.8F)); - if (!worldIn.isRemote && state.get(AGE) > 0 && (entityIn.lastTickPosX != entityIn.getPosX() || entityIn.lastTickPosZ != entityIn.getPosZ())) { - double d0 = Math.abs(entityIn.getPosX() - entityIn.lastTickPosX); - double d1 = Math.abs(entityIn.getPosZ() - entityIn.lastTickPosZ); - if (d0 >= (double)0.003F || d1 >= (double)0.003F) { - entityIn.attackEntityFrom(DamageSource.SWEET_BERRY_BUSH, Damage); - } - } - } - } - } -} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/EmeraldBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/EmeraldBerryBush.java deleted file mode 100644 index 75d1ebd..0000000 --- a/src/main/java/com/github/wimpingego/nnow/objects/bushs/EmeraldBerryBush.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.github.wimpingego.nnow.objects.bushs; - -import java.util.Random; - -import com.github.wimpingego.nnow.init.BlockList; -import com.github.wimpingego.nnow.init.ItemList; -import com.github.wimpingego.nnow.util.ModConfigs; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.BushBlock; -import net.minecraft.block.IGrowable; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.StateContainer; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class EmeraldBerryBush extends BushBlock implements IGrowable -{ - public static final IntegerProperty AGE = BlockStateProperties.AGE_0_3; - private static final VoxelShape field_220126_b = Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 8.0D, 13.0D); - private static final VoxelShape field_220127_c = Block.makeCuboidShape(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); - - int Nugget = ModConfigs.EMERALD_NUGGETS.get(); - int Damage = ModConfigs.BERRY_DAMAGE.get(); - - public EmeraldBerryBush(Block.Properties properties) { - super(properties); - this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); - } - - public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { - return new ItemStack(BlockList.EMERALDBERRY_BUSH.get()); - } - - @SuppressWarnings("deprecation") - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - if (state.get(AGE) == 0) { - return field_220126_b; - } else { - return state.get(AGE) < 3 ? field_220127_c : super.getShape(state, worldIn, pos, context); - } - } - - @SuppressWarnings("deprecation") - public void tick(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) { - super.tick(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_); - int i = p_225534_1_.get(AGE); - if (i < 3 && p_225534_2_.getLightSubtracted(p_225534_3_.up(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt(5) == 0)) { - p_225534_2_.setBlockState(p_225534_3_, p_225534_1_.with(AGE, Integer.valueOf(i + 1)), 2); - net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_); - } - - } - - @SuppressWarnings("deprecation") - public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { - int i = p_225533_1_.get(AGE); - boolean flag = i == 3; - if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { - return ActionResultType.PASS; - } else if (i > 1) { - int j = Nugget + p_225533_2_.rand.nextInt(2); - spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.EMERALD_NUGGET.get(), j + (flag ? 1 : 0))); - p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); - p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); - return ActionResultType.SUCCESS; - } else { - return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); - } - } - - protected void fillStateContainer(StateContainer.Builder builder) { - builder.add(AGE); - } - - /** - * Whether this IGrowable can grow - */ - public boolean canGrow(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) { - return state.get(AGE) < 3; - } - - public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, BlockState state) { - return true; - } - - public void grow(ServerWorld p_225535_1_, Random p_225535_2_, BlockPos p_225535_3_, BlockState p_225535_4_) { - int i = Math.min(3, p_225535_4_.get(AGE) + 1); - p_225535_1_.setBlockState(p_225535_3_, p_225535_4_.with(AGE, Integer.valueOf(i)), 2); - } - - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn){ - if(ModConfigs.BERRY_DO_DAMAGE.get()){ - if (entityIn instanceof LivingEntity && entityIn.getType() != EntityType.FOX && entityIn.getType() != EntityType.BEE) { - entityIn.setMotionMultiplier(state, new Vec3d((double)0.8F, 0.75D, (double)0.8F)); - if (!worldIn.isRemote && state.get(AGE) > 0 && (entityIn.lastTickPosX != entityIn.getPosX() || entityIn.lastTickPosZ != entityIn.getPosZ())) { - double d0 = Math.abs(entityIn.getPosX() - entityIn.lastTickPosX); - double d1 = Math.abs(entityIn.getPosZ() - entityIn.lastTickPosZ); - if (d0 >= (double)0.003F || d1 >= (double)0.003F) { - entityIn.attackEntityFrom(DamageSource.SWEET_BERRY_BUSH, Damage); - } - } - } - } - } -} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/ExperienceBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ExperienceBerryBush.java index fdd3688..ab5c55a 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/bushs/ExperienceBerryBush.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ExperienceBerryBush.java @@ -1,124 +1,54 @@ package com.github.wimpingego.nnow.objects.bushs; -import java.util.Random; - import com.github.wimpingego.nnow.init.BlockList; import com.github.wimpingego.nnow.util.ModConfigs; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.block.BushBlock; -import net.minecraft.block.IGrowable; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; import net.minecraft.entity.item.ExperienceOrbEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.StateContainer; -import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.ActionResultType; -import net.minecraft.util.DamageSource; import net.minecraft.util.Hand; import net.minecraft.util.SoundCategory; import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -public class ExperienceBerryBush extends BushBlock implements IGrowable -{ - public static final IntegerProperty AGE = BlockStateProperties.AGE_0_3; - private static final VoxelShape field_220126_b = Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 8.0D, 13.0D); - private static final VoxelShape field_220127_c = Block.makeCuboidShape(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); - - int xpPoints = ModConfigs.XP_POINTS.get(); - int Damage = ModConfigs.BERRY_DAMAGE.get(); +public class ExperienceBerryBush extends BaseBerryBush +{ + int xpPoints = ModConfigs.XP_POINTS.get(); + public ExperienceBerryBush(Block.Properties properties) { super(properties); this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); } public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { - return new ItemStack(BlockList.XP_BUSH.get()); - } - - @SuppressWarnings("deprecation") - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - if (state.get(AGE) == 0) { - return field_220126_b; - } else { - return state.get(AGE) < 3 ? field_220127_c : super.getShape(state, worldIn, pos, context); - } - } - - @SuppressWarnings("deprecation") - public void tick(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) { - super.tick(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_); - int i = p_225534_1_.get(AGE); - if (i < 3 && p_225534_2_.getLightSubtracted(p_225534_3_.up(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt(5) == 0)) { - p_225534_2_.setBlockState(p_225534_3_, p_225534_1_.with(AGE, Integer.valueOf(i + 1)), 2); - net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_); - } - - } - - @SuppressWarnings("deprecation") - public ActionResultType onBlockActivated(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) { - int i = state.get(AGE); - boolean flag = i == 3; - if(!flag && player.getHeldItem(handIn).getItem() == Items.BONE_MEAL) { - return ActionResultType.PASS; - } else if (i > 1) { - worldIn.addEntity(new ExperienceOrbEntity(worldIn, pos.getX(), pos.getY(), pos.getZ(), xpPoints)); - worldIn.playSound((PlayerEntity) null, pos, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0f, 0.8F + worldIn.rand.nextFloat() * 0.4F); - worldIn.setBlockState(pos, state.with(AGE, Integer.valueOf(1)), 2); - return ActionResultType.SUCCESS; - } else { - return super.onBlockActivated(state, worldIn, pos, player, handIn, hit); - } - } - - protected void fillStateContainer(StateContainer.Builder builder) { - builder.add(AGE); - } - - /** - * Whether this IGrowable can grow - */ - public boolean canGrow(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) { - return state.get(AGE) < 3; - } - - public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, BlockState state) { - return true; - } - - public void grow(ServerWorld p_225535_1_, Random p_225535_2_, BlockPos p_225535_3_, BlockState p_225535_4_) { - int i = Math.min(3, p_225535_4_.get(AGE) + 1); - p_225535_1_.setBlockState(p_225535_3_, p_225535_4_.with(AGE, Integer.valueOf(i)), 2); - } + return new ItemStack(BlockList.XP_BERRY_BUSH.get()); + } - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn){ - if(ModConfigs.BERRY_DO_DAMAGE.get()){ - if (entityIn instanceof LivingEntity && entityIn.getType() != EntityType.FOX && entityIn.getType() != EntityType.BEE) { - entityIn.setMotionMultiplier(state, new Vec3d((double)0.8F, 0.75D, (double)0.8F)); - if (!worldIn.isRemote && state.get(AGE) > 0 && (entityIn.lastTickPosX != entityIn.getPosX() || entityIn.lastTickPosZ != entityIn.getPosZ())) { - double d0 = Math.abs(entityIn.getPosX() - entityIn.lastTickPosX); - double d1 = Math.abs(entityIn.getPosZ() - entityIn.lastTickPosZ); - if (d0 >= (double)0.003F || d1 >= (double)0.003F) { - entityIn.attackEntityFrom(DamageSource.SWEET_BERRY_BUSH, Damage); - } + @Override + public ActionResultType onBlockActivated(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) { + int i = state.get(AGE); + boolean flag = i == 3; + if(!flag && player.getHeldItem(handIn).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + worldIn.addEntity(new ExperienceOrbEntity(worldIn, pos.getX(), pos.getY(), pos.getZ(), xpPoints)); + worldIn.playSound((PlayerEntity) null, pos, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0f, 0.8F + worldIn.rand.nextFloat() * 0.4F); + worldIn.setBlockState(pos, state.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(state, worldIn, pos, player, handIn, hit); } - } - } - } - } \ No newline at end of file + } +} + + + + diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/FireBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/FireBerryBush.java index 3d91bbc..9321ece 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/bushs/FireBerryBush.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/FireBerryBush.java @@ -1,46 +1,27 @@ package com.github.wimpingego.nnow.objects.bushs; -import java.util.Random; - import com.github.wimpingego.nnow.init.BlockList; import com.github.wimpingego.nnow.init.ItemList; import com.github.wimpingego.nnow.util.ModConfigs; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.block.BushBlock; -import net.minecraft.block.IGrowable; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.StateContainer; -import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.ActionResultType; -import net.minecraft.util.DamageSource; import net.minecraft.util.Hand; import net.minecraft.util.SoundCategory; import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -public class FireBerryBush extends BushBlock implements IGrowable + +public class FireBerryBush extends BaseBerryBush { - public static final IntegerProperty AGE = BlockStateProperties.AGE_0_3; - private static final VoxelShape field_220126_b = Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 8.0D, 13.0D); - private static final VoxelShape field_220127_c = Block.makeCuboidShape(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); - int Nugget = ModConfigs.FIRE_NUGGETS.get(); - int Damage = ModConfigs.BERRY_DAMAGE.get(); public FireBerryBush(Block.Properties properties) { super(properties); @@ -48,80 +29,25 @@ public FireBerryBush(Block.Properties properties) { } public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { - return new ItemStack(BlockList.FIREBERRY_BUSH.get()); - } - - @SuppressWarnings("deprecation") - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - if (state.get(AGE) == 0) { - return field_220126_b; - } else { - return state.get(AGE) < 3 ? field_220127_c : super.getShape(state, worldIn, pos, context); - } - } - - @SuppressWarnings("deprecation") - public void tick(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) { - super.tick(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_); - int i = p_225534_1_.get(AGE); - if (i < 3 && p_225534_2_.getLightSubtracted(p_225534_3_.up(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt(5) == 0)) { - p_225534_2_.setBlockState(p_225534_3_, p_225534_1_.with(AGE, Integer.valueOf(i + 1)), 2); - net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_); - } - - } - - @SuppressWarnings("deprecation") - public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { - int i = p_225533_1_.get(AGE); - boolean flag = i == 3; - if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { - return ActionResultType.PASS; - } else if (i > 1) { - int j = Nugget + p_225533_2_.rand.nextInt(2); - spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.FIRE_NUGGET.get(), j + (flag ? 1 : 0))); - p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); - p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); - return ActionResultType.SUCCESS; - } else { - return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); - } - } - - protected void fillStateContainer(StateContainer.Builder builder) { - builder.add(AGE); - } - - /** - * Whether this IGrowable can grow - */ - public boolean canGrow(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) { - return state.get(AGE) < 3; - } - - public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, BlockState state) { - return true; - } - - public void grow(ServerWorld p_225535_1_, Random p_225535_2_, BlockPos p_225535_3_, BlockState p_225535_4_) { - int i = Math.min(3, p_225535_4_.get(AGE) + 1); - p_225535_1_.setBlockState(p_225535_3_, p_225535_4_.with(AGE, Integer.valueOf(i)), 2); - } + return new ItemStack(BlockList.FIRE_BERRY_BUSH.get()); + } - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn){ - if(ModConfigs.BERRY_DO_DAMAGE.get()){ - if (entityIn instanceof LivingEntity && entityIn.getType() != EntityType.FOX && entityIn.getType() != EntityType.BEE) { - entityIn.setMotionMultiplier(state, new Vec3d((double)0.8F, 0.75D, (double)0.8F)); - if (!worldIn.isRemote && state.get(AGE) > 0 && (entityIn.lastTickPosX != entityIn.getPosX() || entityIn.lastTickPosZ != entityIn.getPosZ())) { - double d0 = Math.abs(entityIn.getPosX() - entityIn.lastTickPosX); - double d1 = Math.abs(entityIn.getPosZ() - entityIn.lastTickPosZ); - if (d0 >= (double)0.003F || d1 >= (double)0.003F) { - entityIn.attackEntityFrom(DamageSource.SWEET_BERRY_BUSH, Damage); - } - } + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.FIRE_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); } } - } } diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/GoldBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/GoldBerryBush.java deleted file mode 100644 index 9e886ae..0000000 --- a/src/main/java/com/github/wimpingego/nnow/objects/bushs/GoldBerryBush.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.github.wimpingego.nnow.objects.bushs; - -import java.util.Random; - -import com.github.wimpingego.nnow.init.BlockList; -import com.github.wimpingego.nnow.util.ModConfigs; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.BushBlock; -import net.minecraft.block.IGrowable; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.StateContainer; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class GoldBerryBush extends BushBlock implements IGrowable -{ - public static final IntegerProperty AGE = BlockStateProperties.AGE_0_3; - private static final VoxelShape field_220126_b = Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 8.0D, 13.0D); - private static final VoxelShape field_220127_c = Block.makeCuboidShape(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); - - int Nugget = ModConfigs.GOLD_NUGGETS.get(); - int Damage = ModConfigs.BERRY_DAMAGE.get(); - - public GoldBerryBush(Block.Properties properties) { - super(properties); - this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); - } - - public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { - return new ItemStack(BlockList.GOLDBERRY_BUSH.get()); - } - - @SuppressWarnings("deprecation") - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - if (state.get(AGE) == 0) { - return field_220126_b; - } else { - return state.get(AGE) < 3 ? field_220127_c : super.getShape(state, worldIn, pos, context); - } - } - - @SuppressWarnings("deprecation") - public void tick(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) { - super.tick(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_); - int i = p_225534_1_.get(AGE); - if (i < 3 && p_225534_2_.getLightSubtracted(p_225534_3_.up(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt(5) == 0)) { - p_225534_2_.setBlockState(p_225534_3_, p_225534_1_.with(AGE, Integer.valueOf(i + 1)), 2); - net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_); - } - - } - - @SuppressWarnings("deprecation") - public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { - int i = p_225533_1_.get(AGE); - boolean flag = i == 3; - if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { - return ActionResultType.PASS; - } else if (i > 1) { - int j = Nugget + p_225533_2_.rand.nextInt(2); - spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(Items.GOLD_NUGGET, j + (flag ? 1 : 0))); - p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); - p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); - return ActionResultType.SUCCESS; - } else { - return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); - } - } - - protected void fillStateContainer(StateContainer.Builder builder) { - builder.add(AGE); - } - - /** - * Whether this IGrowable can grow - */ - public boolean canGrow(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) { - return state.get(AGE) < 3; - } - - public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, BlockState state) { - return true; - } - - public void grow(ServerWorld p_225535_1_, Random p_225535_2_, BlockPos p_225535_3_, BlockState p_225535_4_) { - int i = Math.min(3, p_225535_4_.get(AGE) + 1); - p_225535_1_.setBlockState(p_225535_3_, p_225535_4_.with(AGE, Integer.valueOf(i)), 2); - } - - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn){ - if(ModConfigs.BERRY_DO_DAMAGE.get()){ - if (entityIn instanceof LivingEntity && entityIn.getType() != EntityType.FOX && entityIn.getType() != EntityType.BEE) { - entityIn.setMotionMultiplier(state, new Vec3d((double)0.8F, 0.75D, (double)0.8F)); - if (!worldIn.isRemote && state.get(AGE) > 0 && (entityIn.lastTickPosX != entityIn.getPosX() || entityIn.lastTickPosZ != entityIn.getPosZ())) { - double d0 = Math.abs(entityIn.getPosX() - entityIn.lastTickPosX); - double d1 = Math.abs(entityIn.getPosZ() - entityIn.lastTickPosZ); - if (d0 >= (double)0.003F || d1 >= (double)0.003F) { - entityIn.attackEntityFrom(DamageSource.SWEET_BERRY_BUSH, Damage); - } - } - } - } - } -} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/IceberryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/IceberryBush.java index 7977248..bed2a40 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/bushs/IceberryBush.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/IceberryBush.java @@ -1,126 +1,51 @@ package com.github.wimpingego.nnow.objects.bushs; -import java.util.Random; - import com.github.wimpingego.nnow.init.BlockList; import com.github.wimpingego.nnow.init.ItemList; import com.github.wimpingego.nnow.util.ModConfigs; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.block.BushBlock; -import net.minecraft.block.IGrowable; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.StateContainer; -import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.ActionResultType; -import net.minecraft.util.DamageSource; import net.minecraft.util.Hand; import net.minecraft.util.SoundCategory; import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -public class IceberryBush extends BushBlock implements IGrowable -{ - public static final IntegerProperty AGE = BlockStateProperties.AGE_0_3; - private static final VoxelShape field_220126_b = Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 8.0D, 13.0D); - private static final VoxelShape field_220127_c = Block.makeCuboidShape(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); +public class IceBerryBush extends BaseBerryBush +{ int Nugget = ModConfigs.ICE_NUGGETS.get(); - int Damage = ModConfigs.BERRY_DAMAGE.get(); - public IceberryBush(Block.Properties properties) { + public IceBerryBush(Block.Properties properties) { super(properties); this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); } public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { - return new ItemStack(BlockList.ICEBERRY_BUSH.get()); - } - - @SuppressWarnings("deprecation") - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - if (state.get(AGE) == 0) { - return field_220126_b; - } else { - return state.get(AGE) < 3 ? field_220127_c : super.getShape(state, worldIn, pos, context); - } - } - - @SuppressWarnings("deprecation") - public void tick(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) { - super.tick(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_); - int i = p_225534_1_.get(AGE); - if (i < 3 && p_225534_2_.getLightSubtracted(p_225534_3_.up(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt(5) == 0)) { - p_225534_2_.setBlockState(p_225534_3_, p_225534_1_.with(AGE, Integer.valueOf(i + 1)), 2); - net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_); - } - - } - - @SuppressWarnings("deprecation") - public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { - int i = p_225533_1_.get(AGE); - boolean flag = i == 3; - if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { - return ActionResultType.PASS; - } else if (i > 1) { - int j = Nugget + p_225533_2_.rand.nextInt(2); - spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.ICE_NUGGET.get() , j + (flag ? 1 : 0))); - p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); - p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); - return ActionResultType.SUCCESS; - } else { - return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); - } - } - - protected void fillStateContainer(StateContainer.Builder builder) { - builder.add(AGE); - } - - /** - * Whether this IGrowable can grow - */ - public boolean canGrow(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) { - return state.get(AGE) < 3; - } - - public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, BlockState state) { - return true; - } - - public void grow(ServerWorld p_225535_1_, Random p_225535_2_, BlockPos p_225535_3_, BlockState p_225535_4_) { - int i = Math.min(3, p_225535_4_.get(AGE) + 1); - p_225535_1_.setBlockState(p_225535_3_, p_225535_4_.with(AGE, Integer.valueOf(i)), 2); - } + return new ItemStack(BlockList.ICE_BERRY_BUSH.get()); + } - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn){ - if(ModConfigs.BERRY_DO_DAMAGE.get()){ - if (entityIn instanceof LivingEntity && entityIn.getType() != EntityType.FOX && entityIn.getType() != EntityType.BEE) { - entityIn.setMotionMultiplier(state, new Vec3d((double)0.8F, 0.75D, (double)0.8F)); - if (!worldIn.isRemote && state.get(AGE) > 0 && (entityIn.lastTickPosX != entityIn.getPosX() || entityIn.lastTickPosZ != entityIn.getPosZ())) { - double d0 = Math.abs(entityIn.getPosX() - entityIn.lastTickPosX); - double d1 = Math.abs(entityIn.getPosZ() - entityIn.lastTickPosZ); - if (d0 >= (double)0.003F || d1 >= (double)0.003F) { - entityIn.attackEntityFrom(DamageSource.SWEET_BERRY_BUSH, Damage); - } - } + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.ICE_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); } } - } - - } \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/LapisBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/LapisBerryBush.java deleted file mode 100644 index 2a88995..0000000 --- a/src/main/java/com/github/wimpingego/nnow/objects/bushs/LapisBerryBush.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.github.wimpingego.nnow.objects.bushs; - -import java.util.Random; - -import com.github.wimpingego.nnow.init.BlockList; -import com.github.wimpingego.nnow.init.ItemList; -import com.github.wimpingego.nnow.util.ModConfigs; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.BushBlock; -import net.minecraft.block.IGrowable; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.StateContainer; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class LapisBerryBush extends BushBlock implements IGrowable -{ - public static final IntegerProperty AGE = BlockStateProperties.AGE_0_3; - private static final VoxelShape field_220126_b = Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 8.0D, 13.0D); - private static final VoxelShape field_220127_c = Block.makeCuboidShape(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); - - int Nugget = ModConfigs.LAPIS_NUGGETS.get(); - int Damage = ModConfigs.BERRY_DAMAGE.get(); - - public LapisBerryBush(Block.Properties properties) { - super(properties); - this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); - } - - public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { - return new ItemStack(BlockList.LAPISBERRY_BUSH.get()); - } - - @SuppressWarnings("deprecation") - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - if (state.get(AGE) == 0) { - return field_220126_b; - } else { - return state.get(AGE) < 3 ? field_220127_c : super.getShape(state, worldIn, pos, context); - } - } - - @SuppressWarnings("deprecation") - public void tick(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) { - super.tick(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_); - int i = p_225534_1_.get(AGE); - if (i < 3 && p_225534_2_.getLightSubtracted(p_225534_3_.up(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt(5) == 0)) { - p_225534_2_.setBlockState(p_225534_3_, p_225534_1_.with(AGE, Integer.valueOf(i + 1)), 2); - net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_); - } - - } - - @SuppressWarnings("deprecation") - public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { - int i = p_225533_1_.get(AGE); - boolean flag = i == 3; - if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { - return ActionResultType.PASS; - } else if (i > 1) { - int j = Nugget + p_225533_2_.rand.nextInt(2); - spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.LAPIS_NUGGET.get(), j + (flag ? 1 : 0))); - p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); - p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); - return ActionResultType.SUCCESS; - } else { - return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); - } - } - - protected void fillStateContainer(StateContainer.Builder builder) { - builder.add(AGE); - } - - /** - * Whether this IGrowable can grow - */ - public boolean canGrow(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) { - return state.get(AGE) < 3; - } - - public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, BlockState state) { - return true; - } - - public void grow(ServerWorld p_225535_1_, Random p_225535_2_, BlockPos p_225535_3_, BlockState p_225535_4_) { - int i = Math.min(3, p_225535_4_.get(AGE) + 1); - p_225535_1_.setBlockState(p_225535_3_, p_225535_4_.with(AGE, Integer.valueOf(i)), 2); - } - - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn){ - if(ModConfigs.BERRY_DO_DAMAGE.get()){ - if (entityIn instanceof LivingEntity && entityIn.getType() != EntityType.FOX && entityIn.getType() != EntityType.BEE) { - entityIn.setMotionMultiplier(state, new Vec3d((double)0.8F, 0.75D, (double)0.8F)); - if (!worldIn.isRemote && state.get(AGE) > 0 && (entityIn.lastTickPosX != entityIn.getPosX() || entityIn.lastTickPosZ != entityIn.getPosZ())) { - double d0 = Math.abs(entityIn.getPosX() - entityIn.lastTickPosX); - double d1 = Math.abs(entityIn.getPosZ() - entityIn.lastTickPosZ); - if (d0 >= (double)0.003F || d1 >= (double)0.003F) { - entityIn.attackEntityFrom(DamageSource.SWEET_BERRY_BUSH, Damage); - } - } - } - } - } -} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/QuartzBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/QuartzBerryBush.java deleted file mode 100644 index 35aa034..0000000 --- a/src/main/java/com/github/wimpingego/nnow/objects/bushs/QuartzBerryBush.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.github.wimpingego.nnow.objects.bushs; - -import java.util.Random; - -import com.github.wimpingego.nnow.init.BlockList; -import com.github.wimpingego.nnow.init.ItemList; -import com.github.wimpingego.nnow.util.ModConfigs; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.BushBlock; -import net.minecraft.block.IGrowable; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.StateContainer; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class QuartzBerryBush extends BushBlock implements IGrowable -{ - public static final IntegerProperty AGE = BlockStateProperties.AGE_0_3; - private static final VoxelShape field_220126_b = Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 8.0D, 13.0D); - private static final VoxelShape field_220127_c = Block.makeCuboidShape(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); - - int Nugget = ModConfigs.QUARTZ_NUGGETS.get(); - int Damage = ModConfigs.BERRY_DAMAGE.get(); - - public QuartzBerryBush(Block.Properties properties) { - super(properties); - this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); - } - - public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { - return new ItemStack(BlockList.QUARTZBERRY_BUSH.get()); - } - - @SuppressWarnings("deprecation") - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - if (state.get(AGE) == 0) { - return field_220126_b; - } else { - return state.get(AGE) < 3 ? field_220127_c : super.getShape(state, worldIn, pos, context); - } - } - - @SuppressWarnings("deprecation") - public void tick(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) { - super.tick(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_); - int i = p_225534_1_.get(AGE); - if (i < 3 && p_225534_2_.getLightSubtracted(p_225534_3_.up(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt(5) == 0)) { - p_225534_2_.setBlockState(p_225534_3_, p_225534_1_.with(AGE, Integer.valueOf(i + 1)), 2); - net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_); - } - - } - - @SuppressWarnings("deprecation") - public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { - int i = p_225533_1_.get(AGE); - boolean flag = i == 3; - if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { - return ActionResultType.PASS; - } else if (i > 1) { - int j = Nugget + p_225533_2_.rand.nextInt(2); - spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.QUARTZ_NUGGET.get(), j + (flag ? 1 : 0))); - p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); - p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); - return ActionResultType.SUCCESS; - } else { - return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); - } - } - - protected void fillStateContainer(StateContainer.Builder builder) { - builder.add(AGE); - } - - /** - * Whether this IGrowable can grow - */ - public boolean canGrow(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) { - return state.get(AGE) < 3; - } - - public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, BlockState state) { - return true; - } - - public void grow(ServerWorld p_225535_1_, Random p_225535_2_, BlockPos p_225535_3_, BlockState p_225535_4_) { - int i = Math.min(3, p_225535_4_.get(AGE) + 1); - p_225535_1_.setBlockState(p_225535_3_, p_225535_4_.with(AGE, Integer.valueOf(i)), 2); - } - - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn){ - if(ModConfigs.BERRY_DO_DAMAGE.get()){ - if (entityIn instanceof LivingEntity && entityIn.getType() != EntityType.FOX && entityIn.getType() != EntityType.BEE) { - entityIn.setMotionMultiplier(state, new Vec3d((double)0.8F, 0.75D, (double)0.8F)); - if (!worldIn.isRemote && state.get(AGE) > 0 && (entityIn.lastTickPosX != entityIn.getPosX() || entityIn.lastTickPosZ != entityIn.getPosZ())) { - double d0 = Math.abs(entityIn.getPosX() - entityIn.lastTickPosX); - double d1 = Math.abs(entityIn.getPosZ() - entityIn.lastTickPosZ); - if (d0 >= (double)0.003F || d1 >= (double)0.003F) { - entityIn.attackEntityFrom(DamageSource.SWEET_BERRY_BUSH, Damage); - } - } - } - } - } -} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/RedstoneBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/RedstoneBerryBush.java deleted file mode 100644 index bfc2be2..0000000 --- a/src/main/java/com/github/wimpingego/nnow/objects/bushs/RedstoneBerryBush.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.github.wimpingego.nnow.objects.bushs; - -import java.util.Random; - -import com.github.wimpingego.nnow.init.BlockList; -import com.github.wimpingego.nnow.init.ItemList; -import com.github.wimpingego.nnow.util.ModConfigs; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.BushBlock; -import net.minecraft.block.IGrowable; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.StateContainer; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class RedstoneBerryBush extends BushBlock implements IGrowable -{ - public static final IntegerProperty AGE = BlockStateProperties.AGE_0_3; - private static final VoxelShape field_220126_b = Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 8.0D, 13.0D); - private static final VoxelShape field_220127_c = Block.makeCuboidShape(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); - - int Nugget = ModConfigs.REDSTONE_NUGGETS.get(); - int Damage = ModConfigs.BERRY_DAMAGE.get(); - - public RedstoneBerryBush(Block.Properties properties) { - super(properties); - this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); - } - - public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { - return new ItemStack(BlockList.REDSTONEBERRY_BUSH.get()); - } - - @SuppressWarnings("deprecation") - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - if (state.get(AGE) == 0) { - return field_220126_b; - } else { - return state.get(AGE) < 3 ? field_220127_c : super.getShape(state, worldIn, pos, context); - } - } - - @SuppressWarnings("deprecation") - public void tick(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) { - super.tick(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_); - int i = p_225534_1_.get(AGE); - if (i < 3 && p_225534_2_.getLightSubtracted(p_225534_3_.up(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt(5) == 0)) { - p_225534_2_.setBlockState(p_225534_3_, p_225534_1_.with(AGE, Integer.valueOf(i + 1)), 2); - net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_); - } - - } - - @SuppressWarnings("deprecation") - public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { - int i = p_225533_1_.get(AGE); - boolean flag = i == 3; - if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { - return ActionResultType.PASS; - } else if (i > 1) { - int j = Nugget + p_225533_2_.rand.nextInt(2); - spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.REDSTONE_NUGGET.get(), j + (flag ? 1 : 0))); - p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); - p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); - return ActionResultType.SUCCESS; - } else { - return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); - } - } - - protected void fillStateContainer(StateContainer.Builder builder) { - builder.add(AGE); - } - - /** - * Whether this IGrowable can grow - */ - public boolean canGrow(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) { - return state.get(AGE) < 3; - } - - public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, BlockState state) { - return true; - } - - public void grow(ServerWorld p_225535_1_, Random p_225535_2_, BlockPos p_225535_3_, BlockState p_225535_4_) { - int i = Math.min(3, p_225535_4_.get(AGE) + 1); - p_225535_1_.setBlockState(p_225535_3_, p_225535_4_.with(AGE, Integer.valueOf(i)), 2); - } - - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn){ - if(ModConfigs.BERRY_DO_DAMAGE.get()){ - if (entityIn instanceof LivingEntity && entityIn.getType() != EntityType.FOX && entityIn.getType() != EntityType.BEE) { - entityIn.setMotionMultiplier(state, new Vec3d((double)0.8F, 0.75D, (double)0.8F)); - if (!worldIn.isRemote && state.get(AGE) > 0 && (entityIn.lastTickPosX != entityIn.getPosX() || entityIn.lastTickPosZ != entityIn.getPosZ())) { - double d0 = Math.abs(entityIn.getPosX() - entityIn.lastTickPosX); - double d1 = Math.abs(entityIn.getPosZ() - entityIn.lastTickPosZ); - if (d0 >= (double)0.003F || d1 >= (double)0.003F) { - entityIn.attackEntityFrom(DamageSource.SWEET_BERRY_BUSH, Damage); - } - } - } - } - } -} - - - - diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/WoodenBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/WoodenBerryBush.java index bf35ac5..489f530 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/bushs/WoodenBerryBush.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/WoodenBerryBush.java @@ -1,46 +1,27 @@ package com.github.wimpingego.nnow.objects.bushs; -import java.util.Random; - import com.github.wimpingego.nnow.init.BlockList; import com.github.wimpingego.nnow.init.ItemList; import com.github.wimpingego.nnow.util.ModConfigs; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.block.BushBlock; -import net.minecraft.block.IGrowable; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.StateContainer; -import net.minecraft.state.properties.BlockStateProperties; import net.minecraft.util.ActionResultType; -import net.minecraft.util.DamageSource; import net.minecraft.util.Hand; import net.minecraft.util.SoundCategory; import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -public class WoodenBerryBush extends BushBlock implements IGrowable + +public class WoodenBerryBush extends BaseBerryBush { - public static final IntegerProperty AGE = BlockStateProperties.AGE_0_3; - private static final VoxelShape field_220126_b = Block.makeCuboidShape(3.0D, 0.0D, 3.0D, 13.0D, 8.0D, 13.0D); - private static final VoxelShape field_220127_c = Block.makeCuboidShape(1.0D, 0.0D, 1.0D, 15.0D, 16.0D, 15.0D); - int Nugget = ModConfigs.WOODEN_NUGGETS.get(); - int Damage = ModConfigs.BERRY_DAMAGE.get(); public WoodenBerryBush(Block.Properties properties) { super(properties); @@ -48,82 +29,23 @@ public WoodenBerryBush(Block.Properties properties) { } public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { - return new ItemStack(BlockList.WOODENBERRY_BUSH.get()); - } - - @SuppressWarnings("deprecation") - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - if (state.get(AGE) == 0) { - return field_220126_b; - } else { - return state.get(AGE) < 3 ? field_220127_c : super.getShape(state, worldIn, pos, context); - } - } - - @SuppressWarnings("deprecation") - public void tick(BlockState p_225534_1_, ServerWorld p_225534_2_, BlockPos p_225534_3_, Random p_225534_4_) { - super.tick(p_225534_1_, p_225534_2_, p_225534_3_, p_225534_4_); - int i = p_225534_1_.get(AGE); - if (i < 3 && p_225534_2_.getLightSubtracted(p_225534_3_.up(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_225534_2_, p_225534_3_, p_225534_1_, p_225534_4_.nextInt(5) == 0)) { - p_225534_2_.setBlockState(p_225534_3_, p_225534_1_.with(AGE, Integer.valueOf(i + 1)), 2); - net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_225534_2_, p_225534_3_, p_225534_1_); - } - - } - - @SuppressWarnings("deprecation") - public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { - int i = p_225533_1_.get(AGE); - boolean flag = i == 3; - if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { - return ActionResultType.PASS; - } else if (i > 1) { - int j = Nugget + p_225533_2_.rand.nextInt(2); - spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.WOODEN_NUGGET.get(), j + (flag ? 1 : 0))); - p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); - p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); - return ActionResultType.SUCCESS; - } else { - return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); - } - } - - protected void fillStateContainer(StateContainer.Builder builder) { - builder.add(AGE); - } - - /** - * Whether this IGrowable can grow - */ - public boolean canGrow(IBlockReader worldIn, BlockPos pos, BlockState state, boolean isClient) { - return state.get(AGE) < 3; - } - - public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, BlockState state) { - return true; - } - - public void grow(ServerWorld p_225535_1_, Random p_225535_2_, BlockPos p_225535_3_, BlockState p_225535_4_) { - int i = Math.min(3, p_225535_4_.get(AGE) + 1); - p_225535_1_.setBlockState(p_225535_3_, p_225535_4_.with(AGE, Integer.valueOf(i)), 2); - } + return new ItemStack(BlockList.WOODEN_BERRY_BUSH.get()); + } - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn){ - if(ModConfigs.BERRY_DO_DAMAGE.get()){ - if (entityIn instanceof LivingEntity && entityIn.getType() != EntityType.FOX && entityIn.getType() != EntityType.BEE) { - entityIn.setMotionMultiplier(state, new Vec3d((double)0.8F, 0.75D, (double)0.8F)); - if (!worldIn.isRemote && state.get(AGE) > 0 && (entityIn.lastTickPosX != entityIn.getPosX() || entityIn.lastTickPosZ != entityIn.getPosZ())) { - double d0 = Math.abs(entityIn.getPosX() - entityIn.lastTickPosX); - double d1 = Math.abs(entityIn.getPosZ() - entityIn.lastTickPosZ); - if (d0 >= (double)0.003F || d1 >= (double)0.003F) { - entityIn.attackEntityFrom(DamageSource.SWEET_BERRY_BUSH, Damage); - } - } + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.WOODEN_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); } } - } -} - - - - +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/ClayBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/ClayBerryBush.java new file mode 100644 index 0000000..65cd60f --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/ClayBerryBush.java @@ -0,0 +1,56 @@ +package com.github.wimpingego.nnow.objects.bushs.dusts; + +import com.github.wimpingego.nnow.init.BlockList; +import com.github.wimpingego.nnow.init.ItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class ClayBerryBush extends BaseBerryBush +{ + int Dust = ModConfigs.CLAY_DUST.get(); + + public ClayBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(BlockList.CLAY_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Dust + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.CLAY_DUST.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} + + + + diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/DirtBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/DirtBerryBush.java new file mode 100644 index 0000000..383b85c --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/DirtBerryBush.java @@ -0,0 +1,56 @@ +package com.github.wimpingego.nnow.objects.bushs.dusts; + +import com.github.wimpingego.nnow.init.BlockList; +import com.github.wimpingego.nnow.init.ItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class DirtBerryBush extends BaseBerryBush +{ + int Dust = ModConfigs.DIRT_DUST.get(); + + public DirtBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(BlockList.DIRT_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Dust + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.DIRT_DUST.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} + + + + diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/GravelBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/GravelBerryBush.java new file mode 100644 index 0000000..2c4d0e3 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/GravelBerryBush.java @@ -0,0 +1,56 @@ +package com.github.wimpingego.nnow.objects.bushs.dusts; + +import com.github.wimpingego.nnow.init.BlockList; +import com.github.wimpingego.nnow.init.ItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class GravelBerryBush extends BaseBerryBush +{ + int Dust = ModConfigs.GRAVEL_DUST.get(); + + public GravelBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(BlockList.GRAVEL_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Dust + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.GRAVEL_DUST.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} + + + + diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/SandBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/SandBerryBush.java new file mode 100644 index 0000000..f7fd501 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/SandBerryBush.java @@ -0,0 +1,56 @@ +package com.github.wimpingego.nnow.objects.bushs.dusts; + +import com.github.wimpingego.nnow.init.BlockList; +import com.github.wimpingego.nnow.init.ItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class SandBerryBush extends BaseBerryBush +{ + int Dust = ModConfigs.SAND_DUST.get(); + + public SandBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(BlockList.SAND_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Dust + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.SAND_DUST.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} + + + + diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/StoneBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/StoneBerryBush.java new file mode 100644 index 0000000..883ccc3 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/dusts/StoneBerryBush.java @@ -0,0 +1,56 @@ +package com.github.wimpingego.nnow.objects.bushs.dusts; + +import com.github.wimpingego.nnow.init.BlockList; +import com.github.wimpingego.nnow.init.ItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class StoneBerryBush extends BaseBerryBush +{ + int Dust = ModConfigs.STONE_DUST.get(); + + public StoneBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(BlockList.STONE_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Dust + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.STONE_DUST.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} + + + + diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/AluminumBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/AluminumBerryBush.java new file mode 100644 index 0000000..0428300 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/AluminumBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.metals; + +import com.github.wimpingego.nnow.init.MetalBlockList; +import com.github.wimpingego.nnow.init.MetalItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class AluminumBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.ALUMINUM_NUGGETS.get(); + + public AluminumBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(MetalBlockList.ALUMINUM_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(MetalItemList.ALUMINUM_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/BismuthBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/BismuthBerryBush.java new file mode 100644 index 0000000..4041ea6 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/BismuthBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.metals; + +import com.github.wimpingego.nnow.init.MetalBlockList; +import com.github.wimpingego.nnow.init.MetalItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class BismuthBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.BISMUTH_NUGGETS.get(); + + public BismuthBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(MetalBlockList.BISMUTH_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(MetalItemList.BISMUTH_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/CopperBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/CopperBerryBush.java new file mode 100644 index 0000000..9774dd0 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/CopperBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.metals; + +import com.github.wimpingego.nnow.init.MetalBlockList; +import com.github.wimpingego.nnow.init.MetalItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class CopperBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.COPPER_NUGGETS.get(); + + public CopperBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(MetalBlockList.COPPER_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(MetalItemList.COPPER_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/IridiumBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/IridiumBerryBush.java new file mode 100644 index 0000000..8efddea --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/IridiumBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.metals; + +import com.github.wimpingego.nnow.init.MetalBlockList; +import com.github.wimpingego.nnow.init.MetalItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class IridiumBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.IRIDIUM_NUGGETS.get(); + + public IridiumBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(MetalBlockList.IRIDIUM_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(MetalItemList.IRIDIUM_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/LeadBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/LeadBerryBush.java new file mode 100644 index 0000000..3f53ce8 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/LeadBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.metals; + +import com.github.wimpingego.nnow.init.MetalBlockList; +import com.github.wimpingego.nnow.init.MetalItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class LeadBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.LEAD_NUGGETS.get(); + + public LeadBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(MetalBlockList.LEAD_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(MetalItemList.LEAD_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/NickelBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/NickelBerryBush.java new file mode 100644 index 0000000..719ab06 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/NickelBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.metals; + +import com.github.wimpingego.nnow.init.MetalBlockList; +import com.github.wimpingego.nnow.init.MetalItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class NickelBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.NICKEL_NUGGETS.get(); + + public NickelBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(MetalBlockList.NICKEL_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(MetalItemList.NICKEL_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/OsmiumBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/OsmiumBerryBush.java new file mode 100644 index 0000000..08abe9f --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/OsmiumBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.metals; + +import com.github.wimpingego.nnow.init.MetalBlockList; +import com.github.wimpingego.nnow.init.MetalItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class OsmiumBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.OSMIUM_NUGGETS.get(); + + public OsmiumBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(MetalBlockList.OSMIUM_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(MetalItemList.OSMIUM_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/PlatinumBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/PlatinumBerryBush.java new file mode 100644 index 0000000..ee2f57b --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/PlatinumBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.metals; + +import com.github.wimpingego.nnow.init.MetalBlockList; +import com.github.wimpingego.nnow.init.MetalItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class PlatinumBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.PLATINUM_NUGGETS.get(); + + public PlatinumBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(MetalBlockList.PLATINUM_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(MetalItemList.PLATINUM_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/SilverBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/SilverBerryBush.java new file mode 100644 index 0000000..447e98b --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/SilverBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.metals; + +import com.github.wimpingego.nnow.init.MetalBlockList; +import com.github.wimpingego.nnow.init.MetalItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class SilverBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.SILVER_NUGGETS.get(); + + public SilverBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(MetalBlockList.SILVER_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(MetalItemList.SILVER_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/TinBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/TinBerryBush.java new file mode 100644 index 0000000..abc38c3 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/TinBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.metals; + +import com.github.wimpingego.nnow.init.MetalBlockList; +import com.github.wimpingego.nnow.init.MetalItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class TinBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.TIN_NUGGETS.get(); + + public TinBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(MetalBlockList.TIN_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(MetalItemList.TIN_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/UraniumBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/UraniumBerryBush.java new file mode 100644 index 0000000..8ac556a --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/UraniumBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.metals; + +import com.github.wimpingego.nnow.init.MetalBlockList; +import com.github.wimpingego.nnow.init.MetalItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class UraniumBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.URANIUM_NUGGETS.get(); + + public UraniumBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(MetalBlockList.URANIUM_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(MetalItemList.URANIUM_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/ZincBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/ZincBerryBush.java new file mode 100644 index 0000000..5d0a5a7 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/metals/ZincBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.metals; + +import com.github.wimpingego.nnow.init.MetalBlockList; +import com.github.wimpingego.nnow.init.MetalItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class ZincBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.ZINC_NUGGETS.get(); + + public ZincBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(MetalBlockList.ZINC_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(MetalItemList.ZINC_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/CoalBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/CoalBerryBush.java new file mode 100644 index 0000000..5e32d30 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/CoalBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.ores; + +import com.github.wimpingego.nnow.init.BlockList; +import com.github.wimpingego.nnow.init.ItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class CoalBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.COAL_NUGGETS.get(); + + public CoalBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(BlockList.COAL_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.COAL_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/DiamondBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/DiamondBerryBush.java new file mode 100644 index 0000000..5493830 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/DiamondBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.ores; + +import com.github.wimpingego.nnow.init.BlockList; +import com.github.wimpingego.nnow.init.ItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class DiamondBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.DIAMOND_NUGGETS.get(); + + public DiamondBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(BlockList.DIAMOND_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.DIAMOND_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/EmeraldBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/EmeraldBerryBush.java new file mode 100644 index 0000000..660ed7b --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/EmeraldBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.ores; + +import com.github.wimpingego.nnow.init.BlockList; +import com.github.wimpingego.nnow.init.ItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class EmeraldBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.EMERALD_NUGGETS.get(); + + public EmeraldBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(BlockList.EMERALD_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.EMERALD_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/GoldBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/GoldBerryBush.java new file mode 100644 index 0000000..1f5e9ea --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/GoldBerryBush.java @@ -0,0 +1,51 @@ +package com.github.wimpingego.nnow.objects.bushs.ores; + +import com.github.wimpingego.nnow.init.BlockList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class GoldBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.GOLD_NUGGETS.get(); + + public GoldBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(BlockList.GOLD_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(Items.GOLD_NUGGET, j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/IronBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/IronBerryBush.java new file mode 100644 index 0000000..34130ea --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/IronBerryBush.java @@ -0,0 +1,51 @@ +package com.github.wimpingego.nnow.objects.bushs.ores; + +import com.github.wimpingego.nnow.init.BlockList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class IronBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.IRON_NUGGETS.get(); + + public IronBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(BlockList.IRON_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(Items.IRON_NUGGET, j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/LapisBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/LapisBerryBush.java new file mode 100644 index 0000000..930e80e --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/LapisBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.ores; + +import com.github.wimpingego.nnow.init.BlockList; +import com.github.wimpingego.nnow.init.ItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class LapisBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.LAPIS_NUGGETS.get(); + + public LapisBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(BlockList.LAPIS_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.LAPIS_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/QuartzBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/QuartzBerryBush.java new file mode 100644 index 0000000..9ebcd04 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/QuartzBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.ores; + +import com.github.wimpingego.nnow.init.BlockList; +import com.github.wimpingego.nnow.init.ItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class QuartzBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.QUARTZ_NUGGETS.get(); + + public QuartzBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(BlockList.DIAMOND_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.QUARTZ_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/RedstoneBerryBush.java b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/RedstoneBerryBush.java new file mode 100644 index 0000000..8af9cac --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/bushs/ores/RedstoneBerryBush.java @@ -0,0 +1,52 @@ +package com.github.wimpingego.nnow.objects.bushs.ores; + +import com.github.wimpingego.nnow.init.BlockList; +import com.github.wimpingego.nnow.init.ItemList; +import com.github.wimpingego.nnow.objects.bushs.BaseBerryBush; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.World; + + +public class RedstoneBerryBush extends BaseBerryBush +{ + int Nugget = ModConfigs.REDSTONE_NUGGETS.get(); + + public RedstoneBerryBush(Block.Properties properties) { + super(properties); + this.setDefaultState(this.stateContainer.getBaseState().with(AGE, Integer.valueOf(0))); + } + + public ItemStack getItem(IBlockReader worldIn, BlockPos pos, BlockState state) { + return new ItemStack(BlockList.REDSTONE_BERRY_BUSH.get()); + } + + @Override + public ActionResultType onBlockActivated(BlockState p_225533_1_, World p_225533_2_, BlockPos p_225533_3_, PlayerEntity p_225533_4_, Hand p_225533_5_, BlockRayTraceResult p_225533_6_) { + int i = p_225533_1_.get(AGE); + boolean flag = i == 3; + if (!flag && p_225533_4_.getHeldItem(p_225533_5_).getItem() == Items.BONE_MEAL) { + return ActionResultType.PASS; + } else if (i > 1) { + int j = Nugget + p_225533_2_.rand.nextInt(2); + spawnAsEntity(p_225533_2_, p_225533_3_, new ItemStack(ItemList.REDSTONE_NUGGET.get(), j + (flag ? 1 : 0))); + p_225533_2_.playSound((PlayerEntity)null, p_225533_3_, SoundEvents.ITEM_SWEET_BERRIES_PICK_FROM_BUSH, SoundCategory.BLOCKS, 1.0F, 0.8F + p_225533_2_.rand.nextFloat() * 0.4F); + p_225533_2_.setBlockState(p_225533_3_, p_225533_1_.with(AGE, Integer.valueOf(1)), 2); + return ActionResultType.SUCCESS; + } else { + return super.onBlockActivated(p_225533_1_, p_225533_2_, p_225533_3_, p_225533_4_, p_225533_5_, p_225533_6_); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/DeathPotato.java b/src/main/java/com/github/wimpingego/nnow/objects/items/DeathPotato.java index bc8858d..80a43e5 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/items/DeathPotato.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/DeathPotato.java @@ -1,7 +1,7 @@ package com.github.wimpingego.nnow.objects.items; -import net.minecraft.block.Blocks; -import net.minecraft.entity.item.ItemEntity; +//import net.minecraft.block.Blocks; +//import net.minecraft.entity.item.ItemEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Rarity; @@ -23,11 +23,11 @@ public boolean hasEffect(ItemStack stack) { return true; } - @Override - public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) { - entity.getEntityWorld().setBlockState(entity.getPosition(), Blocks.FIRE.getDefaultState()); - return super.onEntityItemUpdate(stack, entity); - } + //@Override + //public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) { + //entity.getEntityWorld().setBlockState(entity.getPosition(), Blocks.FIRE.getDefaultState()); + //return super.onEntityItemUpdate(stack, entity); + //} @Override public Rarity getRarity(ItemStack stack) { diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/EnderBag.java b/src/main/java/com/github/wimpingego/nnow/objects/items/EnderBag.java new file mode 100644 index 0000000..502b2b8 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/EnderBag.java @@ -0,0 +1,38 @@ +package com.github.wimpingego.nnow.objects.items; + +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.EnderChestInventory; +import net.minecraft.inventory.container.ChestContainer; +import net.minecraft.inventory.container.SimpleNamedContainerProvider; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ActionResult; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.World; + +public class EnderBag extends Item{ + + public static final TranslationTextComponent field_220115_d = new TranslationTextComponent( + "item.nnow.ender_bag.line1"); + + public EnderBag(Properties properties) { + super(properties); + } + + public ActionResult onItemRightClick(World world, PlayerEntity player, Hand hand) { + + EnderChestInventory enderChest = player.getInventoryEnderChest(); + + if (enderChest != null) { + if (!world.isRemote) { + player.openContainer(new SimpleNamedContainerProvider((p_220114_1_, p_220114_2_, p_220114_3_) -> { + return ChestContainer.createGeneric9X3(p_220114_1_, p_220114_2_, enderChest); + }, field_220115_d)); + } + } + return new ActionResult(ActionResultType.PASS, player.getHeldItem(hand)); + } + +} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/Magnet.java b/src/main/java/com/github/wimpingego/nnow/objects/items/Magnet.java index fd3d491..317a620 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/items/Magnet.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/Magnet.java @@ -21,7 +21,6 @@ import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.World; @@ -59,7 +58,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int itemS List items = entity.world.getEntitiesWithinAABB(ItemEntity.class, new AxisAlignedBB(x - range, y - range, z - range, x + range, y + range, z + range)); for(ItemEntity e: items) { - //if(KeyboardHelper.isHoldingShift() && !e.getPersistentData().getBoolean("PreventRemoteMovement")) + if(!player.isSneaking() && !e.getPersistentData().getBoolean("PreventRemoteMovement")) { double factor = 0.035; e.addVelocity((x - e.getPosX()) * factor, (y - e.getPosY()+1.25) * factor, (z - e.getPosZ()) * factor); @@ -70,7 +69,7 @@ public void inventoryTick(ItemStack stack, World world, Entity entity, int itemS List xp = entity.world.getEntitiesWithinAABB(ExperienceOrbEntity.class, new AxisAlignedBB(x - range, y - range, z - range, x + range, y + range, z + range)); for(ExperienceOrbEntity orb: xp) { - //if(!player.isShiftKeyDown()) + if(!player.isSneaking()) { double factor = 0.035; orb.addVelocity((x - orb.getPosX()) * factor, (y - orb.getPosY()+1.25) * factor, (z - orb.getPosZ()) * factor); @@ -84,14 +83,14 @@ public ActionResult onItemRightClick(World world, PlayerEntity player { ItemStack stack = player.getHeldItem(hand); - //if(!world.isRemote && !((player))) - //{ + if(!world.isRemote && !(player.isSneaking())) + { EnableUtil.changeEnabled(player, hand); - player.sendMessage(new TranslationTextComponent("item.nnow.magnet.line1", EnableUtil.isEnabled(stack)).applyTextStyle(TextFormatting.GREEN)); + player.sendMessage(new TranslationTextComponent("item.nnow.magnet.line1", EnableUtil.isEnabled(stack)), null); return new ActionResult(ActionResultType.SUCCESS, player.getHeldItem(hand)); - //} + } - //return super.onItemRightClick(world, player, hand); + return super.onItemRightClick(world, player, hand); } @Override @@ -103,8 +102,8 @@ public boolean hasEffect(ItemStack stack) @Override public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { if(KeyboardHelper.isHoldingShift()) { - tooltip.add((new TranslationTextComponent("item.nnow.magnet.line2").applyTextStyle(TextFormatting.YELLOW))); - tooltip.add((new TranslationTextComponent("item.nnow.magnet.line3",range).applyTextStyle(TextFormatting.LIGHT_PURPLE))); + tooltip.add((new TranslationTextComponent("item.nnow.magnet.line2"))); + tooltip.add((new TranslationTextComponent("item.nnow.magnet.line3",range))); } else { tooltip.add(new StringTextComponent("Hold " + "\u00A75" + "Shift " + "\u00A7r"+ "For More Info")); } diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/PokingStick.java b/src/main/java/com/github/wimpingego/nnow/objects/items/PokingStick.java index 7f942fe..d06c19c 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/items/PokingStick.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/PokingStick.java @@ -5,26 +5,33 @@ import com.github.wimpingego.nnow.init.ItemList; import com.github.wimpingego.nnow.util.ModConfigs; import com.github.wimpingego.nnow.util.helpers.KeyboardHelper; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.item.ItemEntity; +import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUseContext; +import net.minecraft.item.Items; import net.minecraft.util.ActionResultType; +import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.World; public class PokingStick extends Item { static int use = ModConfigs.MAX_USES.get(); - + public PokingStick(Properties properties) { - super(properties.maxDamage(use)); + super(properties.maxDamage(use)); } - + @Override public Item asItem() { return super.asItem(); @@ -32,81 +39,207 @@ public Item asItem() { @Override public int getBurnTime(ItemStack itemStack) { - return 300; + return 300; } - - //GRASS & DRIT BLOCKS - public ActionResultType onItemUse(ItemUseContext context) { - if (context.getWorld().getBlockState(context.getPos()).getBlock() == Blocks.GRASS_BLOCK) { - for (ItemStack stack : context.getPlayer().inventory.mainInventory) { - if (stack.isEmpty()) { - context.getPlayer().addItemStackToInventory(new ItemStack(ItemList.STONE_DUST.get(),0 + random.nextInt(3))); - context.getItem().damageItem(1, context.getPlayer(), (playerIn) -> { - playerIn.sendBreakAnimation(context.getHand()); - }); - return ActionResultType.SUCCESS; - } +// STONE DUST FROM DIRT + public ActionResultType onItemUse(ItemUseContext context) { + if (context.getWorld().getBlockState(context.getPos()).getBlock() == Blocks.GRASS_BLOCK) { + for (ItemStack stack : context.getPlayer().inventory.mainInventory) { + if (stack.isEmpty()) { + context.getPlayer().addItemStackToInventory(new ItemStack(ItemList.STONE_DUST.get(),0 + random.nextInt(3))); + context.getItem().damageItem(1, context.getPlayer(), (playerIn) -> { + playerIn.sendBreakAnimation(context.getHand()); + }); + return ActionResultType.SUCCESS; } } - - if (context.getWorld().getBlockState(context.getPos()).getBlock() == Blocks.PODZOL) { - for (ItemStack stack : context.getPlayer().inventory.mainInventory) { - if (stack.isEmpty()) { - context.getPlayer().addItemStackToInventory(new ItemStack(ItemList.STONE_DUST.get(),2 + random.nextInt(3))); - context.getItem().damageItem(1, context.getPlayer(), (playerIn) -> { - playerIn.sendBreakAnimation(context.getHand()); - }); - return ActionResultType.SUCCESS; - } + } + + if (context.getWorld().getBlockState(context.getPos()).getBlock() == Blocks.PODZOL) { + for (ItemStack stack : context.getPlayer().inventory.mainInventory) { + if (stack.isEmpty()) { + context.getPlayer().addItemStackToInventory(new ItemStack(ItemList.STONE_DUST.get(),2 + random.nextInt(3))); + context.getItem().damageItem(1, context.getPlayer(), (playerIn) -> { + playerIn.sendBreakAnimation(context.getHand()); + }); + return ActionResultType.SUCCESS; } } - - if (context.getWorld().getBlockState(context.getPos()).getBlock() == Blocks.DIRT) { - for (ItemStack stack : context.getPlayer().inventory.mainInventory) { - if (stack.isEmpty()) { - context.getPlayer().addItemStackToInventory(new ItemStack(ItemList.STONE_DUST.get(),2 + random.nextInt(3))); - context.getItem().damageItem(1, context.getPlayer(), (playerIn) -> { - playerIn.sendBreakAnimation(context.getHand()); - }); - return ActionResultType.SUCCESS; + } + + if (context.getWorld().getBlockState(context.getPos()).getBlock() == Blocks.DIRT) { + for (ItemStack stack : context.getPlayer().inventory.mainInventory) { + if (stack.isEmpty()) { + context.getPlayer().addItemStackToInventory(new ItemStack(ItemList.STONE_DUST.get(),2 + random.nextInt(3))); + context.getItem().damageItem(1, context.getPlayer(), (playerIn) -> { + playerIn.sendBreakAnimation(context.getHand()); + }); + return ActionResultType.SUCCESS; + } + } + } + + if (context.getWorld().getBlockState(context.getPos()).getBlock() == Blocks.COARSE_DIRT) { + for (ItemStack stack : context.getPlayer().inventory.mainInventory) { + if (stack.isEmpty()) { + context.getPlayer().addItemStackToInventory(new ItemStack(ItemList.STONE_DUST.get(),2 + random.nextInt(3))); + context.getItem().damageItem(1, context.getPlayer(), (playerIn) -> { + playerIn.sendBreakAnimation(context.getHand()); + }); + return ActionResultType.SUCCESS; + } + } + } + + if (context.getWorld().getBlockState(context.getPos()).getBlock() == Blocks.MYCELIUM) { + for (ItemStack stack : context.getPlayer().inventory.mainInventory) { + if (stack.isEmpty()) { + context.getPlayer().addItemStackToInventory(new ItemStack(ItemList.STONE_DUST.get(),2 + random.nextInt(3))); + context.getItem().damageItem(1, context.getPlayer(), (playerIn) -> { + playerIn.sendBreakAnimation(context.getHand()); + }); + return ActionResultType.SUCCESS; + } + } + } + return ActionResultType.FAIL; + } + +// Sapling & Cactus DROPS + @Override + public boolean onBlockDestroyed(ItemStack stack, World world, BlockState state, BlockPos pos, LivingEntity entity) { + + double SaplingChance = ModConfigs.SAPLING_DROP_CHANCE.get(); + double CactusChance = ModConfigs.CACTUS_DROP_CHANCE.get(); + + Block block = state.getBlock(); + + if (!world.isRemote) { + if (state.getBlockHardness(world, pos) == 0) { + return true; + } + + else if (block == Blocks.OAK_LEAVES) { + + stack.damageItem(1, entity, (p_220038_0_) -> { + p_220038_0_.sendBreakAnimation(EquipmentSlotType.MAINHAND); + }); + + double r = random.nextDouble(); + if (r <= SaplingChance) { + world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.OAK_SAPLING, 1))); + } + } + + else if (block == Blocks.SPRUCE_LEAVES) { + + stack.damageItem(1, entity, (p_220038_0_) -> { + p_220038_0_.sendBreakAnimation(EquipmentSlotType.MAINHAND); + }); + + double r = random.nextDouble(); + if (r <= SaplingChance) { + world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.SPRUCE_SAPLING, 1))); + } + } + + else if (block == Blocks.ACACIA_LEAVES) { + + stack.damageItem(1, entity, (p_220038_0_) -> { + p_220038_0_.sendBreakAnimation(EquipmentSlotType.MAINHAND); + }); + + double r = random.nextDouble(); + if (r <= SaplingChance) { + world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.ACACIA_SAPLING, 1))); + } + } + + else if (block == Blocks.BIRCH_LEAVES) { + + stack.damageItem(1, entity, (p_220038_0_) -> { + p_220038_0_.sendBreakAnimation(EquipmentSlotType.MAINHAND); + }); + + double r = random.nextDouble(); + if (r <= SaplingChance) { + world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.BIRCH_SAPLING, 1))); } } - } - - if (context.getWorld().getBlockState(context.getPos()).getBlock() == Blocks.COARSE_DIRT) { - for (ItemStack stack : context.getPlayer().inventory.mainInventory) { - if (stack.isEmpty()) { - context.getPlayer().addItemStackToInventory(new ItemStack(ItemList.STONE_DUST.get(),2 + random.nextInt(3))); - context.getItem().damageItem(1, context.getPlayer(), (playerIn) -> { - playerIn.sendBreakAnimation(context.getHand()); - }); - return ActionResultType.SUCCESS; + + else if (block == Blocks.DARK_OAK_LEAVES) { + + stack.damageItem(1, entity, (p_220038_0_) -> { + p_220038_0_.sendBreakAnimation(EquipmentSlotType.MAINHAND); + }); + + double r = random.nextDouble(); + if (r <= SaplingChance) { + world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.DARK_OAK_SAPLING, 1))); } } - } - - if (context.getWorld().getBlockState(context.getPos()).getBlock() == Blocks.MYCELIUM) { - for (ItemStack stack : context.getPlayer().inventory.mainInventory) { - if (stack.isEmpty()) { - context.getPlayer().addItemStackToInventory(new ItemStack(ItemList.STONE_DUST.get(),2 + random.nextInt(3))); - context.getItem().damageItem(1, context.getPlayer(), (playerIn) -> { - playerIn.sendBreakAnimation(context.getHand()); - }); - return ActionResultType.SUCCESS; + + else if (block == Blocks.JUNGLE_LEAVES) { + + stack.damageItem(1, entity, (p_220038_0_) -> { + p_220038_0_.sendBreakAnimation(EquipmentSlotType.MAINHAND); + }); + + double r = random.nextDouble(); + if (r <= SaplingChance) { + world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.JUNGLE_SAPLING, 1))); } } + + else if (block == Blocks.SAND) { + + stack.damageItem(1, entity, (p_220038_0_) -> { + p_220038_0_.sendBreakAnimation(EquipmentSlotType.MAINHAND); + }); + + double r = random.nextDouble(); + if (r <= CactusChance) { + world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.CACTUS, 1))); + } + } + + else if (block == Blocks.RED_SAND) { + + stack.damageItem(1, entity, (p_220038_0_) -> { + p_220038_0_.sendBreakAnimation(EquipmentSlotType.MAINHAND); + }); + + double r = random.nextDouble(); + if (r <= CactusChance) { + world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.CACTUS, 1))); + } + } + + else { + stack.damageItem(1, entity, + playerEntity -> playerEntity.sendBreakAnimation(EquipmentSlotType.MAINHAND)); + } } - - return ActionResultType.FAIL; + + return true; } - + +// TOOLS TIP @Override public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { - if(KeyboardHelper.isHoldingShift()) { - tooltip.add((new TranslationTextComponent("item.nnow.poking_stick.line1").applyTextStyle(TextFormatting.YELLOW))); + if (KeyboardHelper.isHoldingShift()) { + tooltip.add((new TranslationTextComponent("item.nnow.poking_stick.line1"))); } else { - tooltip.add(new StringTextComponent("Hold " + "\u00A75" + "Shift " + "\u00A7r"+ "For More Info")); + tooltip.add(new StringTextComponent("Hold " + "\u00A75" + "Shift " + "\u00A7r" + "For More Info")); } - } + } } diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/Viagra.java b/src/main/java/com/github/wimpingego/nnow/objects/items/Viagra.java index 1831541..410310b 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/items/Viagra.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/Viagra.java @@ -1,58 +1,94 @@ package com.github.wimpingego.nnow.objects.items; import java.util.List; +import com.github.wimpingego.nnow.util.EnableUtil; import com.github.wimpingego.nnow.util.GrowingUtil; import com.github.wimpingego.nnow.util.ModConfigs; import com.github.wimpingego.nnow.util.helpers.KeyboardHelper; - import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.ActionResult; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Hand; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.World; -public class Viagra extends Item -{ +public class Viagra extends Item { + static int use = ModConfigs.VIAGRA_MAX_USES.get(); int radius = ModConfigs.VIAGRA_RADIUS.get(); int baseTickDelay = ModConfigs.VIAGRA_TICK_DELAY.get(); - - public Viagra(Properties properties) - { - super(properties); + + public Viagra(Properties properties) { + super(properties.maxDamage(use)); } - - public void inventoryTick(ItemStack stack, World world, Entity entity, int par4, boolean par5) - { - if(!(entity instanceof PlayerEntity) || world.isRemote) - { - return; - } - PlayerEntity player = (PlayerEntity)entity; - ItemStack equippedMain = player.getHeldItemMainhand(); - - if(stack == equippedMain) - { - if (!world.isRemote) - { + public void inventoryTick(ItemStack stack, World world, Entity entity, int par4, boolean par5) { + if (!(entity instanceof PlayerEntity) || world.isRemote) { + return; + } + + PlayerEntity player = (PlayerEntity) entity; + ItemStack equippedMain = player.getHeldItemMainhand(); + + if (stack == equippedMain) { + if (!world.isRemote && EnableUtil.isEnabled(stack)) { GrowingUtil.growCrops(world, player, baseTickDelay, radius); + + if (ModConfigs.VIAGRA_TAKES_USES.get()) { + stack.attemptDamageItem(1, world.rand, (ServerPlayerEntity) player); + stack.damageItem(1, player, + playerEntity -> playerEntity.sendBreakAnimation(EquipmentSlotType.MAINHAND)); + } } - } + } + } + + @Override + public ActionResult onItemRightClick(World world, PlayerEntity player, Hand hand) + { + ItemStack stack = player.getHeldItem(hand); + + if(!world.isRemote && !((player.isSneaking()))) + { + EnableUtil.changeEnabled(player, hand); + player.sendMessage(new TranslationTextComponent("item.nnow.viagra.line3", EnableUtil.isEnabled(stack)), null); + return new ActionResult(ActionResultType.SUCCESS, player.getHeldItem(hand)); + } + + return super.onItemRightClick(world, player, hand); } - + + @Override + public boolean hasEffect(ItemStack stack) { + return EnableUtil.isEnabled(stack); + } + + @Override + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { + return repair.getItem() == Items.EMERALD_BLOCK; + } + + @Override + public float getXpRepairRatio(ItemStack stack) { + return 5f; + } + @Override public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { - if(KeyboardHelper.isHoldingShift()) { - tooltip.add((new TranslationTextComponent("item.nnow.viagra.line1").applyTextStyle(TextFormatting.YELLOW))); - tooltip.add((new TranslationTextComponent("item.nnow.viagra.line2", radius).applyTextStyle(TextFormatting.LIGHT_PURPLE))); + if (KeyboardHelper.isHoldingShift()) { + tooltip.add((new TranslationTextComponent("item.nnow.viagra.line1"))); + tooltip.add((new TranslationTextComponent("item.nnow.viagra.line2", radius))); } else { - tooltip.add(new StringTextComponent("Hold " + "\u00A75" + "Shift " + "\u00A7r"+ "For More Info")); + tooltip.add(new StringTextComponent("Hold " + "\u00A75" + "Shift " + "\u00A7r" + "For More Info")); } } } diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/DiamondHammer.java b/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/DiamondHammer.java index 0d90f46..23db850 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/DiamondHammer.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/DiamondHammer.java @@ -5,21 +5,25 @@ import net.minecraft.block.BlockState; import net.minecraft.item.IItemTier; import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; + +public class DiamondHammer extends HammerBase { -public class DiamondHammer extends HammerBase{ - Double speed = ModConfigs.DIAMOND_TIER_TOOL_SPEED_MODIFIER.get(); static int use = ModConfigs.DIAMOND_TIER_TOOL_DURABILITY_MODIFIER.get(); - public DiamondHammer(IItemTier tier, int attackDamageIn, float attackSpeedIn, Properties builder) - { + public DiamondHammer(IItemTier tier, int attackDamageIn, float attackSpeedIn, Properties builder) { super(tier, attackDamageIn, attackSpeedIn, builder.maxDamage(use)); } - @Override - public float getDestroySpeed(ItemStack stack, BlockState state) - { - return super.getDestroySpeed(stack, state) / speed.floatValue(); - } - + @Override + public float getDestroySpeed(ItemStack stack, BlockState state) { + return super.getDestroySpeed(stack, state) / speed.floatValue(); + } + + @Override + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { + return repair.getItem() == Items.DIAMOND; + } + } diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/EmeraldHammer.java b/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/EmeraldHammer.java new file mode 100644 index 0000000..fe27286 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/EmeraldHammer.java @@ -0,0 +1,46 @@ +package com.github.wimpingego.nnow.objects.items.hammers; + +import java.util.List; + +import com.github.wimpingego.nnow.util.ModConfigs; +import com.github.wimpingego.nnow.util.helpers.KeyboardHelper; + +import net.minecraft.block.BlockState; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.item.IItemTier; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.World; + +public class EmeraldHammer extends HammerBase { + + Double speed = ModConfigs.EMERALD_TIER_TOOL_SPEED_MODIFIER.get(); + static int use = ModConfigs.EMERALD_TIER_TOOL_DURABILITY_MODIFIER.get(); + + public EmeraldHammer(IItemTier tier, int attackDamageIn, float attackSpeedIn, Properties builder) { + super(tier, attackDamageIn, attackSpeedIn, builder.maxDamage(use)); + } + + @Override + public float getDestroySpeed(ItemStack stack, BlockState state) { + return super.getDestroySpeed(stack, state) / speed.floatValue(); + } + + @Override + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { + return repair.getItem() == Items.EMERALD; + } + + @Override + public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { + if(KeyboardHelper.isHoldingShift()) { + tooltip.add((new TranslationTextComponent("item.nnow.hammer.line3"))); + } else { + tooltip.add(new StringTextComponent("Hold " + "\u00A75" + "Shift " + "\u00A7r"+ "For More Info")); + } + } + +} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/GoldenHammer.java b/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/GoldenHammer.java index 32df2af..81bf420 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/GoldenHammer.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/GoldenHammer.java @@ -5,21 +5,25 @@ import net.minecraft.block.BlockState; import net.minecraft.item.IItemTier; import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; + +public class GoldenHammer extends HammerBase { -public class GoldenHammer extends HammerBase{ - Double speed = ModConfigs.GOLDEN_TIER_TOOL_SPEED_MODIFIER.get(); static int use = ModConfigs.GOLDEN_TIER_TOOL_DURABILITY_MODIFIER.get(); - public GoldenHammer(IItemTier tier, int attackDamageIn, float attackSpeedIn, Properties builder) - { - super(tier, attackDamageIn, attackSpeedIn,builder.maxDamage(use)); + public GoldenHammer(IItemTier tier, int attackDamageIn, float attackSpeedIn, Properties builder) { + super(tier, attackDamageIn, attackSpeedIn, builder.maxDamage(use)); + } + + @Override + public float getDestroySpeed(ItemStack stack, BlockState state) { + return super.getDestroySpeed(stack, state) / speed.floatValue(); + } + + @Override + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { + return repair.getItem() == Items.GOLD_INGOT; } - @Override - public float getDestroySpeed(ItemStack stack, BlockState state) - { - return super.getDestroySpeed(stack, state) / speed.floatValue(); - } - } diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/HammerBase.java b/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/HammerBase.java index 251282f..cee48aa 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/HammerBase.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/HammerBase.java @@ -1,12 +1,8 @@ package com.github.wimpingego.nnow.objects.items.hammers; import java.util.List; - -import com.github.wimpingego.nnow.init.ItemList; import com.github.wimpingego.nnow.util.ToolUtil3x3; -import com.github.wimpingego.nnow.util.ModConfigs; import com.github.wimpingego.nnow.util.helpers.KeyboardHelper; - import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -14,635 +10,100 @@ import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.IItemTier; import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.item.PickaxeItem; import net.minecraft.util.Direction; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TranslationTextComponent; import net.minecraft.world.World; import net.minecraft.world.server.ServerWorld; public class HammerBase extends PickaxeItem { - - //Double speed = ModConfigs.SPEED_MODIFIER.get(); - - public HammerBase(IItemTier tier, int attackDamageIn, float attackSpeedIn, Properties builder) - { + public HammerBase(IItemTier tier, int attackDamageIn, float attackSpeedIn, Properties builder) { super(tier, attackDamageIn, attackSpeedIn, builder); } - @Override - public boolean onBlockDestroyed(ItemStack stack, World world, BlockState state, BlockPos pos, LivingEntity entity) - { - double DropChance = ModConfigs.DROP_CHANCE.get(); - double SecondChance = ModConfigs.SECOND_CHANCE.get(); - double EggChance = ModConfigs.EGG_CHANCE.get(); - - Block block = state.getBlock(); - - if (!world.isRemote) - { - if (state.getBlockHardness(world, pos) == 0) - { - return true; - } - - //STONE BLOCKS - - if(block == Blocks.COBBLESTONE) - { - //stack.damageItem(0, entity, (p_220038_0_) -> { - //p_220038_0_.sendBreakAnimation(EquipmentSlotType.MAINHAND); - //}); - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.GRAVEL_DUST.get(), 1))); - } - } - - else if(block == Blocks.STONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.GRAVEL_DUST.get(), 1))); - } - } - else if(block == Blocks.GRANITE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.GRAVEL_DUST.get(), 1))); - } - } - - else if(block == Blocks.DIORITE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.GRAVEL_DUST.get(), 1))); - } - } - - else if(block == Blocks.ANDESITE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.GRAVEL_DUST.get(), 1))); - } - } - - //SAND & GRAVEL BLOCKS - - else if(block == Blocks.SAND) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.SMOOTH_SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.CHISELED_SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.CUT_SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.RED_SAND) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.RED_SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.SMOOTH_RED_SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.CHISELED_RED_SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.CUT_RED_SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } + @Override + public boolean onBlockDestroyed(ItemStack stack, World world, BlockState state, BlockPos pos, LivingEntity entity) { + if (!world.isRemote) { + if (state.getBlockHardness(world, pos) == 0) { + return true; } + } - else if(block == Blocks.GRAVEL) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.SAND_DUST.get(), 1))); - } - } - - //GRASS & DRIT BLOCKS - - else if(block == Blocks.DIRT) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.CLAY_DUST.get(), 1))); - } - } - - else if(block == Blocks.COARSE_DIRT) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.CLAY_DUST.get(), 1))); - } - } - - else if(block == Blocks.GRASS_BLOCK) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.CLAY_DUST.get(), 1))); - } - } - - else if(block == Blocks.PODZOL) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.CLAY_DUST.get(), 1))); - } - } - - else if(block == Blocks.MYCELIUM) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.CLAY_DUST.get(), 1))); - } - } - - else if(block == Blocks.GRASS) - { - - double r = random.nextDouble(); - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.SUGAR_CANE, 1))); - } - - if(ModConfigs.SKYBLOCK_MODE.get()){ - if (r <= EggChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.VILLAGER_SPAWN_EGG, 1))); - } - } - } - - else if(block == Blocks.TALL_GRASS) - { - - double r = random.nextDouble(); - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.SUGAR_CANE, 1))); - } - - if(ModConfigs.SKYBLOCK_MODE.get()){ - if (r <= EggChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.VILLAGER_SPAWN_EGG, 1))); - } - } - } - - //ICE BLOCKS - - else if(block == Blocks.ICE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.ICE_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.PACKED_ICE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.ICE_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.BLUE_ICE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.ICE_NUGGET.get(), 1))); - } - } - - //NETHER BLOCKS - - else if(block == Blocks.NETHERRACK) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.FIRE_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.SOUL_SAND) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.FIRE_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.MAGMA_BLOCK) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.FIRE_NUGGET.get(), 1))); - } - } - - //WOOD BLOCKS - - else if(block == Blocks.OAK_LOG) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.WOODEN_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.SPRUCE_LOG) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.WOODEN_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.BIRCH_LOG) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.WOODEN_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.ACACIA_LOG) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.WOODEN_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.DARK_OAK_LOG) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.WOODEN_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.JUNGLE_LOG) - { + if (entity instanceof PlayerEntity) { + PlayerEntity player = (PlayerEntity) entity; + if (!player.isCrouching()) { + breakNeighbours(world, pos, (ServerPlayerEntity) player, true, stack); + return true; - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.WOODEN_NUGGET.get(), 1))); - } - } - - //ORE BLOCKS - - else if(block == Blocks.IRON_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.IRON_NUGGET, 1))); - } - } - - else if(block == Blocks.GOLD_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.GOLD_NUGGET, 1))); - } - } - - else if(block == Blocks.COAL_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.COAL_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.REDSTONE_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.REDSTONE_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.NETHER_QUARTZ_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.QUARTZ_NUGGET.get(), 1))); - } + } else { + stack.damageItem(1, player, + playerEntity -> playerEntity.sendBreakAnimation(EquipmentSlotType.MAINHAND)); } - - else if(block == Blocks.DIAMOND_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIAMOND_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.EMERALD_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.EMERALD_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.LAPIS_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.LAPIS_NUGGET.get(), 1))); - } - } - - if (entity instanceof PlayerEntity) - { - PlayerEntity player = (PlayerEntity) entity; - if (!player.isCrouching()) - { - breakNeighbours(world, pos, (ServerPlayerEntity) player, true, stack); - return true; - } - else - { -// stack.attemptDamageItem(1, world.rand, (ServerPlayerEntity) player); - stack.damageItem(1, player, playerEntity -> playerEntity.sendBreakAnimation(EquipmentSlotType.MAINHAND)); - } - } - } + } + return true; + } - return true; - } + @Override + public boolean canHarvestBlock(BlockState state) { + if (state.getBlock() == Blocks.BEDROCK) { + return false; + } + //return super.canHarvestBlock(state) || state.getBlock() == BlockTags.SAND || state.getBlock() == Tags.Blocks.DIRT || state.getBlock() == Tags.Blocks.GRAVEL || state.getBlock() == Blocks.SOUL_SAND; + return super.canHarvestBlock(state) || state.getBlock() == Blocks.GRAVEL || state.getBlock() == Blocks.SAND || state.getBlock() == Blocks.RED_SAND || state.getBlock() == Blocks.DIRT || state.getBlock() == Blocks.SOUL_SOIL || state.getBlock() == Blocks.SOUL_SAND; + } - @Override - public boolean canHarvestBlock(BlockState state) - { - if (state.getBlock() == Blocks.BEDROCK) - { - return false; - } + private void breakNeighbours(World world, BlockPos pos, ServerPlayerEntity player, boolean damageItem, + ItemStack stack) { - return super.canHarvestBlock(state); - } + BlockRayTraceResult rayTraceResult = ToolUtil3x3.getLookingAt(player, 6); + Direction facing = rayTraceResult.getFace(); - private void breakNeighbours(World world, BlockPos pos, ServerPlayerEntity player, boolean damageItem, ItemStack stack) - { - BlockRayTraceResult rayTraceResult = ToolUtil3x3.getLookingAt(player, 6); - Direction facing = rayTraceResult.getFace(); + List brokenBlocks = ToolUtil3x3.getBlocks(pos, facing); + for (BlockPos blockPos : brokenBlocks) { + BlockState blockState = world.getBlockState(blockPos); + if (!canHarvestBlock(blockState)) { + continue; + } - List brokenBlocks = ToolUtil3x3.getBlocks(pos, facing); - for (BlockPos blockPos : brokenBlocks) - { - BlockState blockState = world.getBlockState(blockPos); - if (!canHarvestBlock(blockState)) - { - continue; - } + if (blockState.getBlock().hasTileEntity(blockState)) { + continue; + } - if (blockState.getBlock().hasTileEntity(blockState)) - { - continue; - } + world.destroyBlock(blockPos, false); - world.destroyBlock(blockPos, false); + if (!player.isCreative()) { + if (damageItem) { + player.getHeldItemMainhand().damageItem(1, player, + playerEntity -> playerEntity.sendBreakAnimation(EquipmentSlotType.MAINHAND)); + } - if (!player.isCreative()) - { - if (damageItem) - { - player.getHeldItemMainhand().damageItem(1, player, playerEntity -> playerEntity.sendBreakAnimation(EquipmentSlotType.MAINHAND)); - //attemptDamageItem(1, world.rand, player instanceof ServerPlayerEntity ? (ServerPlayerEntity) player : null); - } + ToolUtil3x3.dropItems(world, Block.getDrops(blockState, (ServerWorld) world, blockPos, null, player, + player.getHeldItemMainhand()), blockPos); + ToolUtil3x3.spawnExp(world, blockPos, blockState, + EnchantmentHelper.getEnchantmentLevel(Enchantments.FORTUNE, stack), + EnchantmentHelper.getEnchantmentLevel(Enchantments.SILK_TOUCH, stack)); - ToolUtil3x3.dropItems(world, Block.getDrops(blockState, (ServerWorld) world, blockPos, null, player, player.getHeldItemMainhand()), blockPos); - ToolUtil3x3.spawnExp(world, blockPos, blockState, EnchantmentHelper.getEnchantmentLevel(Enchantments.FORTUNE, stack), EnchantmentHelper.getEnchantmentLevel(Enchantments.SILK_TOUCH, stack)); - - blockState.spawnAdditionalDrops(world, blockPos, player.getHeldItemMainhand()); - - } - } - } + blockState.spawnAdditionalDrops((ServerWorld) world, blockPos, player.getHeldItemMainhand()); + } + } + } - @Override public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { - if(KeyboardHelper.isHoldingShift()) { - tooltip.add((new TranslationTextComponent("item.nnow.hammer.line1").applyTextStyle(TextFormatting.YELLOW))); - tooltip.add((new TranslationTextComponent("item.nnow.hammer.line2").applyTextStyle(TextFormatting.LIGHT_PURPLE))); - tooltip.add((new TranslationTextComponent("item.nnow.hammer.line3").applyTextStyle(TextFormatting.GREEN))); + if (KeyboardHelper.isHoldingShift()) { + tooltip.add((new TranslationTextComponent("item.nnow.hammer.line1"))); + tooltip.add((new TranslationTextComponent("item.nnow.hammer.line2"))); + tooltip.add((new TranslationTextComponent("item.nnow.hammer.line3"))); } else { - tooltip.add(new StringTextComponent("Hold " + "\u00A75" + "Shift " + "\u00A7r"+ "For More Info")); + tooltip.add(new StringTextComponent("Hold " + "\u00A75" + "Shift " + "\u00A7r" + "For More Info")); } } -} +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/IronHammer.java b/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/IronHammer.java index 3861537..ddc15ab 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/IronHammer.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/IronHammer.java @@ -5,21 +5,25 @@ import net.minecraft.block.BlockState; import net.minecraft.item.IItemTier; import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; + +public class IronHammer extends HammerBase { -public class IronHammer extends HammerBase{ - Double speed = ModConfigs.IRON_TIER_TOOL_SPEED_MODIFIER.get(); static int use = ModConfigs.IRON_TIER_TOOL_DURABILITY_MODIFIER.get(); - public IronHammer(IItemTier tier, int attackDamageIn, float attackSpeedIn, Properties builder) - { + public IronHammer(IItemTier tier, int attackDamageIn, float attackSpeedIn, Properties builder) { super(tier, attackDamageIn, attackSpeedIn, builder.maxDamage(use)); } - @Override - public float getDestroySpeed(ItemStack stack, BlockState state) - { - return super.getDestroySpeed(stack, state) / speed.floatValue(); - } - + @Override + public float getDestroySpeed(ItemStack stack, BlockState state) { + return super.getDestroySpeed(stack, state) / speed.floatValue(); + } + + @Override + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { + return repair.getItem() == Items.IRON_INGOT; + } + } diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/StoneHammer.java b/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/StoneHammer.java index 7304b97..eb47968 100644 --- a/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/StoneHammer.java +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/hammers/StoneHammer.java @@ -5,21 +5,25 @@ import net.minecraft.block.BlockState; import net.minecraft.item.IItemTier; import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; + +public class StoneHammer extends HammerBase { -public class StoneHammer extends HammerBase{ - Double speed = ModConfigs.STONE_TIER_TOOL_SPEED_MODIFIER.get(); static int use = ModConfigs.STONE_TIER_TOOL_DURABILITY_MODIFIER.get(); - - public StoneHammer(IItemTier tier, int attackDamageIn, float attackSpeedIn, Properties builder) - { + + public StoneHammer(IItemTier tier, int attackDamageIn, float attackSpeedIn, Properties builder) { super(tier, attackDamageIn, attackSpeedIn, builder.maxDamage(use)); } - @Override - public float getDestroySpeed(ItemStack stack, BlockState state) - { - return super.getDestroySpeed(stack, state) / speed.floatValue(); - } - + @Override + public float getDestroySpeed(ItemStack stack, BlockState state) { + return super.getDestroySpeed(stack, state) / speed.floatValue(); + } + + @Override + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { + return repair.getItem() == Items.COBBLESTONE; + } + } diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/shovel/DiamondSpade.java b/src/main/java/com/github/wimpingego/nnow/objects/items/shovel/DiamondSpade.java deleted file mode 100644 index ec20aed..0000000 --- a/src/main/java/com/github/wimpingego/nnow/objects/items/shovel/DiamondSpade.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.github.wimpingego.nnow.objects.items.shovel; - -import com.github.wimpingego.nnow.util.ModConfigs; - -import net.minecraft.block.BlockState; -import net.minecraft.item.IItemTier; -import net.minecraft.item.ItemStack; - -public class DiamondSpade extends SpadeBase{ - - Double speed = ModConfigs.DIAMOND_TIER_TOOL_SPEED_MODIFIER.get(); - static int use = ModConfigs.DIAMOND_TIER_TOOL_DURABILITY_MODIFIER.get(); - - public DiamondSpade(IItemTier tier, float attackDamageIn, float attackSpeedIn, Properties builder) - { - super(tier, attackDamageIn, attackSpeedIn, builder.maxDamage(use)); - } - - @Override - public float getDestroySpeed(ItemStack stack, BlockState state) - { - return super.getDestroySpeed(stack, state) / speed.floatValue(); - } - -} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/shovel/GoldenSpade.java b/src/main/java/com/github/wimpingego/nnow/objects/items/shovel/GoldenSpade.java deleted file mode 100644 index 808d046..0000000 --- a/src/main/java/com/github/wimpingego/nnow/objects/items/shovel/GoldenSpade.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.github.wimpingego.nnow.objects.items.shovel; - -import com.github.wimpingego.nnow.util.ModConfigs; - -import net.minecraft.block.BlockState; -import net.minecraft.item.IItemTier; -import net.minecraft.item.ItemStack; - -public class GoldenSpade extends SpadeBase{ - - Double speed = ModConfigs.GOLDEN_TIER_TOOL_SPEED_MODIFIER.get(); - static int use = ModConfigs.GOLDEN_TIER_TOOL_DURABILITY_MODIFIER.get(); - - public GoldenSpade(IItemTier tier, float attackDamageIn, float attackSpeedIn, Properties builder) - { - super(tier, attackDamageIn, attackSpeedIn,builder.maxDamage(use)); - } - - @Override - public float getDestroySpeed(ItemStack stack, BlockState state) - { - return super.getDestroySpeed(stack, state) / speed.floatValue(); - } - -} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/shovel/IronSpade.java b/src/main/java/com/github/wimpingego/nnow/objects/items/shovel/IronSpade.java deleted file mode 100644 index d0dc9fe..0000000 --- a/src/main/java/com/github/wimpingego/nnow/objects/items/shovel/IronSpade.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.github.wimpingego.nnow.objects.items.shovel; - -import com.github.wimpingego.nnow.util.ModConfigs; - -import net.minecraft.block.BlockState; -import net.minecraft.item.IItemTier; -import net.minecraft.item.ItemStack; - -public class IronSpade extends SpadeBase{ - - Double speed = ModConfigs.IRON_TIER_TOOL_SPEED_MODIFIER.get(); - static int use = ModConfigs.IRON_TIER_TOOL_DURABILITY_MODIFIER.get(); - - public IronSpade(IItemTier tier, float attackDamageIn, float attackSpeedIn, Properties builder) - { - super(tier, attackDamageIn, attackSpeedIn, builder.maxDamage(use)); - } - - @Override - public float getDestroySpeed(ItemStack stack, BlockState state) - { - return super.getDestroySpeed(stack, state) / speed.floatValue(); - } - -} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/shovel/SpadeBase.java b/src/main/java/com/github/wimpingego/nnow/objects/items/shovel/SpadeBase.java deleted file mode 100644 index b69eb1d..0000000 --- a/src/main/java/com/github/wimpingego/nnow/objects/items/shovel/SpadeBase.java +++ /dev/null @@ -1,647 +0,0 @@ -package com.github.wimpingego.nnow.objects.items.shovel; - -import java.util.List; - -import com.github.wimpingego.nnow.init.ItemList; -import com.github.wimpingego.nnow.util.ToolUtil3x3; -import com.github.wimpingego.nnow.util.ModConfigs; -import com.github.wimpingego.nnow.util.helpers.KeyboardHelper; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.enchantment.Enchantments; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.inventory.EquipmentSlotType; -import net.minecraft.item.IItemTier; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.ShovelItem; -import net.minecraft.tags.BlockTags; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.util.text.TranslationTextComponent; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.common.Tags; - -public class SpadeBase extends ShovelItem { - - //Double speed = ModConfigs.SPEED_MODIFIER.get(); - - public SpadeBase(IItemTier tier, float attackDamageIn, float attackSpeedIn, Properties builder) - { - super(tier, attackDamageIn, attackSpeedIn, builder); - } - @Override - public boolean onBlockDestroyed(ItemStack stack, World world, BlockState state, BlockPos pos, LivingEntity entity) - { - double DropChance = ModConfigs.DROP_CHANCE.get(); - double SecondChance = ModConfigs.SECOND_CHANCE.get(); - double EggChance = ModConfigs.EGG_CHANCE.get(); - - Block block = state.getBlock(); - - if (!world.isRemote) - { - if (state.getBlockHardness(world, pos) == 0) - { - return true; - } - - //STONE BLOCKS - - if(block == Blocks.COBBLESTONE) - { - //stack.damageItem(0, entity, (p_220038_0_) -> { - //p_220038_0_.sendBreakAnimation(EquipmentSlotType.MAINHAND); - //}); - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.GRAVEL_DUST.get(), 1))); - } - } - - else if(block == Blocks.STONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.GRAVEL_DUST.get(), 1))); - } - } - - else if(block == Blocks.GRANITE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.GRAVEL_DUST.get(), 1))); - } - } - - else if(block == Blocks.DIORITE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.GRAVEL_DUST.get(), 1))); - } - } - - else if(block == Blocks.ANDESITE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.GRAVEL_DUST.get(), 1))); - } - } - - //SAND & GRAVEL BLOCKS - - else if(block == Blocks.SAND) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.SMOOTH_SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.CHISELED_SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.CUT_SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.RED_SAND) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.RED_SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.SMOOTH_RED_SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.CHISELED_RED_SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.CUT_RED_SANDSTONE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIRT_DUST.get(), 1))); - } - - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.CACTUS, 1))); - } - } - - else if(block == Blocks.GRAVEL) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.SAND_DUST.get(), 1))); - } - } - - //GRASS & DRIT BLOCKS - - else if(block == Blocks.DIRT) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.CLAY_DUST.get(), 1))); - } - } - - else if(block == Blocks.COARSE_DIRT) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.CLAY_DUST.get(), 1))); - } - } - - else if(block == Blocks.GRASS_BLOCK) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.CLAY_DUST.get(), 1))); - } - } - - else if(block == Blocks.PODZOL) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.CLAY_DUST.get(), 1))); - } - } - - else if(block == Blocks.MYCELIUM) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.CLAY_DUST.get(), 1))); - } - } - - else if(block == Blocks.GRASS) - { - - double r = random.nextDouble(); - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.SUGAR_CANE, 1))); - } - - if(ModConfigs.SKYBLOCK_MODE.get()){ - if (r <= EggChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.VILLAGER_SPAWN_EGG, 1))); - } - } - } - - else if(block == Blocks.TALL_GRASS) - { - - double r = random.nextDouble(); - if (r <= SecondChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.SUGAR_CANE, 1))); - } - - if(ModConfigs.SKYBLOCK_MODE.get()){ - if (r <= EggChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.VILLAGER_SPAWN_EGG, 1))); - } - } - } - - //ICE BLOCKS - - else if(block == Blocks.ICE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.ICE_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.PACKED_ICE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.ICE_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.BLUE_ICE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.ICE_NUGGET.get(), 1))); - } - } - - //NETHER BLOCKS - - else if(block == Blocks.NETHERRACK) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.FIRE_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.SOUL_SAND) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.FIRE_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.MAGMA_BLOCK) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.FIRE_NUGGET.get(), 1))); - } - } - - //WOOD BLOCKS - - else if(block == Blocks.OAK_LOG) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.WOODEN_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.SPRUCE_LOG) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.WOODEN_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.BIRCH_LOG) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.WOODEN_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.ACACIA_LOG) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.WOODEN_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.DARK_OAK_LOG) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.WOODEN_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.JUNGLE_LOG) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.WOODEN_NUGGET.get(), 1))); - } - } - - //ORE BLOCKS - - else if(block == Blocks.IRON_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.IRON_NUGGET, 1))); - } - } - - else if(block == Blocks.GOLD_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.GOLD_NUGGET, 1))); - } - } - - else if(block == Blocks.COAL_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.COAL_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.REDSTONE_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.REDSTONE_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.NETHER_QUARTZ_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.QUARTZ_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.DIAMOND_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.DIAMOND_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.EMERALD_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.EMERALD_NUGGET.get(), 1))); - } - } - - else if(block == Blocks.LAPIS_ORE) - { - - double r = random.nextDouble(); - if (r <= DropChance) - { - world.addEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ItemList.LAPIS_NUGGET.get(), 1))); - } - } - - if (entity instanceof PlayerEntity) - { - PlayerEntity player = (PlayerEntity) entity; - if (!player.isCrouching()) - { - breakNeighbours(world, pos, (ServerPlayerEntity) player, true, stack); - return true; - } - else - { -// stack.attemptDamageItem(1, world.rand, (ServerPlayerEntity) player); - stack.damageItem(1, player, playerEntity -> playerEntity.sendBreakAnimation(EquipmentSlotType.MAINHAND)); - } - } - } - - return true; - } - - @Override - public boolean canHarvestBlock(BlockState state) - { - if (state.getBlock() == Blocks.BEDROCK) - { - return false; - } - /*|| state.isIn(BlockTags.field_219750_S DIRT_LIKE)*/ - return state.isIn(BlockTags.SAND) || state.isIn(Tags.Blocks.DIRT) || state.isIn(Tags.Blocks.GRAVEL) || state.getBlock() == Blocks.SOUL_SAND; - } - - private void breakNeighbours(World world, BlockPos pos, ServerPlayerEntity player, boolean damageItem, ItemStack stack) - { - BlockRayTraceResult rayTraceResult = ToolUtil3x3.getLookingAt(player, 6); - Direction facing = rayTraceResult.getFace(); - - List brokenBlocks = ToolUtil3x3.getBlocks(pos, facing); - for (BlockPos blockPos : brokenBlocks) - { - BlockState blockState = world.getBlockState(blockPos); - if (!canHarvestBlock(blockState)) - { - continue; - } - - if (blockState.getBlock().hasTileEntity(blockState)) - { - continue; - } - - world.destroyBlock(blockPos, false); - - if (!player.isCreative()) - { - if (damageItem) - { - player.getHeldItemMainhand().damageItem(1, player, playerEntity -> playerEntity.sendBreakAnimation(EquipmentSlotType.MAINHAND));//attemptDamageItem(1, world.rand, player instanceof ServerPlayerEntity ? (ServerPlayerEntity) player : null); - } - - ToolUtil3x3.dropItems(world, Block.getDrops(blockState, (ServerWorld) world, blockPos, null, player, player.getHeldItemMainhand()), blockPos); - ToolUtil3x3.spawnExp(world, blockPos, blockState, EnchantmentHelper.getEnchantmentLevel(Enchantments.FORTUNE, stack), EnchantmentHelper.getEnchantmentLevel(Enchantments.SILK_TOUCH, stack)); - blockState.spawnAdditionalDrops(world, blockPos, player.getHeldItemMainhand()); - } - } - } - - @Override - public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { - if(KeyboardHelper.isHoldingShift()) { - tooltip.add((new TranslationTextComponent("item.nnow.spade.line1").applyTextStyle(TextFormatting.YELLOW))); - tooltip.add((new TranslationTextComponent("item.nnow.spade.line2").applyTextStyle(TextFormatting.LIGHT_PURPLE))); - tooltip.add((new TranslationTextComponent("item.nnow.spade.line3").applyTextStyle(TextFormatting.GREEN))); - } else { - tooltip.add(new StringTextComponent("Hold " + "\u00A75" + "Shift " + "\u00A7r"+ "For More Info")); - } - } -} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/shovel/StoneSpade.java b/src/main/java/com/github/wimpingego/nnow/objects/items/shovel/StoneSpade.java deleted file mode 100644 index ab43f3b..0000000 --- a/src/main/java/com/github/wimpingego/nnow/objects/items/shovel/StoneSpade.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.github.wimpingego.nnow.objects.items.shovel; - -import com.github.wimpingego.nnow.util.ModConfigs; - -import net.minecraft.block.BlockState; -import net.minecraft.item.IItemTier; -import net.minecraft.item.ItemStack; - -public class StoneSpade extends SpadeBase{ - - Double speed = ModConfigs.STONE_TIER_TOOL_SPEED_MODIFIER.get(); - static int use = ModConfigs.STONE_TIER_TOOL_DURABILITY_MODIFIER.get(); - - public StoneSpade(IItemTier tier, float attackDamageIn, float attackSpeedIn, Properties builder) - { - super(tier, attackDamageIn, attackSpeedIn, builder.maxDamage(use)); - } - - @Override - public float getDestroySpeed(ItemStack stack, BlockState state) - { - return super.getDestroySpeed(stack, state) / speed.floatValue(); - } - -} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/spades/DiamondSpade.java b/src/main/java/com/github/wimpingego/nnow/objects/items/spades/DiamondSpade.java new file mode 100644 index 0000000..bd423de --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/spades/DiamondSpade.java @@ -0,0 +1,29 @@ +package com.github.wimpingego.nnow.objects.items.spades; + +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.BlockState; +import net.minecraft.item.IItemTier; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; + +public class DiamondSpade extends SpadeBase { + + Double speed = ModConfigs.DIAMOND_TIER_TOOL_SPEED_MODIFIER.get(); + static int use = ModConfigs.DIAMOND_TIER_TOOL_DURABILITY_MODIFIER.get(); + + public DiamondSpade(IItemTier tier, float attackDamageIn, float attackSpeedIn, Properties builder) { + super(tier, attackDamageIn, attackSpeedIn, builder.maxDamage(use)); + } + + @Override + public float getDestroySpeed(ItemStack stack, BlockState state) { + return super.getDestroySpeed(stack, state) / speed.floatValue(); + } + + @Override + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { + return repair.getItem() == Items.DIAMOND; + } + +} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/spades/EmeraldSpade.java b/src/main/java/com/github/wimpingego/nnow/objects/items/spades/EmeraldSpade.java new file mode 100644 index 0000000..6b08b7a --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/spades/EmeraldSpade.java @@ -0,0 +1,46 @@ +package com.github.wimpingego.nnow.objects.items.spades; + +import java.util.List; + +import com.github.wimpingego.nnow.util.ModConfigs; +import com.github.wimpingego.nnow.util.helpers.KeyboardHelper; + +import net.minecraft.block.BlockState; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.item.IItemTier; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.World; + +public class EmeraldSpade extends SpadeBase { + + Double speed = ModConfigs.EMERALD_TIER_TOOL_SPEED_MODIFIER.get(); + static int use = ModConfigs.EMERALD_TIER_TOOL_DURABILITY_MODIFIER.get(); + + public EmeraldSpade(IItemTier tier, float attackDamageIn, float attackSpeedIn, Properties builder) { + super(tier, attackDamageIn, attackSpeedIn, builder.maxDamage(use)); + } + + @Override + public float getDestroySpeed(ItemStack stack, BlockState state) { + return super.getDestroySpeed(stack, state) / speed.floatValue(); + } + + @Override + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { + return repair.getItem() == Items.EMERALD; + } + + @Override + public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { + if(KeyboardHelper.isHoldingShift()) { + tooltip.add((new TranslationTextComponent("item.nnow.spade.line3"))); + } else { + tooltip.add(new StringTextComponent("Hold " + "\u00A75" + "Shift " + "\u00A7r"+ "For More Info")); + } + } + +} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/spades/GoldenSpade.java b/src/main/java/com/github/wimpingego/nnow/objects/items/spades/GoldenSpade.java new file mode 100644 index 0000000..47362b8 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/spades/GoldenSpade.java @@ -0,0 +1,29 @@ +package com.github.wimpingego.nnow.objects.items.spades; + +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.BlockState; +import net.minecraft.item.IItemTier; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; + +public class GoldenSpade extends SpadeBase { + + Double speed = ModConfigs.GOLDEN_TIER_TOOL_SPEED_MODIFIER.get(); + static int use = ModConfigs.GOLDEN_TIER_TOOL_DURABILITY_MODIFIER.get(); + + public GoldenSpade(IItemTier tier, float attackDamageIn, float attackSpeedIn, Properties builder) { + super(tier, attackDamageIn, attackSpeedIn, builder.maxDamage(use)); + } + + @Override + public float getDestroySpeed(ItemStack stack, BlockState state) { + return super.getDestroySpeed(stack, state) / speed.floatValue(); + } + + @Override + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { + return repair.getItem() == Items.GOLD_INGOT; + } + +} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/spades/IronSpade.java b/src/main/java/com/github/wimpingego/nnow/objects/items/spades/IronSpade.java new file mode 100644 index 0000000..e8ffbbc --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/spades/IronSpade.java @@ -0,0 +1,29 @@ +package com.github.wimpingego.nnow.objects.items.spades; + +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.BlockState; +import net.minecraft.item.IItemTier; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; + +public class IronSpade extends SpadeBase { + + Double speed = ModConfigs.IRON_TIER_TOOL_SPEED_MODIFIER.get(); + static int use = ModConfigs.IRON_TIER_TOOL_DURABILITY_MODIFIER.get(); + + public IronSpade(IItemTier tier, float attackDamageIn, float attackSpeedIn, Properties builder) { + super(tier, attackDamageIn, attackSpeedIn, builder.maxDamage(use)); + } + + @Override + public float getDestroySpeed(ItemStack stack, BlockState state) { + return super.getDestroySpeed(stack, state) / speed.floatValue(); + } + + @Override + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { + return repair.getItem() == Items.IRON_INGOT; + } + +} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/spades/SpadeBase.java b/src/main/java/com/github/wimpingego/nnow/objects/items/spades/SpadeBase.java new file mode 100644 index 0000000..dae727c --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/spades/SpadeBase.java @@ -0,0 +1,115 @@ +package com.github.wimpingego.nnow.objects.items.spades; + +import java.util.List; + +import com.github.wimpingego.nnow.util.ToolUtil3x3; +import com.github.wimpingego.nnow.util.helpers.KeyboardHelper; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.enchantment.Enchantments; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.item.IItemTier; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ShovelItem; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.World; +import net.minecraft.world.server.ServerWorld; + +public class SpadeBase extends ShovelItem { + + public SpadeBase(IItemTier tier, float attackDamageIn, float attackSpeedIn, Properties builder) + { + super(tier, attackDamageIn, attackSpeedIn, builder); + } + + @Override + public boolean onBlockDestroyed(ItemStack stack, World world, BlockState state, BlockPos pos, LivingEntity entity) { + + if (!world.isRemote) { + if (state.getBlockHardness(world, pos) == 0) { + return true; + } + + if (entity instanceof PlayerEntity) { + PlayerEntity player = (PlayerEntity) entity; + if (!player.isCrouching()) { + breakNeighbours(world, pos, (ServerPlayerEntity) player, true, stack); + return true; + } else { + stack.damageItem(1, player, + playerEntity -> playerEntity.sendBreakAnimation(EquipmentSlotType.MAINHAND)); + } + } + } + + return true; + } + + @Override + public boolean canHarvestBlock(BlockState state) + { + if (state.getBlock() == Blocks.BEDROCK) + { + return false; + } + //return state.getBlock() == BlockTags.SAND || state.getBlock() == Tags.Blocks.DIRT || state.getBlock() == Tags.Blocks.GRAVEL || state.getBlock() == Blocks.SOUL_SAND; + return super.canHarvestBlock(state) || state.getBlock() == Blocks.GRAVEL || state.getBlock() == Blocks.SAND || state.getBlock() == Blocks.RED_SAND || state.getBlock() == Blocks.DIRT || state.getBlock() == Blocks.SOUL_SOIL || state.getBlock() == Blocks.SOUL_SAND; + } + + private void breakNeighbours(World world, BlockPos pos, ServerPlayerEntity player, boolean damageItem, ItemStack stack) + { + BlockRayTraceResult rayTraceResult = ToolUtil3x3.getLookingAt(player, 6); + Direction facing = rayTraceResult.getFace(); + + List brokenBlocks = ToolUtil3x3.getBlocks(pos, facing); + for (BlockPos blockPos : brokenBlocks) + { + BlockState blockState = world.getBlockState(blockPos); + if (!canHarvestBlock(blockState)) + { + continue; + } + + if (blockState.getBlock().hasTileEntity(blockState)) + { + continue; + } + + world.destroyBlock(blockPos, false); + + if (!player.isCreative()) + { + if (damageItem) + { + player.getHeldItemMainhand().damageItem(1, player, playerEntity -> playerEntity.sendBreakAnimation(EquipmentSlotType.MAINHAND));//attemptDamageItem(1, world.rand, player instanceof ServerPlayerEntity ? (ServerPlayerEntity) player : null); + } + + ToolUtil3x3.dropItems(world, Block.getDrops(blockState, (ServerWorld) world, blockPos, null, player, player.getHeldItemMainhand()), blockPos); + ToolUtil3x3.spawnExp(world, blockPos, blockState, EnchantmentHelper.getEnchantmentLevel(Enchantments.FORTUNE, stack), EnchantmentHelper.getEnchantmentLevel(Enchantments.SILK_TOUCH, stack)); + blockState.spawnAdditionalDrops((ServerWorld) world, blockPos, player.getHeldItemMainhand()); + } + } + } + + + public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { + if(KeyboardHelper.isHoldingShift()) { + tooltip.add((new TranslationTextComponent("item.nnow.spade.line1"))); + tooltip.add((new TranslationTextComponent("item.nnow.spade.line2"))); + tooltip.add((new TranslationTextComponent("item.nnow.spade.line3"))); + } else { + tooltip.add(new StringTextComponent("Hold " + "\u00A75" + "Shift " + "\u00A7r"+ "For More Info")); + } + } +} diff --git a/src/main/java/com/github/wimpingego/nnow/objects/items/spades/StoneSpade.java b/src/main/java/com/github/wimpingego/nnow/objects/items/spades/StoneSpade.java new file mode 100644 index 0000000..b20a14b --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/objects/items/spades/StoneSpade.java @@ -0,0 +1,29 @@ +package com.github.wimpingego.nnow.objects.items.spades; + +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraft.block.BlockState; +import net.minecraft.item.IItemTier; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; + +public class StoneSpade extends SpadeBase { + + Double speed = ModConfigs.STONE_TIER_TOOL_SPEED_MODIFIER.get(); + static int use = ModConfigs.STONE_TIER_TOOL_DURABILITY_MODIFIER.get(); + + public StoneSpade(IItemTier tier, float attackDamageIn, float attackSpeedIn, Properties builder) { + super(tier, attackDamageIn, attackSpeedIn, builder.maxDamage(use)); + } + + @Override + public float getDestroySpeed(ItemStack stack, BlockState state) { + return super.getDestroySpeed(stack, state) / speed.floatValue(); + } + + @Override + public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { + return repair.getItem() == Items.COBBLESTONE; + } + +} diff --git a/src/main/java/com/github/wimpingego/nnow/tileentity/BookshelfChestTileEntity.java b/src/main/java/com/github/wimpingego/nnow/tileentity/BookshelfChestTileEntity.java deleted file mode 100644 index bdeb3c2..0000000 --- a/src/main/java/com/github/wimpingego/nnow/tileentity/BookshelfChestTileEntity.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.github.wimpingego.nnow.tileentity; - -import javax.annotation.Nonnull; - -import com.github.wimpingego.nnow.container.BookshelfChestContainer; -import com.github.wimpingego.nnow.entities.ModTileEntityTypes; -import com.github.wimpingego.nnow.objects.blocks.BookshelfChestBlock; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.inventory.ItemStackHelper; -import net.minecraft.inventory.container.Container; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.LockableLootTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TranslationTextComponent; -import net.minecraft.world.IBlockReader; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.wrapper.InvWrapper; - -public class BookshelfChestTileEntity extends LockableLootTileEntity { - - private NonNullList chestContents = NonNullList.withSize(36, ItemStack.EMPTY); - protected int numPlayersUsing; - private IItemHandlerModifiable items = createHandler(); - private LazyOptional itemHandler = LazyOptional.of(() -> items); - - public BookshelfChestTileEntity(TileEntityType typeIn) { - super(typeIn); - } - - public BookshelfChestTileEntity() { - this(ModTileEntityTypes.BOOKSHELF_CHEST.get()); - } - - @Override - public int getSizeInventory() { - return 36; - } - - @Override - public NonNullList getItems() { - return this.chestContents; - } - - @Override - public void setItems(NonNullList itemsIn) { - this.chestContents = itemsIn; - } - - @Override - protected ITextComponent getDefaultName() { - return new TranslationTextComponent("container.bookshelf_chest"); - } - - @Override - protected Container createMenu(int id, PlayerInventory player) { - return new BookshelfChestContainer(id, player, this); - } - - @Override - public CompoundNBT write(CompoundNBT compound) { - super.write(compound); - if (!this.checkLootAndWrite(compound)) { - ItemStackHelper.saveAllItems(compound, this.chestContents); - } - return compound; - } - - @Override - public void read(CompoundNBT compound) { - super.read(compound); - this.chestContents = NonNullList.withSize(this.getSizeInventory(), ItemStack.EMPTY); - if (!this.checkLootAndRead(compound)) { - ItemStackHelper.loadAllItems(compound, this.chestContents); - } - } - - @Override - public boolean receiveClientEvent(int id, int type) { - if (id == 1) { - this.numPlayersUsing = type; - return true; - } else { - return super.receiveClientEvent(id, type); - } - } - - @Override - public void openInventory(PlayerEntity player) { - if (!player.isSpectator()) { - if (this.numPlayersUsing < 0) { - this.numPlayersUsing = 0; - } - - ++this.numPlayersUsing; - this.onOpenOrClose(); - } - } - - @Override - public void closeInventory(PlayerEntity player) { - if (!player.isSpectator()) { - --this.numPlayersUsing; - this.onOpenOrClose(); - } - } - - protected void onOpenOrClose() { - Block block = this.getBlockState().getBlock(); - if (block instanceof BookshelfChestBlock) { - this.world.addBlockEvent(this.pos, block, 1, this.numPlayersUsing); - this.world.notifyNeighborsOfStateChange(this.pos, block); - } - } - - public static int getPlayersUsing(IBlockReader reader, BlockPos pos) { - BlockState blockstate = reader.getBlockState(pos); - if (blockstate.hasTileEntity()) { - TileEntity tileentity = reader.getTileEntity(pos); - if (tileentity instanceof BookshelfChestTileEntity) { - return ((BookshelfChestTileEntity) tileentity).numPlayersUsing; - } - } - return 0; - } - - public static void swapContents(BookshelfChestTileEntity te, BookshelfChestTileEntity otherTe) { - NonNullList list = te.getItems(); - te.setItems(otherTe.getItems()); - otherTe.setItems(list); - } - - @Override - public void updateContainingBlockInfo() { - super.updateContainingBlockInfo(); - if (this.itemHandler != null) { - this.itemHandler.invalidate(); - this.itemHandler = null; - } - } - - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nonnull Direction side) { - if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { - return itemHandler.cast(); - } - return super.getCapability(cap, side); - } - - private IItemHandlerModifiable createHandler() { - return new InvWrapper(this); - } - - @Override - public void remove() { - super.remove(); - if(itemHandler != null) { - itemHandler.invalidate(); - } - } -} diff --git a/src/main/java/com/github/wimpingego/nnow/tileentity/SafeChestTileEntity.java b/src/main/java/com/github/wimpingego/nnow/tileentity/SafeChestTileEntity.java deleted file mode 100644 index 9b47a44..0000000 --- a/src/main/java/com/github/wimpingego/nnow/tileentity/SafeChestTileEntity.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.github.wimpingego.nnow.tileentity; - -import javax.annotation.Nonnull; - -import com.github.wimpingego.nnow.container.SafeChestContainer; -import com.github.wimpingego.nnow.entities.ModTileEntityTypes; -import com.github.wimpingego.nnow.objects.blocks.SafeChestBlock; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.inventory.ItemStackHelper; -import net.minecraft.inventory.container.Container; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.LockableLootTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.NonNullList; -//import net.minecraft.util.SoundCategory; -//import net.minecraft.util.SoundEvent; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TranslationTextComponent; -import net.minecraft.world.IBlockReader; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.wrapper.InvWrapper; - -public class SafeChestTileEntity extends LockableLootTileEntity { - - private NonNullList chestContents = NonNullList.withSize(36, ItemStack.EMPTY); - protected int numPlayersUsing; - private IItemHandlerModifiable items = createHandler(); - private LazyOptional itemHandler = LazyOptional.of(() -> items); - - public SafeChestTileEntity(TileEntityType typeIn) { - super(typeIn); - } - - public SafeChestTileEntity() { - this(ModTileEntityTypes.SAFE_CHEST.get()); - } - - @Override - public int getSizeInventory() { - return 27; - } - - @Override - public NonNullList getItems() { - return this.chestContents; - } - - @Override - public void setItems(NonNullList itemsIn) { - this.chestContents = itemsIn; - } - - @Override - protected ITextComponent getDefaultName() { - return new TranslationTextComponent("container.safe_chest"); - } - - @Override - protected Container createMenu(int id, PlayerInventory player) { - return new SafeChestContainer(id, player, this); - } - - @Override - public CompoundNBT write(CompoundNBT compound) { - super.write(compound); - if (!this.checkLootAndWrite(compound)) { - ItemStackHelper.saveAllItems(compound, this.chestContents); - } - return compound; - } - - @Override - public void read(CompoundNBT compound) { - super.read(compound); - this.chestContents = NonNullList.withSize(this.getSizeInventory(), ItemStack.EMPTY); - if (!this.checkLootAndRead(compound)) { - ItemStackHelper.loadAllItems(compound, this.chestContents); - } - } - - //private void playSound(SoundEvent sound) { - //double dx = (double) this.pos.getX() + 0.5D; - //double dy = (double) this.pos.getY() + 0.5D; - //double dz = (double) this.pos.getZ() + 0.5D; - //this.world.playSound((PlayerEntity) null, dx, dy, dz, sound, SoundCategory.BLOCKS, 0.5f, - // this.world.rand.nextFloat() * 0.1f + 0.9f); - //} - - @Override - public boolean receiveClientEvent(int id, int type) { - if (id == 1) { - this.numPlayersUsing = type; - return true; - } else { - return super.receiveClientEvent(id, type); - } - } - - @Override - public void openInventory(PlayerEntity player) { - if (!player.isSpectator()) { - if (this.numPlayersUsing < 0) { - this.numPlayersUsing = 0; - } - - ++this.numPlayersUsing; - this.onOpenOrClose(); - } - } - - @Override - public void closeInventory(PlayerEntity player) { - if (!player.isSpectator()) { - --this.numPlayersUsing; - this.onOpenOrClose(); - } - } - - protected void onOpenOrClose() { - Block block = this.getBlockState().getBlock(); - if (block instanceof SafeChestBlock) { - this.world.addBlockEvent(this.pos, block, 1, this.numPlayersUsing); - this.world.notifyNeighborsOfStateChange(this.pos, block); - } - } - - public static int getPlayersUsing(IBlockReader reader, BlockPos pos) { - BlockState blockstate = reader.getBlockState(pos); - if (blockstate.hasTileEntity()) { - TileEntity tileentity = reader.getTileEntity(pos); - if (tileentity instanceof SafeChestTileEntity) { - return ((SafeChestTileEntity) tileentity).numPlayersUsing; - } - } - return 0; - } - - public static void swapContents(SafeChestTileEntity te, SafeChestTileEntity otherTe) { - NonNullList list = te.getItems(); - te.setItems(otherTe.getItems()); - otherTe.setItems(list); - } - - @Override - public void updateContainingBlockInfo() { - super.updateContainingBlockInfo(); - if (this.itemHandler != null) { - this.itemHandler.invalidate(); - this.itemHandler = null; - } - } - - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nonnull Direction side) { - if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { - return itemHandler.cast(); - } - return super.getCapability(cap, side); - } - - private IItemHandlerModifiable createHandler() { - return new InvWrapper(this); - } - - @Override - public void remove() { - super.remove(); - if(itemHandler != null) { - itemHandler.invalidate(); - } - } -} diff --git a/src/main/java/com/github/wimpingego/nnow/util/ClientEventBusSubscriber.java b/src/main/java/com/github/wimpingego/nnow/util/ClientEventBusSubscriber.java deleted file mode 100644 index b87bd3e..0000000 --- a/src/main/java/com/github/wimpingego/nnow/util/ClientEventBusSubscriber.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.github.wimpingego.nnow.util; - -import com.github.wimpingego.nnow.NNOW; -import com.github.wimpingego.nnow.client.gui.BookshelfChestScreen; -import com.github.wimpingego.nnow.client.gui.SafeChestScreen; -import com.github.wimpingego.nnow.container.ModContainerTypes; - -import net.minecraft.client.gui.ScreenManager; -//import net.minecraft.client.renderer.RenderType; -//import net.minecraft.client.renderer.RenderTypeLookup; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; - - -@Mod.EventBusSubscriber(modid = NNOW.MOD_ID, bus = Bus.MOD, value = Dist.CLIENT) -public class ClientEventBusSubscriber { - - @SubscribeEvent - public static void clientSetup(FMLClientSetupEvent event) { - ScreenManager.registerFactory(ModContainerTypes.BOOKSHELF_CHEST.get(), BookshelfChestScreen::new); - ScreenManager.registerFactory(ModContainerTypes.SAFE_CHEST.get(), SafeChestScreen::new); - } -} diff --git a/src/main/java/com/github/wimpingego/nnow/util/ClientRenderer.java b/src/main/java/com/github/wimpingego/nnow/util/ClientRenderer.java index a7b80a9..7ea95df 100644 --- a/src/main/java/com/github/wimpingego/nnow/util/ClientRenderer.java +++ b/src/main/java/com/github/wimpingego/nnow/util/ClientRenderer.java @@ -7,13 +7,17 @@ public class ClientRenderer { - + public static void registerBlocks() { - Block[] blocks = { BlockList.SAFE_CHEST.get(), BlockList.BEEKEEPER_BLOCK.get(), BlockList.END_LANTERN.get(),BlockList.SEA_TRADER_POI.get(),BlockList.RSG_HEAD.get()}; - Block[] leaves = { BlockList.IRONBERRY_BUSH.get(),BlockList.GOLDBERRY_BUSH.get(),BlockList.COALBERRY_BUSH.get(),BlockList.REDSTONEBERRY_BUSH.get(), - BlockList.QUARTZBERRY_BUSH.get(),BlockList.DIAMONDBERRY_BUSH.get(),BlockList.EMERALDBERRY_BUSH.get(),BlockList.LAPISBERRY_BUSH.get(),BlockList.ICEBERRY_BUSH.get(), - BlockList.XP_BUSH.get(),BlockList.FIREBERRY_BUSH.get(),BlockList.WOODENBERRY_BUSH.get()}; + //Block[] blocks = { BlockList.BEEKEEPER_BLOCK.get(), BlockList.END_LANTERN.get(),BlockList.SEA_TRADER_POI.get(),BlockList.RSG_HEAD.get()}; + Block[] blocks = { BlockList.END_LANTERN.get(),BlockList.RSG_HEAD.get()}; + + Block[] bushes = { BlockList.ICE_BERRY_BUSH.get(),BlockList.FIRE_BERRY_BUSH.get(),BlockList.WOODEN_BERRY_BUSH.get(),BlockList.STONE_BERRY_BUSH.get(),BlockList.SAND_BERRY_BUSH.get(), + BlockList.CLAY_BERRY_BUSH.get(),BlockList.DIRT_BERRY_BUSH.get(),BlockList.GRAVEL_BERRY_BUSH.get(),BlockList.XP_BERRY_BUSH.get()}; + + Block[] ore_bushes = { BlockList.IRON_BERRY_BUSH.get(),BlockList.GOLD_BERRY_BUSH.get(),BlockList.COAL_BERRY_BUSH.get(),BlockList.REDSTONE_BERRY_BUSH.get(), + BlockList.QUARTZ_BERRY_BUSH.get(),BlockList.DIAMOND_BERRY_BUSH.get(),BlockList.EMERALD_BERRY_BUSH.get(),BlockList.LAPIS_BERRY_BUSH.get()}; Block[] glass = { BlockList.DARK_GLASS_BLOCK.get()}; @@ -27,7 +31,11 @@ public static void registerBlocks() { RenderTypeLookup.setRenderLayer(block, RenderType.getCutout()); } - for (Block block : leaves) { + for (Block block : bushes) { + RenderTypeLookup.setRenderLayer(block, RenderType.getCutout()); + } + + for (Block block : ore_bushes) { RenderTypeLookup.setRenderLayer(block, RenderType.getCutout()); } @@ -43,7 +51,6 @@ public static void registerBlocks() { RenderTypeLookup.setRenderLayer(block, RenderType.getCutout()); } } - } // BlockList.BARLEY_CROP.get(), BlockList.PEPPER_CROP.get(), \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/util/ForgeEventBusSubscriber.java b/src/main/java/com/github/wimpingego/nnow/util/ForgeEventBusSubscriber.java deleted file mode 100644 index bd1a4f7..0000000 --- a/src/main/java/com/github/wimpingego/nnow/util/ForgeEventBusSubscriber.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.github.wimpingego.nnow.util; - -import com.github.wimpingego.nnow.NNOW; - -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; - -@Mod.EventBusSubscriber(modid = NNOW.MOD_ID, bus = Bus.FORGE) -public class ForgeEventBusSubscriber {} diff --git a/src/main/java/com/github/wimpingego/nnow/util/MetalClientRenderer.java b/src/main/java/com/github/wimpingego/nnow/util/MetalClientRenderer.java new file mode 100644 index 0000000..e72be04 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/util/MetalClientRenderer.java @@ -0,0 +1,20 @@ +package com.github.wimpingego.nnow.util; + +import com.github.wimpingego.nnow.init.MetalBlockList; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.RenderTypeLookup; + +public class MetalClientRenderer { + + public static void registerBlocks() { + + Block[] metal_bushes = {MetalBlockList.COPPER_BERRY_BUSH.get(),MetalBlockList.NICKEL_BERRY_BUSH.get(),MetalBlockList.SILVER_BERRY_BUSH.get(), + MetalBlockList.URANIUM_BERRY_BUSH.get(),MetalBlockList.LEAD_BERRY_BUSH.get(),MetalBlockList.ALUMINUM_BERRY_BUSH.get(),MetalBlockList.TIN_BERRY_BUSH.get(),MetalBlockList.OSMIUM_BERRY_BUSH.get(), + MetalBlockList.BISMUTH_BERRY_BUSH.get(),MetalBlockList.ZINC_BERRY_BUSH.get(),MetalBlockList.PLATINUM_BERRY_BUSH.get(),MetalBlockList.IRIDIUM_BERRY_BUSH.get()}; + + for (Block block : metal_bushes) { + RenderTypeLookup.setRenderLayer(block, RenderType.getCutout()); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/util/ModConfigs.java b/src/main/java/com/github/wimpingego/nnow/util/ModConfigs.java index c17eea0..eb36796 100644 --- a/src/main/java/com/github/wimpingego/nnow/util/ModConfigs.java +++ b/src/main/java/com/github/wimpingego/nnow/util/ModConfigs.java @@ -16,20 +16,19 @@ public class ModConfigs { public static final String MAGNET = "Magnet"; public static final String VIAGRE = "Viagre"; public static final String BOOKSHELF = "Bookshelf"; - public static final String POKING = "Poking_Stick"; - public static final String TROLL = "Troll_Item"; - public static final String SKYBLOCK = "Skyblock_Mode"; + public static final String POKING = "Poking Stick"; + public static final String TROLL = "Troll Item"; public static final String TRAP = "Traps"; - public static final String GENS = "Cobblestone_Generator"; - public static final String GENSCOST = "Tool_Durability_Cost"; - public static final String GENSRETURN = "Item_Return_Rate"; - public static final String TOOLS = "3x3_Tools"; - public static final String TOOLSDROPS = "Drops"; + public static final String GENS = "Cobblestone Generator"; + public static final String GENSCOST = "Tool Durability Cost"; + public static final String GENSRETURN = "Item Return Rate"; + public static final String TOOLS = "3x3 Tools"; public static final String TOOLSPEED = "Speed"; public static final String TOOLMAXUSE = "Durability"; - public static final String BERRYS = "Berry_Bush"; - public static final String BDROP = "Drop_Rates"; - public static final String BDAMAGE = "Damage_Setting"; + public static final String BERRYS = "Berry Bush"; + public static final String BDROP = "Drop Rates"; + public static final String BDAMAGE = "Damage Setting"; + public static final String METALS = "Metal Items Loaded"; private static final ForgeConfigSpec.Builder COMMON_BUILDER = new ForgeConfigSpec.Builder(); public static ForgeConfigSpec COMMON_CONFIG; @@ -38,10 +37,16 @@ public class ModConfigs { public static IntValue VIAGRA_RADIUS; public static IntValue VIAGRA_TICK_DELAY; + public static ConfigValue VIAGRA_MAX_USES; + public static BooleanValue VIAGRA_TAKES_USES; + + public static BooleanValue METALS_ITEMS_LOADED; public static IntValue ENCHANT_POWER; public static ConfigValue MAX_USES; + public static DoubleValue SAPLING_DROP_CHANCE; + public static DoubleValue CACTUS_DROP_CHANCE; public static ConfigValue XP_POINTS; public static ConfigValue COAL_NUGGETS; @@ -55,6 +60,24 @@ public class ModConfigs { public static ConfigValue ICE_NUGGETS; public static ConfigValue FIRE_NUGGETS; public static ConfigValue WOODEN_NUGGETS; + public static ConfigValue STONE_DUST; + public static ConfigValue SAND_DUST; + public static ConfigValue CLAY_DUST; + public static ConfigValue DIRT_DUST; + public static ConfigValue GRAVEL_DUST; + + public static ConfigValue COPPER_NUGGETS; + public static ConfigValue NICKEL_NUGGETS; + public static ConfigValue SILVER_NUGGETS; + public static ConfigValue URANIUM_NUGGETS; + public static ConfigValue LEAD_NUGGETS; + public static ConfigValue ALUMINUM_NUGGETS; + public static ConfigValue TIN_NUGGETS; + public static ConfigValue OSMIUM_NUGGETS; + public static ConfigValue BISMUTH_NUGGETS; + public static ConfigValue ZINC_NUGGETS; + public static ConfigValue PLATINUM_NUGGETS; + public static ConfigValue IRIDIUM_NUGGETS; public static BooleanValue BERRY_DO_DAMAGE; public static ConfigValue BERRY_DAMAGE; @@ -70,45 +93,43 @@ public class ModConfigs { public static ConfigValue D_COST; public static ConfigValue D_RETURN; - public static BooleanValue GIVEONLOGIN; - - public static BooleanValue SKYBLOCK_MODE; - - public static DoubleValue DROP_CHANCE; - public static DoubleValue SECOND_CHANCE; - public static DoubleValue EGG_CHANCE; + public static BooleanValue GIVEONLOGIN; public static DoubleValue STONE_TIER_TOOL_SPEED_MODIFIER; public static DoubleValue IRON_TIER_TOOL_SPEED_MODIFIER; public static DoubleValue GOLDEN_TIER_TOOL_SPEED_MODIFIER; public static DoubleValue DIAMOND_TIER_TOOL_SPEED_MODIFIER; + public static DoubleValue EMERALD_TIER_TOOL_SPEED_MODIFIER; public static ConfigValue STONE_TIER_TOOL_DURABILITY_MODIFIER; public static ConfigValue IRON_TIER_TOOL_DURABILITY_MODIFIER; public static ConfigValue GOLDEN_TIER_TOOL_DURABILITY_MODIFIER; public static ConfigValue DIAMOND_TIER_TOOL_DURABILITY_MODIFIER; + public static ConfigValue EMERALD_TIER_TOOL_DURABILITY_MODIFIER; - public static ConfigValue IRON_ATTACK_POWER; public static ConfigValue GOLDERN_ATTACK_POWER; public static ConfigValue DIAMOND_ATTACK_POWER; - public static ConfigValue WITHER_ATTACK_POWER; + public static ConfigValue WITHER_ATTACK_POWER; static { initConfig(); } private static void initConfig() { - COMMON_BUILDER.push(SKYBLOCK); - SKYBLOCK_MODE = COMMON_BUILDER.comment().define("SkyBlock mode", true); - COMMON_BUILDER.pop(); COMMON_BUILDER.push(BOOKSHELF); ENCHANT_POWER = COMMON_BUILDER.comment("Enchant power level modifier.").defineInRange("Enchant Level", 1, 1,16); - COMMON_BUILDER.pop(); + COMMON_BUILDER.pop(); + + COMMON_BUILDER.push(METALS); + METALS_ITEMS_LOADED = COMMON_BUILDER.comment().define("Metal blocks items and berrys are loaded", true); + COMMON_BUILDER.pop(); COMMON_BUILDER.push(VIAGRE); + VIAGRA_MAX_USES = COMMON_BUILDER.comment().define("VIAGRA durability modifier", 2342); + VIAGRA_TAKES_USES = COMMON_BUILDER.comment().define("VIAGRA has a durability cost when in main hand", true); VIAGRA_RADIUS = COMMON_BUILDER.comment("Growth radius size modifier.").defineInRange("Growth Radius", 8, 1,16); - VIAGRA_TICK_DELAY = COMMON_BUILDER.comment("Tick Delay modifier.").defineInRange("Tick Delay", 2, 1, 20); + VIAGRA_TICK_DELAY = COMMON_BUILDER.comment("Tick Delay modifier. (Lower is faster)").defineInRange("Tick Delay", 10, 1, 20); COMMON_BUILDER.pop(); COMMON_BUILDER.push(MAGNET); @@ -117,6 +138,8 @@ private static void initConfig() { COMMON_BUILDER.push(POKING); MAX_USES = COMMON_BUILDER.comment().define("Poking Stick max use modifier", 64); + SAPLING_DROP_CHANCE = COMMON_BUILDER.comment().defineInRange("Sapling drop chance modifier", 0.5, 0.00, 1.0); + CACTUS_DROP_CHANCE = COMMON_BUILDER.comment().defineInRange("Cactus drop chance modifier", 0.25, 0.00, 1.0); COMMON_BUILDER.pop(); COMMON_BUILDER.push(TROLL); @@ -124,9 +147,8 @@ private static void initConfig() { COMMON_BUILDER.pop(); COMMON_BUILDER.push(TRAP); - IRON_ATTACK_POWER = COMMON_BUILDER.comment().define("Iron monster trap attack power modifier", 6); - GOLDERN_ATTACK_POWER = COMMON_BUILDER.comment().define("Goldern monster trap attack power modifier", 4); - DIAMOND_ATTACK_POWER = COMMON_BUILDER.comment().define("Diamond monster trap attack power modifier", 7); + GOLDERN_ATTACK_POWER = COMMON_BUILDER.comment().define("Goldern monster trap attack power modifier", 6); + DIAMOND_ATTACK_POWER = COMMON_BUILDER.comment().define("Diamond monster trap attack power modifier", 10); WITHER_ATTACK_POWER = COMMON_BUILDER.comment().define("Wither monster trap attack power modifier", 320); COMMON_BUILDER.pop(); @@ -161,6 +183,23 @@ private static void initConfig() { FIRE_NUGGETS = COMMON_BUILDER.comment().define("Fire Nuggets", 1); WOODEN_NUGGETS = COMMON_BUILDER.comment().define("Wooden Nuggets", 1); XP_POINTS = COMMON_BUILDER.comment().define("XP Orbs", 64); + STONE_DUST = COMMON_BUILDER.comment().define("Stone dust", 4); + SAND_DUST = COMMON_BUILDER.comment().define("sand dust", 4); + CLAY_DUST = COMMON_BUILDER.comment().define("Clay balls", 4); + DIRT_DUST = COMMON_BUILDER.comment().define("Dirt dust", 4); + GRAVEL_DUST = COMMON_BUILDER.comment().define("Gravel dust", 4); + COPPER_NUGGETS = COMMON_BUILDER.comment().define("Copper Nuggets", 1); + NICKEL_NUGGETS = COMMON_BUILDER.comment().define("Nickel Nuggets", 1); + SILVER_NUGGETS = COMMON_BUILDER.comment().define("Sliver Nuggets", 1); + URANIUM_NUGGETS = COMMON_BUILDER.comment().define("Uranium Nuggets", 1); + LEAD_NUGGETS = COMMON_BUILDER.comment().define("Lead Nuggets", 1); + ALUMINUM_NUGGETS = COMMON_BUILDER.comment().define("Aluminum Nuggets", 1); + TIN_NUGGETS = COMMON_BUILDER.comment().define("Tin Nuggets", 1); + OSMIUM_NUGGETS = COMMON_BUILDER.comment().define("Osmium Nuggets", 1); + BISMUTH_NUGGETS = COMMON_BUILDER.comment().define("Bismuth Nuggets", 1); + ZINC_NUGGETS = COMMON_BUILDER.comment().define("Zinc Nuggets", 1); + PLATINUM_NUGGETS = COMMON_BUILDER.comment().define("Platinum Nuggets", 1); + IRIDIUM_NUGGETS = COMMON_BUILDER.comment().define("Iridium Nuggets", 1); COMMON_BUILDER.pop(); COMMON_BUILDER.push(BDAMAGE); BERRY_DO_DAMAGE = COMMON_BUILDER.comment().define("Berry Bushes do damage", true); @@ -169,22 +208,19 @@ private static void initConfig() { COMMON_BUILDER.pop(); COMMON_BUILDER.push(TOOLS); - COMMON_BUILDER.push(TOOLSDROPS); - DROP_CHANCE = COMMON_BUILDER.comment().defineInRange("Dust drop chance modifier", 0.5, 0.00, 1.0); - SECOND_CHANCE = COMMON_BUILDER.comment().defineInRange("Second item drop chance modifier (Suger cane & Cactus)",0.05, 0.00, 1.0); - EGG_CHANCE = COMMON_BUILDER.comment().defineInRange("Spawn egg drop chance modifier (If Skyblock is set to TRUE)",0.005, 0.00, 1.0); - COMMON_BUILDER.pop(); COMMON_BUILDER.push(TOOLSPEED); STONE_TIER_TOOL_SPEED_MODIFIER = COMMON_BUILDER.comment().defineInRange("Stone Tier speed modifier",4.5, 1.0, 10.0); IRON_TIER_TOOL_SPEED_MODIFIER = COMMON_BUILDER.comment().defineInRange("Iron Tier speed modifier",3.5, 1.0, 10.0); GOLDEN_TIER_TOOL_SPEED_MODIFIER = COMMON_BUILDER.comment().defineInRange("Golden Tier speed modifier",2.0, 1.0, 10.0); DIAMOND_TIER_TOOL_SPEED_MODIFIER = COMMON_BUILDER.comment().defineInRange("Diamond Tier speed modifier",2.0, 1.0, 10.0); + EMERALD_TIER_TOOL_SPEED_MODIFIER = COMMON_BUILDER.comment().defineInRange("Emerald Tier speed modifier",2.0, 1.0, 10.0); COMMON_BUILDER.pop(); COMMON_BUILDER.push(TOOLMAXUSE); STONE_TIER_TOOL_DURABILITY_MODIFIER = COMMON_BUILDER.comment().define("Stone Tier durability modifier",197); IRON_TIER_TOOL_DURABILITY_MODIFIER = COMMON_BUILDER.comment().define("Iron Tier durability modifier",375); GOLDEN_TIER_TOOL_DURABILITY_MODIFIER = COMMON_BUILDER.comment().define("Golden Tier durability modifier",48); DIAMOND_TIER_TOOL_DURABILITY_MODIFIER = COMMON_BUILDER.comment().define("Diamond Tier durability modifier",2342); + EMERALD_TIER_TOOL_DURABILITY_MODIFIER = COMMON_BUILDER.comment().define("Emerald Tier durability modifier",2342); COMMON_BUILDER.pop(); COMMON_BUILDER.pop(); diff --git a/src/main/java/com/github/wimpingego/nnow/util/PlayerSpecialAbilities.java b/src/main/java/com/github/wimpingego/nnow/util/PlayerSpecialAbilities.java index f2dfb00..692fa06 100644 --- a/src/main/java/com/github/wimpingego/nnow/util/PlayerSpecialAbilities.java +++ b/src/main/java/com/github/wimpingego/nnow/util/PlayerSpecialAbilities.java @@ -1,7 +1,6 @@ package com.github.wimpingego.nnow.util; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.potion.EffectInstance; @@ -18,16 +17,6 @@ public static void giveFullHealth(World world, PlayerEntity player, ItemStack it player.setHealth(20); return; } - - //Set player health beyond normal max health - public static void giveNewMaxHealth(World world, PlayerEntity player, ItemStack itemstack, double newMax) - { - player.getAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(newMax); - float healthAsFloat = (float) newMax; - player.setHealth(healthAsFloat); - - return; - } //Increases the player's food level to max on tick update, based on inputs public static void giveRegenEffect(World world, PlayerEntity player, ItemStack itemstack, int newfoodlevel, float newsatlevel) diff --git a/src/main/java/com/github/wimpingego/nnow/util/SlabAction.java b/src/main/java/com/github/wimpingego/nnow/util/SlabAction.java new file mode 100644 index 0000000..b99e832 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/util/SlabAction.java @@ -0,0 +1,50 @@ +package com.github.wimpingego.nnow.util; + +import com.github.wimpingego.nnow.init.BlockList; + +import net.minecraft.block.BlockState; +import net.minecraft.block.SlabBlock; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemUseContext; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Direction; +import net.minecraft.util.Hand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.world.World; + +public class SlabAction +{ + + @SuppressWarnings("deprecation") + public static ActionResultType onItemUseSpade(BlockState state, World worldIn, BlockPos pos, + PlayerEntity playerIn, Hand hand, BlockRayTraceResult p_225533_6_) + { + + ItemUseContext context = new ItemUseContext(playerIn, hand, p_225533_6_); + World world = context.getWorld(); + BlockPos blockpos = context.getPos(); + + if (context.getFace() != Direction.DOWN && world.getBlockState(blockpos.up()).isAir()) + { + BlockState blockstate = BlockList.PATH_SLAB.get().getDefaultState().with(SlabBlock.TYPE, state.get(SlabBlock.TYPE)).with(SlabBlock.WATERLOGGED, state.get(SlabBlock.WATERLOGGED)); + + if (blockstate != null) + { + PlayerEntity playerentity = context.getPlayer(); + world.playSound(playerentity, blockpos, SoundEvents.ITEM_SHOVEL_FLATTEN, SoundCategory.BLOCKS, 1.0F, 1.0F); + world.setBlockState(blockpos, blockstate); + if (playerentity != null) + { + context.getItem().damageItem(1, playerentity, (p_220043_1_) -> { + p_220043_1_.sendBreakAnimation(context.getHand()); + }); + } + return ActionResultType.SUCCESS; + } + } + return ActionResultType.FAIL; + } +} diff --git a/src/main/java/com/github/wimpingego/nnow/util/ToolUtil3x3.java b/src/main/java/com/github/wimpingego/nnow/util/ToolUtil3x3.java index 6cf66e3..c968e46 100644 --- a/src/main/java/com/github/wimpingego/nnow/util/ToolUtil3x3.java +++ b/src/main/java/com/github/wimpingego/nnow/util/ToolUtil3x3.java @@ -13,7 +13,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.Vec3d; +import net.minecraft.util.math.vector.Vector3d; import net.minecraft.world.World; import net.minecraftforge.items.ItemStackHandler; @@ -28,26 +28,26 @@ public static BlockRayTraceResult getLookingAt(PlayerEntity player, double range { World world = player.world; - Vec3d look = player.getLookVec(); - Vec3d startPos = getVec3d(player).add(0, player.getEyeHeight(), 0); - Vec3d endPos = startPos.add(look.mul(range, range, range)); + Vector3d look = player.getLookVec(); + Vector3d startPos = getVec3d(player).add(0, player.getEyeHeight(), 0); + Vector3d endPos = startPos.add(look.mul(range, range, range)); RayTraceContext context = new RayTraceContext(startPos, endPos, RayTraceContext.BlockMode.OUTLINE, fluidMode, player); return world.rayTraceBlocks(context); } - public static Vec3d getVec3d(BlockPos pos) + public static Vector3d getVec3d(BlockPos pos) { - return new Vec3d(pos.getX(), pos.getY(), pos.getZ()); + return new Vector3d(pos.getX(), pos.getY(), pos.getZ()); } - public static Vec3d getVec3d(Entity entity) + public static Vector3d getVec3d(Entity entity) { return entity.getPositionVec(); // return new Vec3d(entity.posX, entity.posY, entity.posZ); } - public static BlockRayTraceResult getLookingAt(Vec3d position, Vec3d look, double range, Entity entity) + public static BlockRayTraceResult getLookingAt(Vector3d position, Vector3d look, double range, Entity entity) { - Vec3d endPos = position.add(look.mul(range, range, range)); + Vector3d endPos = position.add(look.mul(range, range, range)); RayTraceContext context = new RayTraceContext(position, endPos, RayTraceContext.BlockMode.OUTLINE, RayTraceContext.FluidMode.NONE, entity); return entity.world.rayTraceBlocks(context); } diff --git a/src/main/java/com/github/wimpingego/nnow/util/enums/ModArmorMaterials.java b/src/main/java/com/github/wimpingego/nnow/util/enums/ModArmorMaterials.java index d47f285..141e298 100644 --- a/src/main/java/com/github/wimpingego/nnow/util/enums/ModArmorMaterials.java +++ b/src/main/java/com/github/wimpingego/nnow/util/enums/ModArmorMaterials.java @@ -85,4 +85,10 @@ public String getName() { public float getToughness() { return this.toughness; } + + @Override + public float getKnockbackResistance() { + // TODO Auto-generated method stub + return 0; + } } diff --git a/src/main/java/com/github/wimpingego/nnow/util/loot/LootDropMods.java b/src/main/java/com/github/wimpingego/nnow/util/loot/LootDropMods.java new file mode 100644 index 0000000..a726415 --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/util/loot/LootDropMods.java @@ -0,0 +1,133 @@ +package com.github.wimpingego.nnow.util.loot; + +/* + * BluSunrize + * Copyright (c) 2020 + * + * This code is licensed under "Blu's License of Common Sense" + * Details can be found in the license file in the root folder of this project + */ + +import com.github.wimpingego.nnow.NNOW; +import com.google.gson.JsonObject; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.JSONUtils; +import net.minecraft.util.ResourceLocation; +import net.minecraft.loot.LootContext; +import net.minecraft.loot.conditions.ILootCondition; +import net.minecraftforge.common.loot.GlobalLootModifierSerializer; +import net.minecraftforge.common.loot.LootModifier; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; +import net.minecraftforge.registries.ForgeRegistries; + +import javax.annotation.Nonnull; +import java.util.List; + +@EventBusSubscriber(modid = NNOW.MOD_ID, bus = Bus.MOD) +public class LootDropMods { + + public static final boolean ENABLE = true; + + @SubscribeEvent + public static void registerModifierSerializers( + @Nonnull final RegistryEvent.Register> event) { + if (ENABLE) { + event.getRegistry().register(new DropsConverterModifier.Serializer() + .setRegistryName(new ResourceLocation(NNOW.MOD_ID, "hammer_gravel_dust_from_cobblestone"))); + event.getRegistry().register(new DropsConverterModifier.Serializer() + .setRegistryName(new ResourceLocation(NNOW.MOD_ID, "hammer_sand_dust_from_gravel"))); + event.getRegistry().register(new DropsConverterModifier.Serializer() + .setRegistryName(new ResourceLocation(NNOW.MOD_ID, "hammer_dirt_dust_from_sand"))); + event.getRegistry().register(new DropsConverterModifier.Serializer() + .setRegistryName(new ResourceLocation(NNOW.MOD_ID, "hammer_dirt_dust_from_red_sand"))); + event.getRegistry().register(new DropsConverterModifier.Serializer() + .setRegistryName(new ResourceLocation(NNOW.MOD_ID, "hammer_clay_ball_from_dirt"))); + + event.getRegistry().register(new DropsConverterModifier.Serializer() + .setRegistryName(new ResourceLocation(NNOW.MOD_ID, "spade_sand_dust_from_gravel"))); + event.getRegistry().register(new DropsConverterModifier.Serializer() + .setRegistryName(new ResourceLocation(NNOW.MOD_ID, "spade_dirt_dust_from_sand"))); + event.getRegistry().register(new DropsConverterModifier.Serializer() + .setRegistryName(new ResourceLocation(NNOW.MOD_ID, "spade_dirt_dust_from_red_sand"))); + event.getRegistry().register(new DropsConverterModifier.Serializer() + .setRegistryName(new ResourceLocation(NNOW.MOD_ID, "spade_clay_ball_from_dirt"))); + event.getRegistry().register(new DropsConverterModifier.Serializer() + .setRegistryName(new ResourceLocation(NNOW.MOD_ID, "test"))); + + event.getRegistry() + .register(new SugarCaneDropsSerializer().setRegistryName(NNOW.MOD_ID, "sugar_cane_drops")); + } + } + + private static class DropsConverterModifier extends LootModifier { + private final int numSeedsToConvert; + private final Item itemToCheck; + private final Item itemReward; + + public DropsConverterModifier(ILootCondition[] conditionsIn, int numSeeds, Item itemCheck, Item reward) { + super(conditionsIn); + numSeedsToConvert = numSeeds; + itemToCheck = itemCheck; + itemReward = reward; + } + + @Nonnull + @Override + public List doApply(List generatedLoot, LootContext context) { + int numSeeds = 0; + for (ItemStack stack : generatedLoot) { + if (stack.getItem() == itemToCheck) + numSeeds += stack.getCount(); + } + if (numSeeds >= numSeedsToConvert) { + generatedLoot.removeIf(x -> x.getItem() == itemToCheck); + generatedLoot.add(new ItemStack(itemReward, (numSeeds / numSeedsToConvert))); + numSeeds = numSeeds % numSeedsToConvert; + if (numSeeds > 0) + generatedLoot.add(new ItemStack(itemToCheck, numSeeds)); + } + return generatedLoot; + } + + private static class Serializer extends GlobalLootModifierSerializer { + + @Override + public DropsConverterModifier read(ResourceLocation name, JsonObject object, + ILootCondition[] conditionsIn) { + int numSeeds = JSONUtils.getInt(object, "numSeeds"); + Item olddrop = ForgeRegistries.ITEMS + .getValue(new ResourceLocation((JSONUtils.getString(object, "seedItem")))); + Item newdrop = ForgeRegistries.ITEMS + .getValue(new ResourceLocation(JSONUtils.getString(object, "replacement"))); + return new DropsConverterModifier(conditionsIn, numSeeds, olddrop, newdrop); + } + } + } + + private static class SugarCaneDropsModifier extends LootModifier { + + protected SugarCaneDropsModifier(ILootCondition[] conditionsIn) { + super(conditionsIn); + } + + protected List doApply(List generatedLoot, LootContext context) { + generatedLoot.add(new ItemStack(Items.SUGAR_CANE)); + return generatedLoot; + } + } + private static class SugarCaneDropsSerializer extends GlobalLootModifierSerializer { + + @Override + public SugarCaneDropsModifier read(ResourceLocation location, JsonObject object, + ILootCondition[] ailootcondition) { + return new SugarCaneDropsModifier(ailootcondition); + } + } +} + diff --git a/src/main/java/com/github/wimpingego/nnow/villagers/MetalTradesRegistration.java b/src/main/java/com/github/wimpingego/nnow/villagers/MetalTradesRegistration.java new file mode 100644 index 0000000..6cc343d --- /dev/null +++ b/src/main/java/com/github/wimpingego/nnow/villagers/MetalTradesRegistration.java @@ -0,0 +1,41 @@ +package com.github.wimpingego.nnow.villagers; + +import com.github.wimpingego.nnow.NNOW; +import com.github.wimpingego.nnow.init.MetalItemList; +import com.github.wimpingego.nnow.util.ModConfigs; + +import net.minecraftforge.event.village.VillagerTradesEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(modid = NNOW.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE) + +public class MetalTradesRegistration { + + @SubscribeEvent + public static void registerTrades(VillagerTradesEvent event){ + + if (event.getType() == VillagerProfessions.INGOT_TRADER) + { + if(ModConfigs.METALS_ITEMS_LOADED.get() == true) { + + event.getTrades().get(1).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(1,12).setForSale(MetalItemList.COPPER_INGOT.get(), 1,4).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(1,12).setForSale(MetalItemList.TIN_INGOT.get(), 1,4).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(1,12).setForSale(MetalItemList.ZINC_INGOT.get(), 1,4).build())); + + event.getTrades().get(2).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(4,16).setForSale(MetalItemList.SILVER_INGOT.get(),1,4).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(4,16).setForSale(MetalItemList.LEAD_INGOT.get(),1,4).build())); + + event.getTrades().get(3).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(4,24).setForSale(MetalItemList.NICKEL_INGOT.get(),1,4).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(4,24).setForSale(MetalItemList.ALUMINUM_INGOT.get(),1,4).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(4,24).setForSale(MetalItemList.OSMIUM_INGOT .get(),1,4).build())); + + event.getTrades().get(4).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,32).setForSale(MetalItemList.URANIUM_INGOT.get(), 1,4).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,32).setForSale(MetalItemList.BISMUTH_INGOT.get(),1,4).build())); + + event.getTrades().get(5).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(16,64).setForSale(MetalItemList.PLATINUM_INGOT.get(),1,4).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(16,64).setForSale(MetalItemList.IRIDIUM_INGOT.get(),1,4).build())); + } + } + } +} diff --git a/src/main/java/com/github/wimpingego/nnow/villagers/PointOfInterestTypes.java b/src/main/java/com/github/wimpingego/nnow/villagers/PointOfInterestTypes.java index 25a90db..d0bfbd5 100644 --- a/src/main/java/com/github/wimpingego/nnow/villagers/PointOfInterestTypes.java +++ b/src/main/java/com/github/wimpingego/nnow/villagers/PointOfInterestTypes.java @@ -3,6 +3,7 @@ import com.github.wimpingego.nnow.NNOW; import com.github.wimpingego.nnow.init.BlockList; +//import net.minecraft.block.Blocks; import net.minecraft.village.PointOfInterestType; import net.minecraftforge.event.RegistryEvent.Register; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -26,19 +27,33 @@ public class PointOfInterestTypes public static final PointOfInterestType END_TRADER = null; public static final PointOfInterestType SEA_TRADER = null; public static final PointOfInterestType SEA_FISHERMAN = null; + public static final PointOfInterestType NETHER_TRADER = null; + public static final PointOfInterestType INGOT_TRADER = null; @SubscribeEvent public static void registerPointOfInterestTypes(Register event) - { + { IForgeRegistry registry = event.getRegistry(); registry.register(VillagerUtil.pointOfInterestType("old_derpy", VillagerUtil.getAllStates(BlockList.SWORD_IN_STONE.get()), 1, 1).setRegistryName(NNOW.MOD_ID, "old_derpy")); registry.register(VillagerUtil.pointOfInterestType("beekeeper", VillagerUtil.getAllStates(BlockList.BEEKEEPER_BLOCK.get()), 1, 1).setRegistryName(NNOW.MOD_ID, "beekeeper")); - registry.register(VillagerUtil.pointOfInterestType("end_trader", VillagerUtil.getAllStates(BlockList.END_LANTERN.get()), 1, 1).setRegistryName(NNOW.MOD_ID, "end_trader")); + registry.register(VillagerUtil.pointOfInterestType("end_trader", VillagerUtil.getAllStates(BlockList.END_TRADER.get()), 1, 1).setRegistryName(NNOW.MOD_ID, "end_trader")); registry.register(VillagerUtil.pointOfInterestType("sea_trader", VillagerUtil.getAllStates(BlockList.SEA_TRADER_POI.get()), 1, 1).setRegistryName(NNOW.MOD_ID, "sea_trader")); registry.register(VillagerUtil.pointOfInterestType("sea_fisherman", VillagerUtil.getAllStates(BlockList.SEA_FISHERMAN_POI.get()), 1, 1).setRegistryName(NNOW.MOD_ID, "sea_fisherman")); - - registry.register(VillagerUtil.pointOfInterestType("banker", VillagerUtil.getAllStates(BlockList.SAFE_CHEST.get()), 1, 1).setRegistryName(NNOW.MOD_ID, "banker")); + registry.register(VillagerUtil.pointOfInterestType("nether_trader", VillagerUtil.getAllStates(BlockList.NETHER_TRADER_POI.get()), 1, 1).setRegistryName(NNOW.MOD_ID, "nether_trader")); + registry.register(VillagerUtil.pointOfInterestType("banker", VillagerUtil.getAllStates(BlockList.BANKER_POI.get()), 1, 1).setRegistryName(NNOW.MOD_ID, "banker")); registry.register(VillagerUtil.pointOfInterestType("monster_trapper", VillagerUtil.getAllStates(BlockList.TRAP_BLOCK.get()), 1, 1).setRegistryName(NNOW.MOD_ID, "monster_trapper")); + registry.register(VillagerUtil.pointOfInterestType("ingot_trader", VillagerUtil.getAllStates(BlockList.INGOT_FURNACE.get()), 1, 1).setRegistryName(NNOW.MOD_ID, "ingot_trader")); + +// registry.register(VillagerUtil.pointOfInterestType("old_derpy", VillagerUtil.getAllStates(Blocks.ACACIA_DOOR), 1, 1).setRegistryName(NNOW.MOD_ID, "old_derpy")); +// registry.register(VillagerUtil.pointOfInterestType("beekeeper", VillagerUtil.getAllStates(Blocks.ACACIA_DOOR), 1, 1).setRegistryName(NNOW.MOD_ID, "beekeeper")); +// registry.register(VillagerUtil.pointOfInterestType("end_trader", VillagerUtil.getAllStates(Blocks.ACACIA_DOOR), 1, 1).setRegistryName(NNOW.MOD_ID, "end_trader")); +// registry.register(VillagerUtil.pointOfInterestType("sea_trader", VillagerUtil.getAllStates(Blocks.ACACIA_DOOR), 1, 1).setRegistryName(NNOW.MOD_ID, "sea_trader")); +// registry.register(VillagerUtil.pointOfInterestType("sea_fisherman", VillagerUtil.getAllStates(Blocks.ACACIA_DOOR), 1, 1).setRegistryName(NNOW.MOD_ID, "sea_fisherman")); +// registry.register(VillagerUtil.pointOfInterestType("nether_trader", VillagerUtil.getAllStates(Blocks.ACACIA_DOOR), 1, 1).setRegistryName(NNOW.MOD_ID, "nether_trader")); +// registry.register(VillagerUtil.pointOfInterestType("banker", VillagerUtil.getAllStates(Blocks.ACACIA_DOOR), 1, 1).setRegistryName(NNOW.MOD_ID, "banker")); +// registry.register(VillagerUtil.pointOfInterestType("monster_trapper", VillagerUtil.getAllStates(Blocks.ACACIA_DOOR), 1, 1).setRegistryName(NNOW.MOD_ID, "monster_trapper")); +// registry.register(VillagerUtil.pointOfInterestType("ingot_trader", VillagerUtil.getAllStates(Blocks.ACACIA_DOOR), 1, 1).setRegistryName(NNOW.MOD_ID, "ingot_trader")); + } } \ No newline at end of file diff --git a/src/main/java/com/github/wimpingego/nnow/villagers/RandomTradeBuilder.java b/src/main/java/com/github/wimpingego/nnow/villagers/RandomTradeBuilder.java index b788907..80716a4 100644 --- a/src/main/java/com/github/wimpingego/nnow/villagers/RandomTradeBuilder.java +++ b/src/main/java/com/github/wimpingego/nnow/villagers/RandomTradeBuilder.java @@ -1,11 +1,11 @@ package com.github.wimpingego.nnow.villagers; - import java.util.ArrayList; import java.util.Random; import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Function; + import net.minecraft.entity.merchant.villager.VillagerTrades.ITrade; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -129,7 +129,7 @@ public RandomTradeBuilder setForSale(Item item, int min, int max) return this.setForSale(RandomTradeBuilder.createFunction(item, min, max)); } - public RandomTradeBuilder setEmeraldPrice(int emeralds) + public RandomTradeBuilder setEmeraldPrice(int emeralds) { return this.setPrice((random) -> new ItemStack(Items.EMERALD, emeralds)); } @@ -181,6 +181,7 @@ public static Function createFunction(Item item, int min, int { return (random) -> new ItemStack(item, random.nextInt(max) + min); } + // --- registering stuff --- protected RandomTradeBuilder register(int index) diff --git a/src/main/java/com/github/wimpingego/nnow/villagers/TradesRegistration.java b/src/main/java/com/github/wimpingego/nnow/villagers/TradesRegistration.java index cc5b8bc..4d6909a 100644 --- a/src/main/java/com/github/wimpingego/nnow/villagers/TradesRegistration.java +++ b/src/main/java/com/github/wimpingego/nnow/villagers/TradesRegistration.java @@ -1,6 +1,8 @@ package com.github.wimpingego.nnow.villagers; import com.github.wimpingego.nnow.NNOW; + +//import com.github.wimpingego.nnow.init.ItemList; import net.minecraft.item.Items; import net.minecraftforge.event.village.VillagerTradesEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -15,129 +17,200 @@ public static void registerTrades(VillagerTradesEvent event){ if (event.getType() == VillagerProfessions.BANKER) { - event.getTrades().get(1).add((new RandomTradeBuilder(16, 10, 0.05F).setPrice(Items.COAL, 1,1).setPrice2(Items.STONE, 8,8).setForSale(Items.COAL_ORE, 1, 2).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 25, 0.05F).setPrice(Items.COAL, 1,1).setPrice2(Items.STONE, 8,8).setForSale(Items.COAL_ORE, 1, 2).build())); - event.getTrades().get(2).add((new RandomTradeBuilder(16, 10, 0.05F).setPrice(Items.IRON_INGOT, 1,1).setPrice2(Items.STONE, 8,8).setForSale(Items.IRON_ORE, 1, 2).build())); - event.getTrades().get(2).add((new RandomTradeBuilder(16, 10, 0.05F).setPrice(Items.GOLD_INGOT, 1,1).setPrice2(Items.STONE, 8,8).setForSale(Items.GOLD_ORE, 1, 2).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 25, 0.2F).setPrice(Items.IRON_INGOT, 1,1).setPrice2(Items.STONE, 8,8).setForSale(Items.IRON_ORE, 1, 2).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 25, 0.2F).setPrice(Items.GOLD_INGOT, 1,1).setPrice2(Items.STONE, 8,8).setForSale(Items.GOLD_ORE, 1, 2).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 10, 0.05F).setPrice(Items.REDSTONE, 1,1).setPrice2(Items.STONE, 8,8).setForSale(Items.REDSTONE_ORE, 1, 2).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 10, 0.05F).setPrice(Items.LAPIS_LAZULI, 1,1).setPrice2(Items.STONE, 8,8).setForSale(Items.LAPIS_ORE, 1, 2).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 25, 0.05F).setPrice(Items.REDSTONE, 1,1).setPrice2(Items.STONE, 8,8).setForSale(Items.REDSTONE_ORE, 1, 2).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 25, 0.05F).setPrice(Items.LAPIS_LAZULI, 1,1).setPrice2(Items.STONE, 8,8).setForSale(Items.LAPIS_ORE, 1, 2).build())); - event.getTrades().get(4).add((new RandomTradeBuilder(16, 10, 0.05F).setPrice(Items.QUARTZ, 1,1).setPrice2(Items.NETHERRACK, 8,8).setForSale(Items.NETHER_QUARTZ_ORE, 1, 2).build())); - event.getTrades().get(4).add((new RandomTradeBuilder(16, 10, 0.05F).setPrice(Items.DIAMOND, 1,1).setPrice2(Items.STONE, 8,8).setForSale(Items.DIAMOND_ORE, 1, 2).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 25, 0.2F).setPrice(Items.QUARTZ, 1,1).setPrice2(Items.NETHERRACK, 8,8).setForSale(Items.NETHER_QUARTZ_ORE, 1, 2).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 25, 0.2F).setPrice(Items.DIAMOND, 1,1).setPrice2(Items.STONE, 8,8).setForSale(Items.DIAMOND_ORE, 1, 2).build())); - event.getTrades().get(5).add((new RandomTradeBuilder(16, 10, 0.05F).setPrice(Items.EMERALD, 1,1).setPrice2(Items.STONE, 8,8).setForSale(Items.EMERALD_ORE, 1, 2).build())); - event.getTrades().get(5).add((new RandomTradeBuilder(16, 50, 0.05F).setPrice(Items.WITHER_SKELETON_SKULL, 6,6).setPrice2(Items.SOUL_SAND, 10,10).setForSale(Items.NETHER_STAR, 1, 1).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 25, 0.2F).setPrice(Items.EMERALD, 1,1).setPrice2(Items.STONE, 8,8).setForSale(Items.EMERALD_ORE, 1, 2).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 25, 0.2F).setPrice(Items.NETHERITE_INGOT, 1,1).setPrice2(Items.NETHERRACK, 8,8).setForSale(Items.ANCIENT_DEBRIS, 1, 1).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 50, 0.05F).setPrice(Items.WITHER_SKELETON_SKULL, 3,6).setPrice2(Items.SOUL_SAND, 4,4).setForSale(Items.NETHER_STAR, 1, 1).build())); } if (event.getType() == VillagerProfessions.BEEKEEPER) { - event.getTrades().get(1).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(8,32).setForSale(Items.BEE_SPAWN_EGG, 1, 1).build())); - event.getTrades().get(1).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(8,32).setForSale(Items.BEEHIVE, 1, 1).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 25, 0.05F).setEmeraldPrice(8,32).setForSale(Items.BEE_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 25, 0.05F).setEmeraldPrice(8,32).setForSale(Items.BEEHIVE, 1, 1).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 25, 0.05F).setEmeraldPrice(1,8).setForSale(Items.BONE_MEAL, 1, 32).build())); - event.getTrades().get(2).add((new RandomTradeBuilder(16, 10, 0.05F).setPrice(Items.HONEYCOMB, 8,16).setForSale(Items.EMERALD, 1, 8).build())); - event.getTrades().get(2).add((new RandomTradeBuilder(16, 10, 0.05F).setPrice(Items.HONEY_BOTTLE, 8,16).setForSale(Items.EMERALD, 1, 8).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 15, 0.05F).setPrice(Items.HONEYCOMB, 8,16).setForSale(Items.EMERALD, 1, 8).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 15, 0.05F).setPrice(Items.HONEY_BOTTLE, 8,16).setForSale(Items.EMERALD, 1, 8).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(16,32).setForSale(Items.BEE_NEST, 1, 1).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 10, 0.05F).setPrice(Items.HONEY_BLOCK, 8,16).setForSale(Items.EMERALD, 1, 8).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 25, 0.05F).setEmeraldPrice(16,32).setForSale(Items.BEE_NEST, 1, 1).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 15, 0.05F).setPrice(Items.HONEY_BLOCK, 8,16).setForSale(Items.EMERALD, 1, 8).build())); - event.getTrades().get(4).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(1,8).setForSale(Items.BONE_MEAL, 1, 32).build())); - event.getTrades().get(4).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(16).setForSale(Items.CAMPFIRE, 1, 1).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 25, 0.05F).setEmeraldPrice(16).setForSale(Items.CAMPFIRE, 1, 1).build())); } if (event.getType() == VillagerProfessions.OLD_DERPY) { - event.getTrades().get(1).add((new RandomTradeBuilder(16, 10, 0.05F).setPrice(Items.OAK_LOG, 8,16).setForSale(Items.EMERALD, 1, 8).build())); - event.getTrades().get(1).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(1,16).setForSale(Items.SWEET_BERRIES, 1,4).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 20, 0.05F).setPrice(Items.OAK_LOG, 8,16).setForSale(Items.EMERALD, 1, 4).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 20, 0.05F).setPrice(Items.APPLE, 4,8).setForSale(Items.EMERALD, 1, 2).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(1,16).setForSale(Items.SWEET_BERRIES, 1,4).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(1,4).setForSale(Items.WHEAT_SEEDS, 2,8).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(1,2).setForSale(Items.APPLE, 4,8).build())); - event.getTrades().get(2).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(1,8).setForSale(Items.COAL, 1, 8).build())); - event.getTrades().get(2).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(8,16).setForSale(Items.ICE, 1, 8).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 20, 0.05F).setPrice(Items.ROTTEN_FLESH, 16,32).setForSale(Items.EMERALD, 1, 3).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(2,8).setForSale(Items.DIRT, 2,8).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(1,8).setForSale(Items.COAL, 1, 8).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,16).setForSale(Items.ICE, 1, 8).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(8,16).setForSale(Items.IRON_INGOT, 1, 2).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(8,16).setForSale(Items.GOLD_INGOT, 1, 2).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,16).setForSale(Items.IRON_INGOT, 1, 2).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,16).setForSale(Items.GOLD_INGOT, 1, 2).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 20, 0.05F).setPrice(Items.OAK_SAPLING, 16,32).setForSale(Items.EMERALD, 1, 2).build())); + - event.getTrades().get(4).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(8,16).setForSale(Items.REDSTONE, 1, 2).build())); - event.getTrades().get(4).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(8,16).setForSale(Items.LAPIS_LAZULI, 1, 2).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,16).setForSale(Items.REDSTONE, 1, 16).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,16).setForSale(Items.LAPIS_LAZULI, 1, 8).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 30, 0.05F).setPrice(Items.DIRT, 1,1).setPrice2(Items.WHEAT_SEEDS, 4,8).setForSale(Items.GRASS_BLOCK, 1, 1).build())); - event.getTrades().get(5).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(8,16).setForSale(Items.QUARTZ, 1, 2).build())); - event.getTrades().get(5).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(8,16).setForSale(Items.DIAMOND, 1, 2).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,16).setForSale(Items.QUARTZ, 1, 4).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(8,16).setForSale(Items.DIAMOND, 1, 3).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(8,16).setForSale(Items.DIAMOND_PICKAXE, 1,1).build())); } if (event.getType() == VillagerProfessions.MONSTER_TRAPPER) { - event.getTrades().get(1).add((new RandomTradeBuilder(16, 50, 0.05F).setEmeraldPrice(8,64).setForSale(Items.SPAWNER, 1, 1).build())); - event.getTrades().get(1).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(1,64).setForSale(Items.SKELETON_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 50, 0.05F).setEmeraldPrice(32,64).setForSale(Items.SPAWNER, 1, 1).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,32).setForSale(Items.SKELETON_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,32).setForSale(Items.ZOMBIE_SPAWN_EGG, 1, 1).build())); + + event.getTrades().get(2).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,32).setForSale(Items.SPIDER_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,16).setForSale(Items.CREEPER_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,32).setForSale(Items.ENDERMAN_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,32).setForSale(Items.WITCH_SPAWN_EGG, 1, 1).build())); - event.getTrades().get(2).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(1,64).setForSale(Items.SPIDER_SPAWN_EGG, 1, 1).build())); - event.getTrades().get(2).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(1,64).setForSale(Items.CREEPER_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,32).setForSale(Items.BLAZE_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(1,16).setForSale(Items.PILLAGER_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,32).setForSale(Items.ZOMBIFIED_PIGLIN_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(4,16).setForSale(Items.GUARDIAN_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,32).setForSale(Items.SLIME_SPAWN_EGG, 1, 1).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(1,64).setForSale(Items.ZOMBIE_SPAWN_EGG, 1, 1).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(1,64).setForSale(Items.WITCH_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,32).setForSale(Items.GHAST_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,32).setForSale(Items.MAGMA_CUBE_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,32).setForSale(Items.SHULKER_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(1,8).setForSale(Items.RAVAGER_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(1,64).setForSale(Items.VINDICATOR_SPAWN_EGG, 1, 1).build())); - event.getTrades().get(4).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(1,64).setForSale(Items.SLIME_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(16,64).setForSale(Items.EVOKER_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(16,64).setForSale(Items.WITHER_SKELETON_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(16,64).setForSale(Items.ELDER_GUARDIAN_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,32).setForSale(Items.PHANTOM_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(16,64).setForSale(Items.VEX_SPAWN_EGG, 1, 1).build())); } if (event.getType() == VillagerProfessions.END_TRADER) { - event.getTrades().get(1).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(8,32).setForSale(Items.ENDERMAN_SPAWN_EGG, 1, 1).build())); - event.getTrades().get(1).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(32,64).setForSale(Items.END_PORTAL_FRAME, 1, 1).build())); - - event.getTrades().get(2).add((new RandomTradeBuilder(16, 10, 0.05F).setPrice(Items.END_STONE, 8,64).setForSale(Items.EMERALD, 1, 8).build())); - event.getTrades().get(2).add((new RandomTradeBuilder(16, 10, 0.05F).setPrice(Items.ENDER_PEARL,16,16).setForSale(Items.EMERALD, 1, 4).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(8,16).setForSale(Items.END_STONE, 8, 64).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(2,8).setForSale(Items.ENDER_PEARL, 16,1).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,16).setForSale(Items.PURPLE_STAINED_GLASS, 4,16).build())); + + event.getTrades().get(2).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(8,32).setForSale(Items.OBSIDIAN, 8, 16).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 10, 0.05F).setPrice(Items.END_STONE, 8,64).setForSale(Items.EMERALD, 1, 8).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 10, 0.05F).setPrice(Items.ENDER_PEARL,16,1).setForSale(Items.EMERALD, 1,1).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(1,64).setForSale(Items.SHULKER_SPAWN_EGG, 1, 1).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(1,32).setForSale(Items.END_ROD, 1, 16).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(1,16).setForSale(Items.CHORUS_FRUIT, 1, 8).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(1,32).setForSale(Items.SHULKER_SHELL, 2, 8).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(1,32).setForSale(Items.END_ROD, 1, 8).build())); - event.getTrades().get(4).add((new RandomTradeBuilder(16, 10, 0.05F).setPrice(Items.CHORUS_FRUIT, 8,16).setForSale(Items.EMERALD, 1, 8).build())); - event.getTrades().get(4).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,16).setForSale(Items.CHORUS_FLOWER, 1, 1).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 10, 0.05F).setPrice(Items.CHORUS_FRUIT, 8,16).setForSale(Items.EMERALD, 1, 8).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,16).setForSale(Items.CHORUS_FLOWER, 1, 4).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 10, 0.05F).setPrice(Items.PURPUR_BLOCK, 16,32).setForSale(Items.EMERALD, 4, 16).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(8,16).setForSale(Items.END_STONE, 32, 64).build())); + + event.getTrades().get(5).add((new RandomTradeBuilder(16, 64, 0.05F).setEmeraldPrice(32,64).setForSale(Items.ELYTRA, 1, 1).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(32,64).setForSale(Items.END_PORTAL_FRAME, 1, 1).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(32,64).setForSale(Items.DRAGON_HEAD, 1, 1).build())); } if (event.getType() == VillagerProfessions.SEA_TRADER) { - event.getTrades().get(1).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.TUBE_CORAL_BLOCK, 8, 16).build())); - event.getTrades().get(1).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.FIRE_CORAL_BLOCK, 8, 16).build())); - event.getTrades().get(1).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.HORN_CORAL_BLOCK, 8, 16).build())); - event.getTrades().get(1).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.BRAIN_CORAL_BLOCK, 8, 16).build())); - event.getTrades().get(1).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.BUBBLE_CORAL_BLOCK, 8, 16).build())); - - event.getTrades().get(2).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(8,64).setForSale(Items.PRISMARINE_SHARD, 4, 16).build())); - event.getTrades().get(2).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(8,64).setForSale(Items.PRISMARINE_CRYSTALS, 4, 16).build())); - event.getTrades().get(2).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(8,64).setForSale(Items.SEA_PICKLE, 4, 32).build())); - event.getTrades().get(2).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(8,64).setForSale(Items.SEAGRASS, 8, 64).build())); - - event.getTrades().get(3).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.TUBE_CORAL, 8, 16).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.FIRE_CORAL, 8, 16).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.HORN_CORAL, 8, 16).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.BRAIN_CORAL, 8, 16).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.BUBBLE_CORAL, 8, 16).build())); - - event.getTrades().get(4).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.TUBE_CORAL_FAN, 8, 16).build())); - event.getTrades().get(4).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.FIRE_CORAL_FAN, 8, 16).build())); - event.getTrades().get(4).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.HORN_CORAL_FAN, 8, 16).build())); - event.getTrades().get(4).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.BRAIN_CORAL_FAN, 8, 16).build())); - event.getTrades().get(4).add((new RandomTradeBuilder(16, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.BUBBLE_CORAL_FAN, 8, 16).build())); - - event.getTrades().get(5).add((new RandomTradeBuilder(16, 50, 0.05F).setEmeraldPrice(32,32).setForSale(Items.TRIDENT, 1, 1).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.TUBE_CORAL_BLOCK, 8, 16).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.FIRE_CORAL_BLOCK, 8, 16).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.HORN_CORAL_BLOCK, 8, 16).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.BRAIN_CORAL_BLOCK, 8, 16).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.BUBBLE_CORAL_BLOCK, 8, 16).build())); + + event.getTrades().get(2).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(8,32).setForSale(Items.PRISMARINE_SHARD, 4, 16).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(8,32).setForSale(Items.PRISMARINE_CRYSTALS, 4, 16).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,16).setForSale(Items.SEA_PICKLE, 4, 32).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,16).setForSale(Items.SEAGRASS, 8, 64).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(2,8).setForSale(Items.KELP, 8, 16).build())); + + event.getTrades().get(3).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(1,8).setForSale(Items.TURTLE_EGG, 1, 4).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.TUBE_CORAL, 8, 16).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.FIRE_CORAL, 8, 16).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.HORN_CORAL, 8, 16).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.BRAIN_CORAL, 8, 16).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.BUBBLE_CORAL, 8, 16).build())); + + event.getTrades().get(4).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.TUBE_CORAL_FAN, 8, 16).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.FIRE_CORAL_FAN, 8, 16).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.HORN_CORAL_FAN, 8, 16).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.BRAIN_CORAL_FAN, 8, 16).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 10, 0.05F).setEmeraldPrice(4,32).setForSale(Items.BUBBLE_CORAL_FAN, 8, 16).build())); + + event.getTrades().get(5).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.HEART_OF_THE_SEA, 1, 1).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 50, 0.05F).setEmeraldPrice(32,32).setForSale(Items.TRIDENT, 1, 1).build())); } if (event.getType() == VillagerProfessions.SEA_FISHERMAN) - { - event.getTrades().get(1).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.SQUID_SPAWN_EGG, 1, 1).build())); - event.getTrades().get(1).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.COD_SPAWN_EGG, 1, 1).build())); - event.getTrades().get(1).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.SALMON_SPAWN_EGG, 1, 1).build())); - - event.getTrades().get(2).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.TROPICAL_FISH_SPAWN_EGG, 1, 1).build())); - event.getTrades().get(2).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.PUFFERFISH_SPAWN_EGG, 1, 1).build())); + { + event.getTrades().get(1).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(1,16).setForSale(Items.INK_SAC, 1, 10).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(1,16).setForSale(Items.COD, 1, 16).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(1,16).setForSale(Items.SALMON, 1, 16).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(4,32).setForSale(Items.LILY_PAD, 4, 16).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.SQUID_SPAWN_EGG, 1, 1).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.COD_SPAWN_EGG, 1, 1).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.SALMON_SPAWN_EGG, 1, 1).build())); - event.getTrades().get(3).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.GUARDIAN_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.SQUID_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(1,16).setForSale(Items.TROPICAL_FISH, 1, 16).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(1,16).setForSale(Items.PUFFERFISH, 1, 16).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(1,16).setForSale(Items.STRING, 1, 16).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(1,16).setForSale(Items.BOOK, 1, 16).build())); - event.getTrades().get(4).add((new RandomTradeBuilder(16, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.GUARDIAN_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,32).setForSale(Items.NAME_TAG, 1, 1).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(1,8).setForSale(Items.SADDLE, 1, 1).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.COD_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.SALMON_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,32).setForSale(Items.NAUTILUS_SHELL, 1, 4).build())); + + event.getTrades().get(4).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.TROPICAL_FISH_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.PUFFERFISH_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,32).setForSale(Items.BAMBOO, 1, 16).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,32).setForSale(Items.COCOA_BEANS, 16, 64).build())); - event.getTrades().get(5).add((new RandomTradeBuilder(16, 50, 0.05F).setEmeraldPrice(32,64).setForSale(Items.TRIDENT, 1, 1).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.TURTLE_SPAWN_EGG, 1, 1).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 20, 0.05F).setEmeraldPrice(8,64).setForSale(Items.SPONGE, 1, 8).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 50, 0.05F).setEmeraldPrice(32,64).setForSale(Items.TRIDENT, 1, 1).build())); } + + if (event.getType() == VillagerProfessions.NETHER_TRADER) + { + event.getTrades().get(1).add((new RandomTradeBuilder(64, 30, 0.02F).setEmeraldPrice(1,16).setForSale(Items.NETHERRACK, 8, 16).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(1,16).setForSale(Items.SOUL_SAND, 8, 16).build())); + event.getTrades().get(1).add((new RandomTradeBuilder(64, 30, 0.05F).setPrice(Items.BUCKET, 1,1).setPrice2(Items.COBBLESTONE, 8,16).setForSale(Items.LAVA_BUCKET, 1, 1).build())); + + event.getTrades().get(2).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(4,16).setForSale(Items.NETHER_WART, 16, 32).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(1,16).setForSale(Items.GRAVEL, 8, 16).build())); + event.getTrades().get(2).add((new RandomTradeBuilder(64, 30, 0.05F).setPrice(Items.BONE_BLOCK, 4,8).setForSale(Items.EMERALD, 4, 16).build())); + + event.getTrades().get(3).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,16).setForSale(Items.QUARTZ, 4, 8).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(4,16).setForSale(Items.MAGMA_BLOCK, 8, 16).build())); + event.getTrades().get(3).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,16).setForSale(Items.GLOWSTONE_DUST, 16, 32).build())); + + event.getTrades().get(4).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,16).setForSale(Items.BLAZE_ROD, 1, 4).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(2,16).setForSale(Items.MAGMA_CREAM, 4, 16).build())); + event.getTrades().get(4).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,16).setForSale(Items.BLAZE_POWDER, 1, 8).build())); + + event.getTrades().get(5).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(4,32).setForSale(Items.GHAST_TEAR, 1, 4).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 30, 0.05F).setEmeraldPrice(8,16).setForSale(Items.GLOWSTONE, 1, 16).build())); + event.getTrades().get(5).add((new RandomTradeBuilder(64, 30, 0.05F).setPrice(Items.EMERALD, 32,64).setPrice2(Items.WITHER_SKELETON_SPAWN_EGG, 1,1).setForSale(Items.WITHER_SKELETON_SKULL, 1, 3).build())); + } } } diff --git a/src/main/java/com/github/wimpingego/nnow/villagers/VillagerProfessions.java b/src/main/java/com/github/wimpingego/nnow/villagers/VillagerProfessions.java index a6249a1..0e3e16f 100644 --- a/src/main/java/com/github/wimpingego/nnow/villagers/VillagerProfessions.java +++ b/src/main/java/com/github/wimpingego/nnow/villagers/VillagerProfessions.java @@ -27,6 +27,8 @@ public class VillagerProfessions public static final VillagerProfession END_TRADER= null; public static final VillagerProfession SEA_TRADER= null; public static final VillagerProfession SEA_FISHERMAN= null; + public static final VillagerProfession NETHER_TRADER= null; + public static final VillagerProfession INGOT_TRADER= null; @SubscribeEvent public static void registerVillagerProfessions(Register event) @@ -40,5 +42,7 @@ public static void registerVillagerProfessions(Register even registry.register(VillagerUtil.villagerProfession("end_trader", PointOfInterestTypes.END_TRADER, ImmutableSet.of(), ImmutableSet.of(), null).setRegistryName(NNOW.MOD_ID, "end_trader")); registry.register(VillagerUtil.villagerProfession("sea_trader", PointOfInterestTypes.SEA_TRADER, ImmutableSet.of(), ImmutableSet.of(), null).setRegistryName(NNOW.MOD_ID, "sea_trader")); registry.register(VillagerUtil.villagerProfession("sea_fisherman", PointOfInterestTypes.SEA_FISHERMAN, ImmutableSet.of(), ImmutableSet.of(), null).setRegistryName(NNOW.MOD_ID, "sea_fisherman")); + registry.register(VillagerUtil.villagerProfession("nether_trader", PointOfInterestTypes.NETHER_TRADER, ImmutableSet.of(), ImmutableSet.of(), null).setRegistryName(NNOW.MOD_ID, "nether_trader")); + registry.register(VillagerUtil.villagerProfession("ingot_trader", PointOfInterestTypes.INGOT_TRADER, ImmutableSet.of(), ImmutableSet.of(), null).setRegistryName(NNOW.MOD_ID, "ingot_trader")); } } diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 354918e..6efec22 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -1,27 +1,45 @@ -modLoader="javafml" -loaderVersion="[31,)" - -issueTrackerURL="https://github.com/Wimpingego/nnow/issues" - -[[mods]] - -modId="nnow" -version="0.1.5" -displayName="Never Needed Or Wanted" -#updateJSONURL="http://myurl.me/" -displayURL="https://github.com/Wimpingego" -logoFile="modimage.png" -credits="WimpingEgo" -authors="WimpingEgo" +# This is an example mods.toml file. It contains the data relating to the loading mods. +# There are several mandatory fields (#mandatory), and many more that are optional (#optional). +# The overall format is standard TOML format, v0.5.0. +# Note that there are a couple of TOML lists in this file. +# Find more information on toml format here: https://github.com/toml-lang/toml +# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml +modLoader="javafml" #mandatory +# A version range to match for said mod loader - for regular FML @Mod it will be the forge version +loaderVersion="[33,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions. +# The license for you mod. This is mandatory metadata and allows for easier comprehension of your redistributive properties. +# Review your options at https://choosealicense.com/. All rights reserved is the default copyright stance, and is thus the default here. +license="GNU GPLv3" +# A URL to refer people to when problems occur with this mod +issueTrackerURL="https://github.com/Wimpingego/nnow/issues" #optional +# A list of mods - how many allowed here is determined by the individual mod loader +[[mods]] #mandatory +# The modid of the mod +modId="nnow" #mandatory +# The version number of the mod - there's a few well known ${} variables useable here or just hardcode it +version="${file.jarVersion}" #mandatory + # A display name for the mod +displayName="Never Needed Or Wanted" #mandatory +# A URL to query for updates for this mod. See the JSON update specification +#updateJSONURL="http://myurl.me/" #optional +# A URL for the "homepage" for this mod, displayed in the mod UI +displayURL="https://github.com/Wimpingego" #optional +# A file name (in the root of the mod JAR) containing a logo for display +logoFile="modimage.png" #optional +# A text field displayed in the mod UI +credits="WimpingEgo" #optional +# A text field displayed in the mod UI +authors="WimpingEgo" #optional +# The description text for the mod (multi line!) (#mandatory) description='Adds well something to the game, Well I hope it does.' - +# A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional. [[dependencies.nnow]] #optional # the modid of the dependency modId="forge" #mandatory # Does this dependency have to exist - if not, ordering below must be specified mandatory=true #mandatory # The version range of the dependency - versionRange="[31.1.78,)" #mandatory + versionRange="[33.0.10,)" #mandatory # An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory ordering="NONE" # Side this dependency is applied on - BOTH, CLIENT or SERVER @@ -30,6 +48,6 @@ description='Adds well something to the game, Well I hope it does.' [[dependencies.nnow]] modId="minecraft" mandatory=true - versionRange="[1.15.2]" + versionRange="[1.16.2]" ordering="NONE" side="BOTH" diff --git a/src/main/resources/assets/minecraft/textures/entity/piglin/piglin.png b/src/main/resources/assets/minecraft/textures/entity/piglin/piglin.png new file mode 100644 index 0000000000000000000000000000000000000000..f93df815f67d080450d82a4863bfa688d2a16724 GIT binary patch literal 1128 zcmV-u1eg1XP)J>a9G2Td8vj|PB^JaY^HW(FW+ zJcGb(hU(LDOZAL403aU%z}M${)xqV>21Lu7Y-s>^b3n-GMF4R8?CEfQXv5PV0zh?mcm|xTZ|=#Rg}dUn z=k7Y<#?VI?Xq_<-7$^-tOpvI9R>i9!C=UlO~#|BWg!Cq>IE7m+BxtoYy&z z)hIpvh01s*#Yr5O?`^GD%$w&o=D4lAE~(18O1!zTR&$qS(CFpe>lOIp!=2v!8yx_h zBM>%NWnetgw))Lz7;ouh0pRdqAk0vc@u;&WbnyTNVR8U?=K#1q8|rPCx_SU}G5{P? zPq#1CjJyHB&y}IC?9KEcU1L2&!9(y|jn*&-J-4!*0N~DO1s=EQn4Fg(2Gui)K~UpS zmJQ_rPyn=@-Y%~V=yP=5Gm1N8x&T3q4UMYFVZ7&+A@7TMWp4m91U!Zg@-d?<1iaA+ zxiXKa7f!l!Y~xMoRLAqKa}T zADY}WMmZnT_jE%5@L|f^!gpO&W_&{PUS0rg?|fjX8WReWnDLsj?$G|ZN8i}GJrrRt zEOyq<&E@}ozcMEag%XDphha+pvUmV@>e<$s%Vu=-^Glunc)bzSGk$#WY^}$6OYL`d z570{WXsa(U^bJpFM9pZ7x}|L%!1|nz_0N03!p3*<05vkiq0^l=2WVWw$RYDUtbg8! z_YMKxN8j4MTC?T%9_==H?>RUW%bxL=6l3wPvef>~3Kc3;s8FFog$flaRH#s)LWOcu z>g8(o`~Rr}kp2FD6+9s8{r@U>z(Vi;bJHTeFUWfTKL!A)-xp-P{~z1shkjp>?f!pk z0Q!Dkkp2FD3; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minecraft/textures/entity/piglin/zombified_piglin.png b/src/main/resources/assets/minecraft/textures/entity/piglin/zombified_piglin.png new file mode 100644 index 0000000000000000000000000000000000000000..aea5eb5f9d6d38429d6e06a62b20baf551d7eefa GIT binary patch literal 1549 zcmV+o2J-odP)zq@kJ|+`OdwYA;&dyHd zd9NNls3h+m|CL0~FK^wc$bWTrHNCqi@8A13tJ@ntSJ&@-Uu`_x$TB&uN#I?afM-`O zB@sA?NMsmz0To~fh$P%yTWcji<*9y6=;r2T66Nc6VFYO8UA%*U5FpottPT4BuKw|D zCkb5yY;SK@PyczE+GLF~!jYwFhB_%xCk4_;$VBV|6*x#x9S9JBE&>Gp!pcg87Oekx zcDV$!`2Yw|XScSt5}4={BmyUpPJ%kGcS#!oQt@9eUrws7HV@DJlu27S0bM=-@VmRa zNl@3fTYt9_pf-R;l-EUo2*>92Ec00k0bM=-4RBM?C_w-uK)^w==vhF08%&^s#{{I_ zA|Pu)?F0JAu_J&{l&Yfcan#)phyc}98%PiV{_alFr%NwqO7(Zi!U>>LOkol9e=lBS z`^N`}fCwmp_dtnx-T}up*nSBDs`d4+kX8bGI)elUu8~JG^qyt{1Lc4+U;~b4k5Oeq zQ})Y-046SxJiq>1j#y(}gC#m9V1RVdRHgY^q!0_Je)axi1H5~20wNEL9BkBrqac9q za=}-djH}N|$Z<>I*K)~eX z-3bajA`ec~=FwgRj=4||BAkqdiI~3_OaLS91cbaM0T#=5ksty*Y6BSUyp8@tLV)91 z;ZdTKk$l7v5D+!0EpMt39|jDoF-9_quhtxVESLEFPcRfoI93ZErQgq-s$9M~_4SnW zazqD6^aTL#>jS8#0Z_Yn`?q)kf}LwB$}>Yvfd9_>|HqdAn|hoGY+t|l2iJrzo&etk z!p?mgEyf6Jm@G{LBH-2Y-zB;K%MaoG;&qfZ)DfY zBmhXG9JBxsaaY-W17Ouwqc72aC~s=BG&ofEEphQf9p&}cfcgV&i&IX#WrZ zIRcGygMjQTYp|-%Y{ECP*6e>5(|{O{Bz-%+HvztT`{B*!&Xey88Nj&dxF2Yn1sG9Z zc)7YJCt3qXyY!yTpaz9Tr2z;rg=+wLy-Wa*`a^-o{>WpK#8oYq)g}<-FpK9f@uO}(ro7T7o$kyzJ)xmK5q zTvlxZ$H@4I`mq#2cN%ekh0gc`9~hq!k(mT|9KCYxbP_$^ zxOOo=x0NF?R6c4M+P}$|#x$le4cQNf_2YiPi6bQL2gLHYA8;Zy!b#{NfF<#XHHj{O zaX(;mB4ZlUn8q}wF^y?V9czojo-P+V|Nl}5D0cik5-<|bZ#m3*f9U;zS?!CT|IeFd zt@r1>KQQb5LGknd!xAuSIo$XDz|8vxrO*ElyCKrG-f!F=Xt`hD?c44bw6-sG{$Dx` zydcUCf`Trsa7;?X$`1yb7H1vK!@$>)EY3Tie;^+URQ``LlKp%L&z%Ndh zJpV79;{5`5ie2{$8g~Usp8uClL(lJ*eg6Lm*LsL3Z{iY000000NkvXXu0mjf>6_(X literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/blockstates/aluminum_berry_bush.json b/src/main/resources/assets/nnow/blockstates/aluminum_berry_bush.json new file mode 100644 index 0000000..ede1d64 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/aluminum_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/aluminum_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/aluminum_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/aluminum_block.json b/src/main/resources/assets/nnow/blockstates/aluminum_block.json new file mode 100644 index 0000000..1747a75 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/aluminum_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nnow:block/aluminum_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/blockstates/banker_poi.json b/src/main/resources/assets/nnow/blockstates/banker_poi.json new file mode 100644 index 0000000..3761b9c --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/banker_poi.json @@ -0,0 +1,10 @@ +{ + "variants": { + "facing=north": { "model": "nnow:block/banker_poi", "y": 180 }, + "facing=south": { "model": "nnow:block/banker_poi" }, + "facing=west": { "model": "nnow:block/banker_poi", "y": 90 }, + "facing=east": { "model": "nnow:block/banker_poi", "y": 270 }, + "facing=up": { "model": "nnow:block/banker_poi", "y": 180 }, + "facing=down": { "model": "nnow:block/banker_poi", "y": 90 } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/blockstates/bismuth_berry_bush.json b/src/main/resources/assets/nnow/blockstates/bismuth_berry_bush.json new file mode 100644 index 0000000..fad016a --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/bismuth_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/bismuth_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/bismuth_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/bismuth_block.json b/src/main/resources/assets/nnow/blockstates/bismuth_block.json new file mode 100644 index 0000000..8fb61b8 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/bismuth_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nnow:block/bismuth_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/blockstates/clay_berry_bush.json b/src/main/resources/assets/nnow/blockstates/clay_berry_bush.json new file mode 100644 index 0000000..c57de1f --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/clay_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/clay_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/clay_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/copper_berry_bush.json b/src/main/resources/assets/nnow/blockstates/copper_berry_bush.json new file mode 100644 index 0000000..d0b50b5 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/copper_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/copper_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/copper_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/copper_block.json b/src/main/resources/assets/nnow/blockstates/copper_block.json new file mode 100644 index 0000000..9c608b7 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/copper_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nnow:block/copper_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/blockstates/dirt_berry_bush.json b/src/main/resources/assets/nnow/blockstates/dirt_berry_bush.json new file mode 100644 index 0000000..390072a --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/dirt_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/dirt_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/dirt_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/end_trader.json b/src/main/resources/assets/nnow/blockstates/end_trader.json new file mode 100644 index 0000000..bc76ceb --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/end_trader.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nnow:block/end_trader" + } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/gravel_berry_bush.json b/src/main/resources/assets/nnow/blockstates/gravel_berry_bush.json new file mode 100644 index 0000000..05575a2 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/gravel_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/gravel_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/gravel_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/ingot_furnace.json b/src/main/resources/assets/nnow/blockstates/ingot_furnace.json new file mode 100644 index 0000000..783598b --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/ingot_furnace.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "nnow:block/ingot_furnace", "y": 0 }, + "facing=south": { "model": "nnow:block/ingot_furnace", "y": 180 }, + "facing=west": { "model": "nnow:block/ingot_furnace", "y": 270 }, + "facing=east": { "model": "nnow:block/ingot_furnace", "y": 90 } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/blockstates/iridium_berry_bush.json b/src/main/resources/assets/nnow/blockstates/iridium_berry_bush.json new file mode 100644 index 0000000..c96450f --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/iridium_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/iridium_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/iridium_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/iridium_block.json b/src/main/resources/assets/nnow/blockstates/iridium_block.json new file mode 100644 index 0000000..2559aa7 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/iridium_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nnow:block/iridium_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/blockstates/lead_berry_bush.json b/src/main/resources/assets/nnow/blockstates/lead_berry_bush.json new file mode 100644 index 0000000..813e8dc --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/lead_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/lead_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/lead_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/lead_block.json b/src/main/resources/assets/nnow/blockstates/lead_block.json new file mode 100644 index 0000000..7fdfd19 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/lead_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nnow:block/lead_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/blockstates/nether_trader.json b/src/main/resources/assets/nnow/blockstates/nether_trader.json new file mode 100644 index 0000000..8e4b741 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/nether_trader.json @@ -0,0 +1,13 @@ +{ + "variants": { + "facing=east,half=lower": { "model": "nnow:block/nether_trader_bottom", "y": 90 }, + "facing=south,half=lower": { "model": "nnow:block/nether_trader_bottom", "y": 180 }, + "facing=west,half=lower": { "model": "nnow:block/nether_trader_bottom", "y": 270 }, + "facing=north,half=lower": { "model": "nnow:block/nether_trader_bottom", "y": 0 }, + + "facing=east,half=upper": { "model": "nnow:block/nether_trader_top", "y": 90 }, + "facing=south,half=upper": { "model": "nnow:block/nether_trader_top", "y": 180 }, + "facing=west,half=upper": { "model": "nnow:block/nether_trader_top", "y": 270 }, + "facing=north,half=upper": { "model": "nnow:block/nether_trader_top", "y": 0 } + } + } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/blockstates/nickel_berry_bush.json b/src/main/resources/assets/nnow/blockstates/nickel_berry_bush.json new file mode 100644 index 0000000..3969a33 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/nickel_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/nickel_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/nickel_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/nickel_block.json b/src/main/resources/assets/nnow/blockstates/nickel_block.json new file mode 100644 index 0000000..e6b5265 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/nickel_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nnow:block/nickel_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/blockstates/osmium_berry_bush.json b/src/main/resources/assets/nnow/blockstates/osmium_berry_bush.json new file mode 100644 index 0000000..40d0757 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/osmium_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/osmium_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/osmium_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/osmium_block.json b/src/main/resources/assets/nnow/blockstates/osmium_block.json new file mode 100644 index 0000000..4175bfe --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/osmium_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nnow:block/osmium_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/blockstates/path_stairs.json b/src/main/resources/assets/nnow/blockstates/path_stairs.json deleted file mode 100644 index 28191b3..0000000 --- a/src/main/resources/assets/nnow/blockstates/path_stairs.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "variants": { - "facing=east,half=bottom,shape=straight": { "model": "nnow:block/path_stairs" }, - "facing=west,half=bottom,shape=straight": { "model": "nnow:block/path_stairs", "y": 180, "uvlock": true }, - "facing=south,half=bottom,shape=straight": { "model": "nnow:block/path_stairs", "y": 90, "uvlock": true }, - "facing=north,half=bottom,shape=straight": { "model": "nnow:block/path_stairs", "y": 270, "uvlock": true }, - "facing=east,half=bottom,shape=outer_right": { "model": "nnow:block/path_stairs_outer" }, - "facing=west,half=bottom,shape=outer_right": { "model": "nnow:block/path_stairs_outer", "y": 180, "uvlock": true }, - "facing=south,half=bottom,shape=outer_right": { "model": "nnow:block/path_stairs_outer", "y": 90, "uvlock": true }, - "facing=north,half=bottom,shape=outer_right": { "model": "nnow:block/path_stairs_outer", "y": 270, "uvlock": true }, - "facing=east,half=bottom,shape=outer_left": { "model": "nnow:block/path_stairs_outer", "y": 270, "uvlock": true }, - "facing=west,half=bottom,shape=outer_left": { "model": "nnow:block/path_stairs_outer", "y": 90, "uvlock": true }, - "facing=south,half=bottom,shape=outer_left": { "model": "nnow:block/path_stairs_outer" }, - "facing=north,half=bottom,shape=outer_left": { "model": "nnow:block/path_stairs_outer", "y": 180, "uvlock": true }, - "facing=east,half=bottom,shape=inner_right": { "model": "nnow:block/path_stairs_inner" }, - "facing=west,half=bottom,shape=inner_right": { "model": "nnow:block/path_stairs_inner", "y": 180, "uvlock": true }, - "facing=south,half=bottom,shape=inner_right": { "model": "nnow:block/path_stairs_inner", "y": 90, "uvlock": true }, - "facing=north,half=bottom,shape=inner_right": { "model": "nnow:block/path_stairs_inner", "y": 270, "uvlock": true }, - "facing=east,half=bottom,shape=inner_left": { "model": "nnow:block/path_stairs_inner", "y": 270, "uvlock": true }, - "facing=west,half=bottom,shape=inner_left": { "model": "nnow:block/path_stairs_inner", "y": 90, "uvlock": true }, - "facing=south,half=bottom,shape=inner_left": { "model": "nnow:block/path_stairs_inner" }, - "facing=north,half=bottom,shape=inner_left": { "model": "nnow:block/path_stairs_inner", "y": 180, "uvlock": true }, - "facing=east,half=top,shape=straight": { "model": "nnow:block/path_stairs", "x": 180, "uvlock": true }, - "facing=west,half=top,shape=straight": { "model": "nnow:block/path_stairs", "x": 180, "y": 180, "uvlock": true }, - "facing=south,half=top,shape=straight": { "model": "nnow:block/path_stairs", "x": 180, "y": 90, "uvlock": true }, - "facing=north,half=top,shape=straight": { "model": "nnow:block/path_stairs", "x": 180, "y": 270, "uvlock": true }, - "facing=east,half=top,shape=outer_right": { "model": "nnow:block/path_stairs_outer", "x": 180, "y": 90, "uvlock": true }, - "facing=west,half=top,shape=outer_right": { "model": "nnow:block/path_stairs_outer", "x": 180, "y": 270, "uvlock": true }, - "facing=south,half=top,shape=outer_right": { "model": "nnow:block/path_stairs_outer", "x": 180, "y": 180, "uvlock": true }, - "facing=north,half=top,shape=outer_right": { "model": "nnow:block/path_stairs_outer", "x": 180, "uvlock": true }, - "facing=east,half=top,shape=outer_left": { "model": "nnow:block/path_stairs_outer", "x": 180, "uvlock": true }, - "facing=west,half=top,shape=outer_left": { "model": "nnow:block/path_stairs_outer", "x": 180, "y": 180, "uvlock": true }, - "facing=south,half=top,shape=outer_left": { "model": "nnow:block/path_stairs_outer", "x": 180, "y": 90, "uvlock": true }, - "facing=north,half=top,shape=outer_left": { "model": "nnow:block/path_stairs_outer", "x": 180, "y": 270, "uvlock": true }, - "facing=east,half=top,shape=inner_right": { "model": "nnow:block/path_stairs_inner", "x": 180, "y": 90, "uvlock": true }, - "facing=west,half=top,shape=inner_right": { "model": "nnow:block/path_stairs_inner", "x": 180, "y": 270, "uvlock": true }, - "facing=south,half=top,shape=inner_right": { "model": "nnow:block/path_stairs_inner", "x": 180, "y": 180, "uvlock": true }, - "facing=north,half=top,shape=inner_right": { "model": "nnow:block/path_stairs_inner", "x": 180, "uvlock": true }, - "facing=east,half=top,shape=inner_left": { "model": "nnow:block/path_stairs_inner", "x": 180, "uvlock": true }, - "facing=west,half=top,shape=inner_left": { "model": "nnow:block/path_stairs_inner", "x": 180, "y": 180, "uvlock": true }, - "facing=south,half=top,shape=inner_left": { "model": "nnow:block/path_stairs_inner", "x": 180, "y": 90, "uvlock": true }, - "facing=north,half=top,shape=inner_left": { "model": "nnow:block/path_stairs_inner", "x": 180, "y": 270, "uvlock": true } - } -} diff --git a/src/main/resources/assets/nnow/blockstates/platinum_berry_bush.json b/src/main/resources/assets/nnow/blockstates/platinum_berry_bush.json new file mode 100644 index 0000000..b71e0ba --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/platinum_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/platinum_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/platinum_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/platinum_block.json b/src/main/resources/assets/nnow/blockstates/platinum_block.json new file mode 100644 index 0000000..3dde2d5 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/platinum_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nnow:block/platinum_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/blockstates/sand_berry_bush.json b/src/main/resources/assets/nnow/blockstates/sand_berry_bush.json new file mode 100644 index 0000000..67c6920 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/sand_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/sand_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/sand_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/silver_berry_bush.json b/src/main/resources/assets/nnow/blockstates/silver_berry_bush.json new file mode 100644 index 0000000..0acaca0 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/silver_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/silver_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/silver_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/silver_block.json b/src/main/resources/assets/nnow/blockstates/silver_block.json new file mode 100644 index 0000000..cd5a520 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/silver_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nnow:block/silver_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/blockstates/stone_berry_bush.json b/src/main/resources/assets/nnow/blockstates/stone_berry_bush.json new file mode 100644 index 0000000..aae2138 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/stone_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/stone_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/stone_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/test_berry_bush.json b/src/main/resources/assets/nnow/blockstates/test_berry_bush.json new file mode 100644 index 0000000..c57de1f --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/test_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/clay_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/clay_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/tin_berry_bush.json b/src/main/resources/assets/nnow/blockstates/tin_berry_bush.json new file mode 100644 index 0000000..17bae73 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/tin_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/tin_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/tin_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/tin_block.json b/src/main/resources/assets/nnow/blockstates/tin_block.json new file mode 100644 index 0000000..de307d5 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/tin_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nnow:block/tin_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/blockstates/uranium_berry_bush.json b/src/main/resources/assets/nnow/blockstates/uranium_berry_bush.json new file mode 100644 index 0000000..24f4104 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/uranium_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/uranium_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/uranium_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/uranium_block.json b/src/main/resources/assets/nnow/blockstates/uranium_block.json new file mode 100644 index 0000000..3c48cb0 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/uranium_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nnow:block/uranium_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/blockstates/zinc_berry_bush.json b/src/main/resources/assets/nnow/blockstates/zinc_berry_bush.json new file mode 100644 index 0000000..d6e91c6 --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/zinc_berry_bush.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "nnow:block/berry_bush_stage0" }, + "age=1": { "model": "nnow:block/berry_bush_stage1" }, + "age=2": { "model": "nnow:block/zinc_berry_bush_stage2" }, + "age=3": { "model": "nnow:block/zinc_berry_bush_stage3" } + } +} diff --git a/src/main/resources/assets/nnow/blockstates/zinc_block.json b/src/main/resources/assets/nnow/blockstates/zinc_block.json new file mode 100644 index 0000000..06c17bc --- /dev/null +++ b/src/main/resources/assets/nnow/blockstates/zinc_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "nnow:block/zinc_block" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/lang/en_us.json b/src/main/resources/assets/nnow/lang/en_us.json index fbd8129..9de8030 100644 --- a/src/main/resources/assets/nnow/lang/en_us.json +++ b/src/main/resources/assets/nnow/lang/en_us.json @@ -11,11 +11,40 @@ "item.nnow.fire_nugget": "Fire Nugget", "item.nnow.wooden_nugget": "Wooden Nugget", + "item.nnow.copper_nugget": "Copper Nugget", + "item.nnow.nickel_nugget": "Nickel Nugget", + "item.nnow.silver_nugget": "Silver Nugget", + "item.nnow.uranium_nugget": "Uranium Nugget", + "item.nnow.lead_nugget": "Lead Nugget", + "item.nnow.aluminum_nugget": "Aluminum Nugget", + "item.nnow.tin_nugget": "Tin Nugget", + "item.nnow.osmium_nugget": "Osmium Nugget", + "item.nnow.bismuth_nugget": "Bismuth Nugget", + "item.nnow.zinc_nugget": "Zinc Nugget", + "item.nnow.platinum_nugget": "Platinum Nugget", + "item.nnow.iridium_nugget": "Iridium Nugget", + + "item.nnow.copper_ingot": "Copper Ingot", + "item.nnow.nickel_ingot": "Nickel Ingot", + "item.nnow.silver_ingot": "Silver Ingot", + "item.nnow.uranium_ingot": "Uranium Ingot", + "item.nnow.lead_ingot": "Lead Ingot", + "item.nnow.aluminum_ingot": "Aluminum Ingot", + "item.nnow.tin_ingot": "Tin Ingot", + "item.nnow.osmium_ingot": "Osmium Ingot", + "item.nnow.bismuth_ingot": "Bismuth Ingot", + "item.nnow.zinc_ingot": "Zinc Ingot", + "item.nnow.platinum_ingot": "Platinum Ingot", + "item.nnow.iridium_ingot": "Iridium Ingot", + + "item.nnow.bun_in_the_oven": "Bun In The Oven", + "block.nnow.barley_crop": "Barley Seeds", "item.nnow.barley": "Barley", "block.nnow.pepper_crop": "Pepper Seeds", "item.nnow.pepper": "Pepper", "item.nnow.weetabix": "Weetabix", + "item.nnow.bowl_of_weetabix": "Bowl Of Weetabix", "item.nnow.stone_dust": "Stone Dust", "item.nnow.sand_dust": "Sand Dust", @@ -27,12 +56,14 @@ "item.nnow.iron_hammer": "Iron Hammer", "item.nnow.golden_hammer": "Golden Hammer", "item.nnow.diamond_hammer": "Diamond Hammer", + "item.nnow.emerald_hammer": "Emerald Hammer", "item.nnow.stone_spade": "Stone Spade", "item.nnow.iron_spade": "Iron Spade", "item.nnow.golden_spade": "Golden Spade", "item.nnow.diamond_spade": "Diamond Spade", - + "item.nnow.emerald_spade": "Emerald Spade", + "item.nnow.magnet": "Derpy Magnet", "item.nnow.magnet.line1": "Magnet is active: %s", "item.nnow.magnet.line2": "Works while in player inventory", @@ -41,11 +72,13 @@ "item.nnow.viagra": "Villager Intense Area Growing Range Attachment", "item.nnow.viagra.line1": "Only works when in your main hand", "item.nnow.viagra.line2": "Range in blocks: %s", + "item.nnow.viagra.line3": "Viagra is active: %s", "item.nnow.poking_stick": "Poking Stick", "item.nnow.poking_stick.line1": "Who knows what this does but why not try poking things with it", "item.nnow.death_potato": "Death Potato", + "item.nnow.ender_bag": "Ender Chest Bag", "item.nnow.doom_disc": "Music Disc", "item.nnow.doom_disc.desc": "Tremble Mortals - Doom is HERE", @@ -69,11 +102,16 @@ "block.nnow.gold_trap": "Gold Monster Trap", "block.nnow.diamond_trap": "Diamond Monster Trap", "block.nnow.wither_trap": "Wither Proof Monster Trap", + "block.nnow.sword_in_stone": "Old Derpy's Sword", "block.nnow.beekeeper_block": "Beekeeper Workstation", + "block.nnow.banker_poi": "Banker Workstation", "block.nnow.end_lantern": "End Lantern", + "block.nnow.end_trader": "End Trader Shipping Crate", "block.nnow.sea_fisherman": "Sea Fisherman", "block.nnow.sea_trader": "Sea Trader", + "block.nnow.nether_trader": "Dead Zombified Piglin", + "block.nnow.ingot_furnace": "Ingot Furnace", "block.nnow.agg_block": "Anti Gravity Gravel", "block.nnow.ags_block": "Anti Gravity Sand", @@ -92,6 +130,7 @@ "block.nnow.redsand_slab": "Red Sand Slab", "block.nnow.coarsedirt_slab": "Coarse Dirt Slab", "block.nnow.dirt_slab": "Dirt Slab", + "block.nnow.path_slab": "Path Slab", "block.nnow.cracked_stone_bricks_slab": "Cracked Stone Bricks Slab", "block.nnow.bookshelf_slab": "Bookshelf Slab", @@ -132,7 +171,38 @@ "block.nnow.xp_berry_bush": "XP Berries", "block.nnow.fire_berry_bush": "Fire Berries", "block.nnow.wooden_berry_bush": "Wooden Berries", - + "block.nnow.stone_berry_bush": "Stone Berries", + "block.nnow.sand_berry_bush": "Sand Berries", + "block.nnow.clay_berry_bush": "Clay Berries", + "block.nnow.dirt_berry_bush": "Dirt Berries", + "block.nnow.gravel_berry_bush": "Gravel Berries", + + "block.nnow.copper_berry_bush": "Copper Berries", + "block.nnow.nickel_berry_bush": "Nickel Berries", + "block.nnow.silver_berry_bush": "Silver Berries", + "block.nnow.uranium_berry_bush": "Uranium Berries", + "block.nnow.lead_berry_bush": "Lead Berries", + "block.nnow.aluminum_berry_bush": "Aluminum Berries", + "block.nnow.tin_berry_bush": "Tin Berries", + "block.nnow.osmium_berry_bush": "Osmium Berries", + "block.nnow.bismuth_berry_bush": "Bismuth Berries", + "block.nnow.zinc_berry_bush": "Zinc Berries", + "block.nnow.platinum_berry_bush": "Platinum Berries", + "block.nnow.iridium_berry_bush": "Iridium Berries", + + "block.nnow.copper_block": "Copper Block", + "block.nnow.nickel_block": "Nickel Block", + "block.nnow.silver_block": "Silver Block", + "block.nnow.uranium_block": "Uranium Block", + "block.nnow.lead_block": "Lead Block", + "block.nnow.aluminum_block": "Aluminum Block", + "block.nnow.tin_block": "Tin Block", + "block.nnow.osmium_block": "Osmium Block", + "block.nnow.bismuth_block": "Bismuth Block", + "block.nnow.zinc_block": "Zinc Block", + "block.nnow.platinum_block": "Platinum Block", + "block.nnow.iridium_block": "Iridium Block", + "container.bookshelf_chest": "Bookshelf Chest", "container.safe_chest": "Safe Valut", @@ -143,6 +213,8 @@ "entity.minecraft.villager.nnow.end_trader": "End Trader", "entity.minecraft.villager.nnow.sea_fisherman": "Sea Fisherman", "entity.minecraft.villager.nnow.sea_trader": "Sea Trader", + "entity.minecraft.villager.nnow.nether_trader": "Nether Trader", + "entity.minecraft.villager.nnow.ingot_trader": "Ingot Trader", "item.nnow.cobblegen.line1": "A source of cobblestone", "item.nnow.cobblegen.general.line1": "Right-click on block with pickaxe", @@ -153,6 +225,9 @@ "item.nnow.lavawell.line1": "An endless source of lava", "item.nnow.lavawell.general.line1": "Right-click on block with empty bucket", + "item.nnow.IronTrap.line1": "This trap leaves entities at 1 health", + "item.nnow.GoldTrap.line1": "This trap kills entities", + "item.nnow.DiamondTrap.line1": "This trap kills entities and gives player drops", "item.nnow.witherproof.line1": "Wither Proof", "item.nnow.hammer.line1": "Mine blocks for a chance to get dust", @@ -161,7 +236,15 @@ "item.nnow.spade.line1": "Mine blocks for a chance to get dust", "item.nnow.spade.line2": "All spades have the same drop rate chance", - "item.nnow.spade.line3": "Mines 3x3" + "item.nnow.spade.line3": "Mines 3x3", + + "item.nnow.ender_bag.line1": "Ender Chest Bag", + + "item.nnow.removed.line1": "Maybe Removed", + "death.attack.trap.iron": "Iron trap pierced %s", + "death.attack.trap.gold": "Gold trap pierced %s", + "death.attack.trap.diamond.player": "Diamond trap pierced %s", + "death.attack.trap.wither.player": "Wither trap pierced %s" } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/aluminum_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/aluminum_berry_bush_stage2.json new file mode 100644 index 0000000..408e156 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/aluminum_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/aluminum_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/aluminum_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/aluminum_berry_bush_stage3.json new file mode 100644 index 0000000..cd746c3 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/aluminum_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/aluminum_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/aluminum_block.json b/src/main/resources/assets/nnow/models/block/aluminum_block.json new file mode 100644 index 0000000..3bd4a0c --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/aluminum_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "nnow:blocks/metals/aluminum_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/banker_poi.json b/src/main/resources/assets/nnow/models/block/banker_poi.json new file mode 100644 index 0000000..6acb636 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/banker_poi.json @@ -0,0 +1,475 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "block/dark_oak_planks", + "1": "block/cartography_table_side3", + "2": "block/anvil", + "3": "block/smooth_stone", + "5": "block/white_concrete", + "6": "nnow:blocks/book", + "7": "nnow:blocks/enchanted_book", + "particle": "nnow:blocks/book" + }, + "elements": [ + { + "name": "Leg NW", + "from": [1, 0, 1], + "to": [3, 14, 3], + "faces": { + "north": {"uv": [8, 1, 10, 15], "texture": "#1"}, + "east": {"uv": [3, 1, 5, 15], "texture": "#1"}, + "south": {"uv": [0, 1, 2, 15], "texture": "#1"}, + "west": {"uv": [7, 1, 9, 15], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + }, + { + "name": "Leg SW", + "from": [1, 0, 13], + "to": [3, 14, 15], + "faces": { + "north": {"uv": [0, 1, 2, 15], "texture": "#1"}, + "east": {"uv": [7, 1, 9, 15], "texture": "#1"}, + "south": {"uv": [4, 1, 6, 15], "texture": "#1"}, + "west": {"uv": [7, 1, 9, 15], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + }, + { + "name": "Leg NE", + "from": [13, 0, 1], + "to": [15, 14, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]}, + "faces": { + "north": {"uv": [0, 1, 2, 15], "texture": "#1"}, + "east": {"uv": [3, 1, 5, 15], "texture": "#1"}, + "south": {"uv": [8, 1, 10, 15], "texture": "#1"}, + "west": {"uv": [3, 1, 5, 15], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + }, + { + "name": "Leg SE", + "from": [13, 0, 13], + "to": [15, 14, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, + "faces": { + "north": {"uv": [4, 1, 6, 15], "texture": "#1"}, + "east": {"uv": [7, 1, 9, 15], "texture": "#1"}, + "south": {"uv": [0, 1, 2, 15], "texture": "#1"}, + "west": {"uv": [3, 1, 5, 15], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + }, + { + "name": "Top", + "from": [0, 14, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 14, 16, 16], "texture": "#0"}, + "east": {"uv": [14, 0, 16, 16], "rotation": 90, "texture": "#0"}, + "south": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#0"}, + "west": {"uv": [8, 0, 10, 16], "rotation": 90, "texture": "#0"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#0"} + } + }, + { + "name": "Top Book", + "from": [3, 17, -3], + "to": [8, 18, 4], + "rotation": {"angle": 45, "axis": "y", "origin": [11, 25, 5]}, + "faces": { + "north": {"uv": [4.5, 11, 15.5, 16], "rotation": 180, "texture": "#7"}, + "east": {"uv": [7, 11, 16, 16], "texture": "#7"}, + "south": {"uv": [4.5, 11, 15.5, 16], "texture": "#7"}, + "west": {"uv": [0, 13, 12, 16], "texture": "#6"}, + "up": {"uv": [0, 0, 8, 12], "texture": "#6"}, + "down": {"uv": [8, 0, 16, 12], "texture": "#6"} + } + }, + { + "name": "Top Lower Book", + "from": [3, 16, 0], + "to": [8, 17, 7], + "rotation": {"angle": 22.5, "axis": "y", "origin": [11, 24, 8]}, + "faces": { + "north": {"uv": [4.5, 11, 15.5, 16], "rotation": 180, "texture": "#7"}, + "east": {"uv": [7, 11, 16, 16], "texture": "#7"}, + "south": {"uv": [4.5, 11, 15.5, 16], "texture": "#7"}, + "west": {"uv": [0, 13, 12, 16], "texture": "#6"}, + "up": {"uv": [0, 0, 8, 12], "texture": "#6"}, + "down": {"uv": [8, 0, 16, 12], "texture": "#6"} + } + }, + { + "name": "Shelf", + "from": [2, 6, 2], + "to": [14, 7, 14], + "faces": { + "north": {"uv": [4, 14, 16, 15], "texture": "#0"}, + "east": {"uv": [4, 13, 16, 14], "texture": "#0"}, + "south": {"uv": [3, 6, 15, 7], "texture": "#0"}, + "west": {"uv": [0, 12, 12, 13], "texture": "#0"}, + "up": {"uv": [0, 0, 12, 12], "texture": "#0"}, + "down": {"uv": [0, 0, 12, 12], "texture": "#0"} + } + }, + { + "name": "Top Shelf Book", + "from": [6, 9, -1], + "to": [11, 10, 6], + "rotation": {"angle": 45, "axis": "y", "origin": [14, 17, 7]}, + "faces": { + "north": {"uv": [4.5, 11, 15.5, 16], "rotation": 180, "texture": "#7"}, + "east": {"uv": [7, 11, 16, 16], "texture": "#7"}, + "south": {"uv": [4.5, 11, 15.5, 16], "texture": "#7"}, + "west": {"uv": [0, 13, 12, 16], "texture": "#6"}, + "up": {"uv": [0, 0, 8, 12], "texture": "#6"}, + "down": {"uv": [8, 0, 16, 12], "texture": "#6"} + } + }, + { + "name": "Middle Shelf Book", + "from": [6, 8, 1], + "to": [11, 9, 8], + "rotation": {"angle": 22.5, "axis": "y", "origin": [14, 16, 9]}, + "faces": { + "north": {"uv": [4.5, 11, 15.5, 16], "rotation": 180, "texture": "#7"}, + "east": {"uv": [7, 11, 16, 16], "texture": "#7"}, + "south": {"uv": [4.5, 11, 15.5, 16], "texture": "#7"}, + "west": {"uv": [0, 0, 4, 10], "rotation": 270, "texture": "#7"}, + "up": {"uv": [4, 0, 12, 10], "texture": "#7"}, + "down": {"uv": [4, 0, 12, 10], "texture": "#7"} + } + }, + { + "name": "Bottom Shelf Book", + "from": [6, 7, -1], + "to": [11, 8, 6], + "rotation": {"angle": 45, "axis": "y", "origin": [14, 15, 7]}, + "faces": { + "north": {"uv": [4.5, 11, 15.5, 16], "rotation": 180, "texture": "#7"}, + "east": {"uv": [7, 11, 16, 16], "texture": "#7"}, + "south": {"uv": [4.5, 11, 15.5, 16], "texture": "#7"}, + "west": {"uv": [0, 0, 4, 10], "rotation": 270, "texture": "#7"}, + "up": {"uv": [4, 0, 12, 10], "texture": "#7"}, + "down": {"uv": [4, 0, 12, 10], "texture": "#7"} + } + }, + { + "name": "Number Base", + "from": [11, 16, 8], + "to": [14, 16.5, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [19, 24, 16]}, + "faces": { + "north": {"uv": [0, 0, 3, 1], "texture": "#2"}, + "east": {"uv": [2, 13, 6, 14], "texture": "#2"}, + "south": {"uv": [0, 9, 3, 10], "texture": "#2"}, + "west": {"uv": [12, 12, 16, 13], "texture": "#2"}, + "up": {"uv": [0, 6, 3, 10], "texture": "#2"}, + "down": {"uv": [0, 0, 3, 4], "texture": "#2"} + } + }, + { + "name": "Screen Base", + "from": [10.99, 12.55, 9.8], + "to": [14.01, 13.25, 11], + "rotation": {"angle": 22.5, "axis": "x", "origin": [19, 21, 18]}, + "faces": { + "north": {"uv": [0, 0, 3.02, 0.7], "texture": "#2"}, + "east": {"uv": [0, 0, 1.2, 0.7], "texture": "#2"}, + "south": {"uv": [0, 0, 3.02, 0.7], "texture": "#2"}, + "west": {"uv": [0, 0, 1.2, 0.7], "texture": "#2"}, + "up": {"uv": [0, 0, 3.02, 1.2], "texture": "#2"}, + "down": {"uv": [0, 0, 3.02, 1.2], "texture": "#2"} + } + }, + { + "name": "Screen", + "from": [11.09, 13.25, 10.05], + "to": [13.89, 13.35, 11.05], + "rotation": {"angle": 22.5, "axis": "x", "origin": [19.1, 21.25, 18.05]}, + "faces": { + "north": {"uv": [0, 0, 2.8, 0.1], "texture": "#3"}, + "east": {"uv": [0, 0, 1, 0.1], "texture": "#3"}, + "south": {"uv": [0, 0, 2.8, 0.1], "texture": "#3"}, + "west": {"uv": [0, 0, 1, 0.1], "texture": "#3"}, + "up": {"uv": [5, 1, 7.8, 2], "texture": "#3"}, + "down": {"uv": [0, 0, 2.8, 1], "texture": "#3"} + } + }, + { + "from": [11.3, 16.1, 11.2], + "to": [11.8, 16.6, 11.7], + "rotation": {"angle": 0, "axis": "y", "origin": [19.3, 13.1, 19.2]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"} + } + }, + { + "from": [11.9, 16.1, 11.2], + "to": [12.4, 16.6, 11.7], + "rotation": {"angle": 0, "axis": "y", "origin": [19.9, 13.1, 19.2]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"} + } + }, + { + "from": [12.5, 16.1, 11.2], + "to": [13, 16.6, 11.7], + "rotation": {"angle": 0, "axis": "y", "origin": [20.5, 13.1, 19.2]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"} + } + }, + { + "from": [11.3, 16.1, 10.5], + "to": [11.8, 16.6, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [19.3, 13.1, 18.5]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"} + } + }, + { + "from": [11.9, 16.1, 10.5], + "to": [12.4, 16.6, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [19.9, 13.1, 18.5]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"} + } + }, + { + "from": [12.5, 16.1, 10.5], + "to": [13, 16.6, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [20.5, 13.1, 18.5]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"} + } + }, + { + "from": [11.3, 16.1, 9.8], + "to": [11.8, 16.6, 10.3], + "rotation": {"angle": 0, "axis": "y", "origin": [19.3, 13.1, 17.8]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"} + } + }, + { + "from": [11.9, 16.1, 9.8], + "to": [12.4, 16.6, 10.3], + "rotation": {"angle": 0, "axis": "y", "origin": [19.9, 13.1, 17.8]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"} + } + }, + { + "from": [12.5, 16.1, 9.8], + "to": [13, 16.6, 10.3], + "rotation": {"angle": 0, "axis": "y", "origin": [20.5, 13.1, 17.8]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"} + } + }, + { + "from": [13.1, 16.1, 9.8], + "to": [13.6, 16.6, 10.3], + "rotation": {"angle": 0, "axis": "y", "origin": [21.1, 13.1, 17.8]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"} + } + }, + { + "from": [11.3, 16.1, 9.1], + "to": [11.8, 16.6, 9.6], + "rotation": {"angle": 0, "axis": "y", "origin": [19.3, 13.1, 17.1]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"} + } + }, + { + "from": [11.9, 16.1, 9.1], + "to": [12.4, 16.6, 9.6], + "rotation": {"angle": 0, "axis": "y", "origin": [19.9, 13.1, 17.1]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"} + } + }, + { + "from": [12.5, 16.1, 9.1], + "to": [13, 16.6, 9.6], + "rotation": {"angle": 0, "axis": "y", "origin": [20.5, 13.1, 17.1]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"} + } + }, + { + "from": [13.1, 16.1, 9.1], + "to": [13.6, 16.6, 9.6], + "rotation": {"angle": 0, "axis": "y", "origin": [21.1, 13.1, 17.1]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "east": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "west": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "up": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "down": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"} + } + }, + { + "name": "Enter", + "from": [13.1, 16.1, 10.5], + "to": [13.6, 16.6, 11.7], + "rotation": {"angle": 0, "axis": "y", "origin": [21.1, 13.1, 18.5]}, + "faces": { + "north": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "east": {"uv": [0, 0, 1.2, 0.5], "texture": "#5"}, + "south": {"uv": [0, 0, 0.5, 0.5], "texture": "#5"}, + "west": {"uv": [0, 0, 1.2, 0.5], "texture": "#5"}, + "up": {"uv": [0, 0, 0.5, 1.2], "texture": "#5"}, + "down": {"uv": [0, 0, 0.5, 1.2], "texture": "#5"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "rotation": [-38, -180, 0], + "translation": [0, -0.25, -1], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + { + "name": "Cal", + "origin": [19, 24, 11], + "children": [11, 12, 13, + { + "name": "Buttons", + "origin": [20.4, 13.6, 14.3], + "children": [ + { + "name": "1-3", + "origin": [20.4, 13.6, 14.3], + "children": [14, 15, 16, + { + "name": "group", + "origin": [20.5, 13.6, 14.3], + "children": [] + } + ] + }, + { + "name": "4-6", + "origin": [20.4, 13.6, 14.3], + "children": [17, 18, 19] + }, + { + "name": "7-9", + "origin": [20.4, 13.6, 14.3], + "children": [20, 21, 22, 23] + }, + { + "name": "Top Row", + "origin": [20.4, 13.6, 14.3], + "children": [24, 25, 26, 27] + }, 28] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/berry_bush_stage0.json b/src/main/resources/assets/nnow/models/block/berry_bush_stage0.json index 434b1cc..552c556 100644 --- a/src/main/resources/assets/nnow/models/block/berry_bush_stage0.json +++ b/src/main/resources/assets/nnow/models/block/berry_bush_stage0.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/berry_bush_stage0" + "cross": "nnow:blocks/bushes/berry_bush_stage0" } } diff --git a/src/main/resources/assets/nnow/models/block/berry_bush_stage1.json b/src/main/resources/assets/nnow/models/block/berry_bush_stage1.json index 0485a04..37e94ae 100644 --- a/src/main/resources/assets/nnow/models/block/berry_bush_stage1.json +++ b/src/main/resources/assets/nnow/models/block/berry_bush_stage1.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/berry_bush_stage1" + "cross": "nnow:blocks/bushes/berry_bush_stage1" } } diff --git a/src/main/resources/assets/nnow/models/block/bismuth_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/bismuth_berry_bush_stage2.json new file mode 100644 index 0000000..fb53a4d --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/bismuth_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/bismuth_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/bismuth_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/bismuth_berry_bush_stage3.json new file mode 100644 index 0000000..cda0ad2 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/bismuth_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/bismuth_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/bismuth_block.json b/src/main/resources/assets/nnow/models/block/bismuth_block.json new file mode 100644 index 0000000..05d55e6 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/bismuth_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "nnow:blocks/metals/bismuth_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/clay_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/clay_berry_bush_stage2.json new file mode 100644 index 0000000..cfb4898 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/clay_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/clay_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/clay_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/clay_berry_bush_stage3.json new file mode 100644 index 0000000..5c89f8d --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/clay_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/clay_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/coal_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/coal_berry_bush_stage2.json index 959d5d0..0d15ea3 100644 --- a/src/main/resources/assets/nnow/models/block/coal_berry_bush_stage2.json +++ b/src/main/resources/assets/nnow/models/block/coal_berry_bush_stage2.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/coal_berry_bush_stage2" + "cross": "nnow:blocks/bushes/coal_berry_bush_stage2" } } diff --git a/src/main/resources/assets/nnow/models/block/coal_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/coal_berry_bush_stage3.json index 403ba75..85145d7 100644 --- a/src/main/resources/assets/nnow/models/block/coal_berry_bush_stage3.json +++ b/src/main/resources/assets/nnow/models/block/coal_berry_bush_stage3.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/coal_berry_bush_stage3" + "cross": "nnow:blocks/bushes/coal_berry_bush_stage3" } } diff --git a/src/main/resources/assets/nnow/models/block/copper_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/copper_berry_bush_stage2.json new file mode 100644 index 0000000..17a2c0e --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/copper_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/copper_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/copper_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/copper_berry_bush_stage3.json new file mode 100644 index 0000000..f6aeb73 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/copper_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/copper_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/copper_block.json b/src/main/resources/assets/nnow/models/block/copper_block.json new file mode 100644 index 0000000..cc8a79d --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/copper_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "nnow:blocks/metals/copper_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/diamond_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/diamond_berry_bush_stage2.json index 0f68e24..6fdd9f0 100644 --- a/src/main/resources/assets/nnow/models/block/diamond_berry_bush_stage2.json +++ b/src/main/resources/assets/nnow/models/block/diamond_berry_bush_stage2.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/diamond_berry_bush_stage2" + "cross": "nnow:blocks/bushes/diamond_berry_bush_stage2" } } diff --git a/src/main/resources/assets/nnow/models/block/diamond_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/diamond_berry_bush_stage3.json index 58b0fc3..e3f6cf7 100644 --- a/src/main/resources/assets/nnow/models/block/diamond_berry_bush_stage3.json +++ b/src/main/resources/assets/nnow/models/block/diamond_berry_bush_stage3.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/diamond_berry_bush_stage3" + "cross": "nnow:blocks/bushes/diamond_berry_bush_stage3" } } diff --git a/src/main/resources/assets/nnow/models/block/dirt_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/dirt_berry_bush_stage2.json new file mode 100644 index 0000000..bce8e22 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/dirt_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/dirt_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/dirt_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/dirt_berry_bush_stage3.json new file mode 100644 index 0000000..d5787cd --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/dirt_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/dirt_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/emerald_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/emerald_berry_bush_stage2.json index 1b559fa..bf933c8 100644 --- a/src/main/resources/assets/nnow/models/block/emerald_berry_bush_stage2.json +++ b/src/main/resources/assets/nnow/models/block/emerald_berry_bush_stage2.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/emerald_berry_bush_stage2" + "cross": "nnow:blocks/bushes/emerald_berry_bush_stage2" } } diff --git a/src/main/resources/assets/nnow/models/block/emerald_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/emerald_berry_bush_stage3.json index f4d26e9..9826546 100644 --- a/src/main/resources/assets/nnow/models/block/emerald_berry_bush_stage3.json +++ b/src/main/resources/assets/nnow/models/block/emerald_berry_bush_stage3.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/emerald_berry_bush_stage3" + "cross": "nnow:blocks/bushes/emerald_berry_bush_stage3" } } diff --git a/src/main/resources/assets/nnow/models/block/end_trader.json b/src/main/resources/assets/nnow/models/block/end_trader.json new file mode 100644 index 0000000..0ba9efb --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/end_trader.json @@ -0,0 +1,105 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "1": "nnow:blocks/end_trader_side1", + "2": "nnow:blocks/end_trader_bottom", + "3": "nnow:blocks/end_trader_top", + "particle": "nnow:blocks/end_trader_bottom" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 15, 16], + "faces": { + "north": {"uv": [0, 1, 16, 16], "texture": "#1"}, + "east": {"uv": [0, 1, 16, 16], "texture": "#1"}, + "south": {"uv": [0, 1, 16, 16], "texture": "#1"}, + "west": {"uv": [0, 1, 16, 16], "texture": "#1"}, + "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#3"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#2"} + } + }, + { + "from": [0, 15, 0], + "to": [16, 16, 2], + "faces": { + "north": {"uv": [0, 0, 16, 1], "texture": "#2"}, + "east": {"uv": [14, 0, 16, 1], "texture": "#2"}, + "south": {"uv": [0, 1, 16, 2], "texture": "#2"}, + "west": {"uv": [0, 0, 2, 1], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 2], "texture": "#2"}, + "down": {"uv": [0, 0, 16, 2], "texture": "#2"} + } + }, + { + "from": [0, 15, 14], + "to": [16, 16, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 22]}, + "faces": { + "north": {"uv": [0, 14, 16, 15], "rotation": 180, "texture": "#2"}, + "east": {"uv": [0, 0, 2, 1], "texture": "#2"}, + "south": {"uv": [0, 0, 16, 1], "texture": "#2"}, + "west": {"uv": [14, 0, 16, 1], "texture": "#2"}, + "up": {"uv": [0, 14, 16, 16], "texture": "#2"}, + "down": {"uv": [0, 0, 16, 2], "texture": "#2"} + } + }, + { + "from": [0, 15, 2], + "to": [2, 16, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 10]}, + "faces": { + "north": {"uv": [14, 0, 16, 1], "texture": "#2"}, + "east": {"uv": [1, 2, 2, 14], "rotation": 90, "texture": "#2"}, + "south": {"uv": [14, 0, 16, 1], "texture": "#2"}, + "west": {"uv": [2, 0, 14, 1], "texture": "#2"}, + "up": {"uv": [0, 2, 2, 14], "texture": "#2"}, + "down": {"uv": [0, 0, 2, 12], "texture": "#2"} + } + }, + { + "from": [14, 15, 2], + "to": [16, 16, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [22, 13, 10]}, + "faces": { + "north": {"uv": [14, 0, 16, 1], "texture": "#1"}, + "east": {"uv": [2, 0, 14, 1], "texture": "#1"}, + "south": {"uv": [14, 0, 16, 1], "texture": "#1"}, + "west": {"uv": [14, 2, 15, 14], "rotation": 270, "texture": "#1"}, + "up": {"uv": [14, 2, 16, 14], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 12], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/fire_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/fire_berry_bush_stage2.json index ca5e8b8..907d70b 100644 --- a/src/main/resources/assets/nnow/models/block/fire_berry_bush_stage2.json +++ b/src/main/resources/assets/nnow/models/block/fire_berry_bush_stage2.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/fire_berry_bush_stage2" + "cross": "nnow:blocks/bushes/fire_berry_bush_stage2" } } diff --git a/src/main/resources/assets/nnow/models/block/fire_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/fire_berry_bush_stage3.json index 402c31e..9200770 100644 --- a/src/main/resources/assets/nnow/models/block/fire_berry_bush_stage3.json +++ b/src/main/resources/assets/nnow/models/block/fire_berry_bush_stage3.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/fire_berry_bush_stage3" + "cross": "nnow:blocks/bushes/fire_berry_bush_stage3" } } diff --git a/src/main/resources/assets/nnow/models/block/gold_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/gold_berry_bush_stage2.json index f9f4581..69eb3d5 100644 --- a/src/main/resources/assets/nnow/models/block/gold_berry_bush_stage2.json +++ b/src/main/resources/assets/nnow/models/block/gold_berry_bush_stage2.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/gold_berry_bush_stage2" + "cross": "nnow:blocks/bushes/gold_berry_bush_stage2" } } diff --git a/src/main/resources/assets/nnow/models/block/gold_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/gold_berry_bush_stage3.json index 749f0a6..2b1c8a1 100644 --- a/src/main/resources/assets/nnow/models/block/gold_berry_bush_stage3.json +++ b/src/main/resources/assets/nnow/models/block/gold_berry_bush_stage3.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/gold_berry_bush_stage3" + "cross": "nnow:blocks/bushes/gold_berry_bush_stage3" } } diff --git a/src/main/resources/assets/nnow/models/block/gravel_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/gravel_berry_bush_stage2.json new file mode 100644 index 0000000..d675988 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/gravel_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/gravel_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/gravel_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/gravel_berry_bush_stage3.json new file mode 100644 index 0000000..4730c86 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/gravel_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/gravel_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/ice_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/ice_berry_bush_stage2.json index 335651f..db7bb90 100644 --- a/src/main/resources/assets/nnow/models/block/ice_berry_bush_stage2.json +++ b/src/main/resources/assets/nnow/models/block/ice_berry_bush_stage2.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/ice_berry_bush_stage2" + "cross": "nnow:blocks/bushes/ice_berry_bush_stage2" } } diff --git a/src/main/resources/assets/nnow/models/block/ice_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/ice_berry_bush_stage3.json index 2765163..6f00463 100644 --- a/src/main/resources/assets/nnow/models/block/ice_berry_bush_stage3.json +++ b/src/main/resources/assets/nnow/models/block/ice_berry_bush_stage3.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/ice_berry_bush_stage3" + "cross": "nnow:blocks/bushes/ice_berry_bush_stage3" } } diff --git a/src/main/resources/assets/nnow/models/block/ingot_furnace.json b/src/main/resources/assets/nnow/models/block/ingot_furnace.json new file mode 100644 index 0000000..2b59a00 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/ingot_furnace.json @@ -0,0 +1,55 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "nnow:blocks/ingot_furnace/ingot_furnace_front", + "1": "nnow:blocks/ingot_furnace/ingot_furnace_side", + "2": "nnow:blocks/ingot_furnace/ingot_furnace_top", + "3": "nnow:blocks/ingot_furnace/ingot_furnace_bottom", + "particle": "nnow:blocks/ingot_furnace/ingot_furnace_front" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#0"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "south": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "down": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#3"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/iridium_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/iridium_berry_bush_stage2.json new file mode 100644 index 0000000..a1e2e1d --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/iridium_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/iridium_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/iridium_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/iridium_berry_bush_stage3.json new file mode 100644 index 0000000..877bebf --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/iridium_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/iridium_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/iridium_block.json b/src/main/resources/assets/nnow/models/block/iridium_block.json new file mode 100644 index 0000000..c02fdfc --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/iridium_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "nnow:blocks/metals/iridium_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/iron_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/iron_berry_bush_stage2.json index 1bbbbb6..9094e5a 100644 --- a/src/main/resources/assets/nnow/models/block/iron_berry_bush_stage2.json +++ b/src/main/resources/assets/nnow/models/block/iron_berry_bush_stage2.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/iron_berry_bush_stage2" + "cross": "nnow:blocks/bushes/iron_berry_bush_stage2" } } diff --git a/src/main/resources/assets/nnow/models/block/iron_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/iron_berry_bush_stage3.json index 1fc78cd..1047525 100644 --- a/src/main/resources/assets/nnow/models/block/iron_berry_bush_stage3.json +++ b/src/main/resources/assets/nnow/models/block/iron_berry_bush_stage3.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/iron_berry_bush_stage3" + "cross": "nnow:blocks/bushes/iron_berry_bush_stage3" } } diff --git a/src/main/resources/assets/nnow/models/block/lapis_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/lapis_berry_bush_stage2.json index be5dbf1..a344d2a 100644 --- a/src/main/resources/assets/nnow/models/block/lapis_berry_bush_stage2.json +++ b/src/main/resources/assets/nnow/models/block/lapis_berry_bush_stage2.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/lapis_berry_bush_stage2" + "cross": "nnow:blocks/bushes/lapis_berry_bush_stage2" } } diff --git a/src/main/resources/assets/nnow/models/block/lapis_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/lapis_berry_bush_stage3.json index 60d2b69..d58b858 100644 --- a/src/main/resources/assets/nnow/models/block/lapis_berry_bush_stage3.json +++ b/src/main/resources/assets/nnow/models/block/lapis_berry_bush_stage3.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/lapis_berry_bush_stage3" + "cross": "nnow:blocks/bushes/lapis_berry_bush_stage3" } } diff --git a/src/main/resources/assets/nnow/models/block/lead_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/lead_berry_bush_stage2.json new file mode 100644 index 0000000..d1bf99e --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/lead_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/lead_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/lead_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/lead_berry_bush_stage3.json new file mode 100644 index 0000000..178a8e4 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/lead_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/lead_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/lead_block.json b/src/main/resources/assets/nnow/models/block/lead_block.json new file mode 100644 index 0000000..8ccb814 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/lead_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "nnow:blocks/metals/lead_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/nether_trader.json b/src/main/resources/assets/nnow/models/block/nether_trader.json new file mode 100644 index 0000000..0345c0a --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/nether_trader.json @@ -0,0 +1,174 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "entity/piglin/zombified_piglin", + "1": "block/spruce_planks", + "particle": "block/spruce_planks" + }, + "elements": [ + { + "from": [4, 18, 4], + "to": [14, 26, 12], + "rotation": {"angle": 22.5, "axis": "z", "origin": [7.778, 20.28122, 5.3]}, + "faces": { + "north": {"uv": [2, 2, 4.5, 4], "texture": "#0"}, + "east": {"uv": [0, 2, 2, 4], "texture": "#0"}, + "south": {"uv": [6.5, 2, 9, 4], "texture": "#0"}, + "west": {"uv": [4.5, 2, 6.5, 4], "texture": "#0"}, + "up": {"uv": [2, 0, 4, 2], "rotation": 180, "texture": "#0"}, + "down": {"uv": [2, 0, 4, 2], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [7, 18, 3], + "to": [11, 22, 4], + "rotation": {"angle": 22.5, "axis": "z", "origin": [7.778, 20.28122, 5.3]}, + "faces": { + "north": {"uv": [8, 0.5, 9, 1.5], "texture": "#0"}, + "east": {"uv": [7.75, 0.5, 8, 1.5], "texture": "#0"}, + "south": {"uv": [7.75, 0.25, 11.75, 4.25], "texture": "#0"}, + "west": {"uv": [9, 0.5, 9.25, 1.5], "texture": "#0"}, + "up": {"uv": [8, 0.25, 9, 0.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [9, 0.25, 10, 0.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [6, 18, 3], + "to": [7, 20, 4], + "rotation": {"angle": 22.5, "axis": "z", "origin": [7.778, 20.28122, 5.3]}, + "faces": { + "north": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "east": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "south": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "west": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "up": {"uv": [0.75, 0.25, 1, 0.5], "texture": "#0"}, + "down": {"uv": [0.75, 0.5, 1, 0.75], "texture": "#0"} + } + }, + { + "from": [11, 18, 3], + "to": [12, 20, 4], + "rotation": {"angle": 22.5, "axis": "z", "origin": [7.778, 20.28122, 5.3]}, + "faces": { + "north": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "east": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "south": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "west": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "up": {"uv": [0.75, 0.25, 1, 0.5], "texture": "#0"}, + "down": {"uv": [0.75, 0.5, 1, 0.75], "texture": "#0"} + } + }, + { + "from": [2.33163, 16.94993, 6], + "to": [3.33163, 21.94993, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [7.778, 20.28122, 5.3]}, + "faces": { + "north": {"uv": [13.75, 2.5, 14, 3.75], "texture": "#0"}, + "east": {"uv": [14.25, 2.5, 15.25, 3.75], "texture": "#0"}, + "south": {"uv": [14, 2.5, 14.25, 3.75], "texture": "#0"}, + "west": {"uv": [12.75, 2.5, 13.75, 3.75], "texture": "#0"}, + "up": {"uv": [14, 1.5, 14.25, 2.5], "texture": "#0"}, + "down": {"uv": [13.75, 1.5, 14, 2.5], "texture": "#0"} + } + }, + { + "from": [7, 16, 7], + "to": [9, 24, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 24, 15]}, + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "east": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + }, + { + "from": [7, 24, 7], + "to": [9, 32, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 32, 15]}, + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "east": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + }, + { + "name": "Bottom Pole", + "from": [7, 0, 7], + "to": [9, 8, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 8, 15]}, + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "east": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + }, + { + "name": "Top Pole", + "from": [7, 8, 7], + "to": [9, 16, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 16, 15]}, + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "east": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [29.5, 45, 0], + "translation": [0, 0.75, 1], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [34, 45, 0], + "translation": [0, 0.75, 0.5], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, -3.5, 0], + "scale": [0.525, 0.525, 0.525] + }, + "fixed": { + "translation": [0, -4, -0.75], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "Head", + "origin": [11, 8, 15], + "children": [0, 1, 2, 3, 4] + }, 5, 6, + { + "name": "lower", + "origin": [15, 16, 15], + "children": [7, 8] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/nether_trader_bottom.json b/src/main/resources/assets/nnow/models/block/nether_trader_bottom.json new file mode 100644 index 0000000..3a0bc50 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/nether_trader_bottom.json @@ -0,0 +1,77 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "1": "block/spruce_planks", + "particle": "block/spruce_planks" + }, + "elements": [ + { + "name": "Bottom Pole", + "from": [7, 0, 7], + "to": [9, 8, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 8, 15]}, + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "east": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + }, + { + "name": "Top Pole", + "from": [7, 8, 7], + "to": [9, 16, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 16, 15]}, + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "east": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [29.5, 45, 0], + "translation": [0, 0.75, 1], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [34, 45, 0], + "translation": [0, 0.75, 0.5], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, -2.25, 0], + "scale": [0.525, 0.525, 0.525] + }, + "fixed": { + "translation": [0, -3, -0.75], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "lower", + "origin": [15, 16, 15], + "children": [0, 1] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/nether_trader_top.json b/src/main/resources/assets/nnow/models/block/nether_trader_top.json new file mode 100644 index 0000000..d5e5d3a --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/nether_trader_top.json @@ -0,0 +1,140 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "entity/piglin/zombified_piglin", + "1": "block/spruce_planks", + "particle": "block/spruce_planks" + }, + "elements": [ + { + "from": [4, 2, 4], + "to": [14, 10, 12], + "rotation": {"angle": 22.5, "axis": "z", "origin": [7.778, 4.28122, 5.3]}, + "faces": { + "north": {"uv": [2, 2, 4.5, 4], "texture": "#0"}, + "east": {"uv": [0, 2, 2, 4], "texture": "#0"}, + "south": {"uv": [6.5, 2, 9, 4], "texture": "#0"}, + "west": {"uv": [4.5, 2, 6.5, 4], "texture": "#0"}, + "up": {"uv": [2, 0, 4, 2], "rotation": 180, "texture": "#0"}, + "down": {"uv": [2, 0, 4, 2], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [7, 2, 3], + "to": [11, 6, 4], + "rotation": {"angle": 22.5, "axis": "z", "origin": [7.778, 4.28122, 5.3]}, + "faces": { + "north": {"uv": [8, 0.5, 9, 1.5], "texture": "#0"}, + "east": {"uv": [7.75, 0.5, 8, 1.5], "texture": "#0"}, + "south": {"uv": [7.75, 0.25, 11.75, 4.25], "texture": "#0"}, + "west": {"uv": [9, 0.5, 9.25, 1.5], "texture": "#0"}, + "up": {"uv": [8, 0.25, 9, 0.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [9, 0.25, 10, 0.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [6, 2, 3], + "to": [7, 4, 4], + "rotation": {"angle": 22.5, "axis": "z", "origin": [7.778, 4.28122, 5.3]}, + "faces": { + "north": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "east": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "south": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "west": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "up": {"uv": [0.75, 0.25, 1, 0.5], "texture": "#0"}, + "down": {"uv": [0.75, 0.5, 1, 0.75], "texture": "#0"} + } + }, + { + "from": [11, 2, 3], + "to": [12, 4, 4], + "rotation": {"angle": 22.5, "axis": "z", "origin": [7.778, 4.28122, 5.3]}, + "faces": { + "north": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "east": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "south": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "west": {"uv": [0.75, 0.25, 1, 0.75], "texture": "#0"}, + "up": {"uv": [0.75, 0.25, 1, 0.5], "texture": "#0"}, + "down": {"uv": [0.75, 0.5, 1, 0.75], "texture": "#0"} + } + }, + { + "from": [2.33163, 0.94993, 6], + "to": [3.33163, 5.94993, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [7.778, 4.28122, 5.3]}, + "faces": { + "north": {"uv": [13.75, 2.5, 14, 3.75], "texture": "#0"}, + "east": {"uv": [14.25, 2.5, 15.25, 3.75], "texture": "#0"}, + "south": {"uv": [14, 2.5, 14.25, 3.75], "texture": "#0"}, + "west": {"uv": [12.75, 2.5, 13.75, 3.75], "texture": "#0"}, + "up": {"uv": [14, 1.5, 14.25, 2.5], "texture": "#0"}, + "down": {"uv": [13.75, 1.5, 14, 2.5], "texture": "#0"} + } + }, + { + "from": [7, 0, 7], + "to": [9, 8, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 8, 15]}, + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "east": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + }, + { + "from": [7, 8, 7], + "to": [9, 16, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 16, 15]}, + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "east": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "west": {"uv": [0, 0, 2, 16], "texture": "#1"}, + "up": {"uv": [0, 0, 2, 2], "texture": "#1"}, + "down": {"uv": [0, 0, 2, 2], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [29.5, 45, 0], + "translation": [0, 0.75, 1], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [34, 45, 0], + "translation": [0, 0.75, 0.5], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, -2.25, 0], + "scale": [0.525, 0.525, 0.525] + }, + "fixed": { + "translation": [0, -3, -0.75], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "Head", + "origin": [11, 8, 15], + "children": [0, 1, 2, 3, 4] + }, 5, 6] +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/nickel_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/nickel_berry_bush_stage2.json new file mode 100644 index 0000000..5c08eb4 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/nickel_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/nickel_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/nickel_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/nickel_berry_bush_stage3.json new file mode 100644 index 0000000..1e416bb --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/nickel_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/nickel_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/nickel_block.json b/src/main/resources/assets/nnow/models/block/nickel_block.json new file mode 100644 index 0000000..0c9e768 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/nickel_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "nnow:blocks/metals/nickel_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/barley_crop0.json b/src/main/resources/assets/nnow/models/block/old/barley_crop0.json similarity index 100% rename from src/main/resources/assets/nnow/models/block/barley_crop0.json rename to src/main/resources/assets/nnow/models/block/old/barley_crop0.json diff --git a/src/main/resources/assets/nnow/models/block/barley_crop1.json b/src/main/resources/assets/nnow/models/block/old/barley_crop1.json similarity index 100% rename from src/main/resources/assets/nnow/models/block/barley_crop1.json rename to src/main/resources/assets/nnow/models/block/old/barley_crop1.json diff --git a/src/main/resources/assets/nnow/models/block/barley_crop2.json b/src/main/resources/assets/nnow/models/block/old/barley_crop2.json similarity index 100% rename from src/main/resources/assets/nnow/models/block/barley_crop2.json rename to src/main/resources/assets/nnow/models/block/old/barley_crop2.json diff --git a/src/main/resources/assets/nnow/models/block/barley_crop3.json b/src/main/resources/assets/nnow/models/block/old/barley_crop3.json similarity index 100% rename from src/main/resources/assets/nnow/models/block/barley_crop3.json rename to src/main/resources/assets/nnow/models/block/old/barley_crop3.json diff --git a/src/main/resources/assets/nnow/models/block/barley_crop4.json b/src/main/resources/assets/nnow/models/block/old/barley_crop4.json similarity index 100% rename from src/main/resources/assets/nnow/models/block/barley_crop4.json rename to src/main/resources/assets/nnow/models/block/old/barley_crop4.json diff --git a/src/main/resources/assets/nnow/models/block/barley_crop5.json b/src/main/resources/assets/nnow/models/block/old/barley_crop5.json similarity index 100% rename from src/main/resources/assets/nnow/models/block/barley_crop5.json rename to src/main/resources/assets/nnow/models/block/old/barley_crop5.json diff --git a/src/main/resources/assets/nnow/models/block/barley_crop6.json b/src/main/resources/assets/nnow/models/block/old/barley_crop6.json similarity index 100% rename from src/main/resources/assets/nnow/models/block/barley_crop6.json rename to src/main/resources/assets/nnow/models/block/old/barley_crop6.json diff --git a/src/main/resources/assets/nnow/models/block/barley_crop7.json b/src/main/resources/assets/nnow/models/block/old/barley_crop7.json similarity index 100% rename from src/main/resources/assets/nnow/models/block/barley_crop7.json rename to src/main/resources/assets/nnow/models/block/old/barley_crop7.json diff --git a/src/main/resources/assets/nnow/models/block/pepper_stage0.json b/src/main/resources/assets/nnow/models/block/old/pepper_stage0.json similarity index 100% rename from src/main/resources/assets/nnow/models/block/pepper_stage0.json rename to src/main/resources/assets/nnow/models/block/old/pepper_stage0.json diff --git a/src/main/resources/assets/nnow/models/block/pepper_stage1.json b/src/main/resources/assets/nnow/models/block/old/pepper_stage1.json similarity index 100% rename from src/main/resources/assets/nnow/models/block/pepper_stage1.json rename to src/main/resources/assets/nnow/models/block/old/pepper_stage1.json diff --git a/src/main/resources/assets/nnow/models/block/pepper_stage2.json b/src/main/resources/assets/nnow/models/block/old/pepper_stage2.json similarity index 100% rename from src/main/resources/assets/nnow/models/block/pepper_stage2.json rename to src/main/resources/assets/nnow/models/block/old/pepper_stage2.json diff --git a/src/main/resources/assets/nnow/models/block/pepper_stage3.json b/src/main/resources/assets/nnow/models/block/old/pepper_stage3.json similarity index 100% rename from src/main/resources/assets/nnow/models/block/pepper_stage3.json rename to src/main/resources/assets/nnow/models/block/old/pepper_stage3.json diff --git a/src/main/resources/assets/nnow/models/block/test_block.json b/src/main/resources/assets/nnow/models/block/old/test_block.json similarity index 100% rename from src/main/resources/assets/nnow/models/block/test_block.json rename to src/main/resources/assets/nnow/models/block/old/test_block.json diff --git a/src/main/resources/assets/nnow/models/block/osmium_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/osmium_berry_bush_stage2.json new file mode 100644 index 0000000..a9e54e8 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/osmium_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/osmium_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/osmium_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/osmium_berry_bush_stage3.json new file mode 100644 index 0000000..8394d28 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/osmium_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/osmium_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/osmium_block.json b/src/main/resources/assets/nnow/models/block/osmium_block.json new file mode 100644 index 0000000..c2ec527 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/osmium_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "nnow:blocks/metals/osmium_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/path_slab.json b/src/main/resources/assets/nnow/models/block/path_slab.json new file mode 100644 index 0000000..16ec6be --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/path_slab.json @@ -0,0 +1,54 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "block/grass_path_side", + "1": "block/grass_path_top", + "2": "block/dirt", + "particle": "block/grass_path_side" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 8, 16], + "faces": { + "north": {"uv": [0, 1, 16, 9], "texture": "#0"}, + "east": {"uv": [0, 1, 16, 9], "texture": "#0"}, + "south": {"uv": [0, 1, 16, 9], "texture": "#0"}, + "west": {"uv": [0, 1, 16, 9], "texture": "#0"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/path_slab_top.json b/src/main/resources/assets/nnow/models/block/path_slab_top.json new file mode 100644 index 0000000..68c59e4 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/path_slab_top.json @@ -0,0 +1,21 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "block/dirt", + "top": "block/grass_path_top", + "side": "block/grass_path_side" + }, + "elements": [ + { "from": [ 0, 8, 0 ], + "to": [ 16, 15, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#top" }, + "north": { "uv": [ 0, 1, 16, 8 ], "texture": "#side", "cullface": "north" }, + "south": { "uv": [ 0, 1, 16, 8 ], "texture": "#side", "cullface": "south" }, + "west": { "uv": [ 0, 1, 16, 8 ], "texture": "#side", "cullface": "west" }, + "east": { "uv": [ 0, 1, 16, 8 ], "texture": "#side", "cullface": "east" } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/platinum_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/platinum_berry_bush_stage2.json new file mode 100644 index 0000000..63bed3c --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/platinum_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/platinum_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/platinum_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/platinum_berry_bush_stage3.json new file mode 100644 index 0000000..fdd3234 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/platinum_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/platinum_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/platinum_block.json b/src/main/resources/assets/nnow/models/block/platinum_block.json new file mode 100644 index 0000000..89b3f1c --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/platinum_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "nnow:blocks/metals/platinum_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/quartz_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/quartz_berry_bush_stage2.json index 79bc7d4..bf9f8b0 100644 --- a/src/main/resources/assets/nnow/models/block/quartz_berry_bush_stage2.json +++ b/src/main/resources/assets/nnow/models/block/quartz_berry_bush_stage2.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/quartz_berry_bush_stage2" + "cross": "nnow:blocks/bushes/quartz_berry_bush_stage2" } } diff --git a/src/main/resources/assets/nnow/models/block/quartz_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/quartz_berry_bush_stage3.json index 18c84f9..84d1dcf 100644 --- a/src/main/resources/assets/nnow/models/block/quartz_berry_bush_stage3.json +++ b/src/main/resources/assets/nnow/models/block/quartz_berry_bush_stage3.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/quartz_berry_bush_stage3" + "cross": "nnow:blocks/bushes/quartz_berry_bush_stage3" } } diff --git a/src/main/resources/assets/nnow/models/block/redstone_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/redstone_berry_bush_stage2.json index 14e9924..756576f 100644 --- a/src/main/resources/assets/nnow/models/block/redstone_berry_bush_stage2.json +++ b/src/main/resources/assets/nnow/models/block/redstone_berry_bush_stage2.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/redstone_berry_bush_stage2" + "cross": "nnow:blocks/bushes/redstone_berry_bush_stage2" } } diff --git a/src/main/resources/assets/nnow/models/block/redstone_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/redstone_berry_bush_stage3.json index 13dbc90..28e11c9 100644 --- a/src/main/resources/assets/nnow/models/block/redstone_berry_bush_stage3.json +++ b/src/main/resources/assets/nnow/models/block/redstone_berry_bush_stage3.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/redstone_berry_bush_stage3" + "cross": "nnow:blocks/bushes/redstone_berry_bush_stage3" } } diff --git a/src/main/resources/assets/nnow/models/block/sand_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/sand_berry_bush_stage2.json new file mode 100644 index 0000000..d676556 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/sand_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/sand_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/sand_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/sand_berry_bush_stage3.json new file mode 100644 index 0000000..54e1beb --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/sand_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/sand_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/silver_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/silver_berry_bush_stage2.json new file mode 100644 index 0000000..beb0338 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/silver_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/silver_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/silver_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/silver_berry_bush_stage3.json new file mode 100644 index 0000000..be1e0b7 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/silver_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/silver_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/silver_block.json b/src/main/resources/assets/nnow/models/block/silver_block.json new file mode 100644 index 0000000..8345ff8 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/silver_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "nnow:blocks/metals/silver_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/stone_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/stone_berry_bush_stage2.json new file mode 100644 index 0000000..19c99a8 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/stone_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/stone_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/stone_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/stone_berry_bush_stage3.json new file mode 100644 index 0000000..c41e1e3 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/stone_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/stone_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/tin_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/tin_berry_bush_stage2.json new file mode 100644 index 0000000..d0ef254 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/tin_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/tin_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/tin_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/tin_berry_bush_stage3.json new file mode 100644 index 0000000..05f7160 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/tin_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/tin_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/tin_block.json b/src/main/resources/assets/nnow/models/block/tin_block.json new file mode 100644 index 0000000..51dff5a --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/tin_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "nnow:blocks/metals/tin_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/uranium_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/uranium_berry_bush_stage2.json new file mode 100644 index 0000000..1f68020 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/uranium_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/uranium_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/uranium_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/uranium_berry_bush_stage3.json new file mode 100644 index 0000000..e77804f --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/uranium_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/uranium_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/uranium_block.json b/src/main/resources/assets/nnow/models/block/uranium_block.json new file mode 100644 index 0000000..6f13032 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/uranium_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "nnow:blocks/metals/uranium_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/block/wooden_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/wooden_berry_bush_stage2.json index 136fe37..ffc7c2d 100644 --- a/src/main/resources/assets/nnow/models/block/wooden_berry_bush_stage2.json +++ b/src/main/resources/assets/nnow/models/block/wooden_berry_bush_stage2.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/wooden_berry_bush_stage2" + "cross": "nnow:blocks/bushes/wooden_berry_bush_stage2" } } diff --git a/src/main/resources/assets/nnow/models/block/wooden_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/wooden_berry_bush_stage3.json index 275492e..f4ba4a4 100644 --- a/src/main/resources/assets/nnow/models/block/wooden_berry_bush_stage3.json +++ b/src/main/resources/assets/nnow/models/block/wooden_berry_bush_stage3.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/wooden_berry_bush_stage3" + "cross": "nnow:blocks/bushes/wooden_berry_bush_stage3" } } diff --git a/src/main/resources/assets/nnow/models/block/xp_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/xp_berry_bush_stage2.json index 4defb2a..4d65938 100644 --- a/src/main/resources/assets/nnow/models/block/xp_berry_bush_stage2.json +++ b/src/main/resources/assets/nnow/models/block/xp_berry_bush_stage2.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/xp_berry_bush_stage2" + "cross": "nnow:blocks/bushes/xp_berry_bush_stage2" } } diff --git a/src/main/resources/assets/nnow/models/block/xp_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/xp_berry_bush_stage3.json index 3d1e67d..c7ec0eb 100644 --- a/src/main/resources/assets/nnow/models/block/xp_berry_bush_stage3.json +++ b/src/main/resources/assets/nnow/models/block/xp_berry_bush_stage3.json @@ -1,6 +1,6 @@ { "parent": "block/cross", "textures": { - "cross": "nnow:blocks/xp_berry_bush_stage3" + "cross": "nnow:blocks/bushes/xp_berry_bush_stage3" } } diff --git a/src/main/resources/assets/nnow/models/block/zinc_berry_bush_stage2.json b/src/main/resources/assets/nnow/models/block/zinc_berry_bush_stage2.json new file mode 100644 index 0000000..5f80571 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/zinc_berry_bush_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/zinc_berry_bush_stage2" + } +} diff --git a/src/main/resources/assets/nnow/models/block/zinc_berry_bush_stage3.json b/src/main/resources/assets/nnow/models/block/zinc_berry_bush_stage3.json new file mode 100644 index 0000000..e8a4646 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/zinc_berry_bush_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "nnow:blocks/bushes/zinc_berry_bush_stage3" + } +} diff --git a/src/main/resources/assets/nnow/models/block/zinc_block.json b/src/main/resources/assets/nnow/models/block/zinc_block.json new file mode 100644 index 0000000..f125789 --- /dev/null +++ b/src/main/resources/assets/nnow/models/block/zinc_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "nnow:blocks/metals/zinc_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/aluminum_berry.json b/src/main/resources/assets/nnow/models/item/aluminum_berry.json new file mode 100644 index 0000000..6181d28 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/aluminum_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/aluminum_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/aluminum_block.json b/src/main/resources/assets/nnow/models/item/aluminum_block.json new file mode 100644 index 0000000..e578529 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/aluminum_block.json @@ -0,0 +1,3 @@ +{ + "parent": "nnow:block/aluminum_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/aluminum_ingot.json b/src/main/resources/assets/nnow/models/item/aluminum_ingot.json new file mode 100644 index 0000000..6f27b73 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/aluminum_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/ingots/aluminum_ingot" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/aluminum_nugget.json b/src/main/resources/assets/nnow/models/item/aluminum_nugget.json new file mode 100644 index 0000000..a2d82bf --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/aluminum_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/nuggets/aluminum_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/banker_poi.json b/src/main/resources/assets/nnow/models/item/banker_poi.json new file mode 100644 index 0000000..ae2ef2f --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/banker_poi.json @@ -0,0 +1,3 @@ +{ + "parent": "nnow:block/banker_poi" +} diff --git a/src/main/resources/assets/nnow/models/item/bismuth_berry.json b/src/main/resources/assets/nnow/models/item/bismuth_berry.json new file mode 100644 index 0000000..85637d4 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/bismuth_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/bismuth_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/bismuth_block.json b/src/main/resources/assets/nnow/models/item/bismuth_block.json new file mode 100644 index 0000000..7dd6ba9 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/bismuth_block.json @@ -0,0 +1,3 @@ +{ + "parent": "nnow:block/bismuth_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/bismuth_ingot.json b/src/main/resources/assets/nnow/models/item/bismuth_ingot.json new file mode 100644 index 0000000..2ffe642 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/bismuth_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/ingots/bismuth_ingot" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/bismuth_nugget.json b/src/main/resources/assets/nnow/models/item/bismuth_nugget.json new file mode 100644 index 0000000..e79225f --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/bismuth_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/nuggets/bismuth_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/bowl_of_weetabix.json b/src/main/resources/assets/nnow/models/item/bowl_of_weetabix.json new file mode 100644 index 0000000..930eab7 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/bowl_of_weetabix.json @@ -0,0 +1,7 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/food/bowl_of_weetabix" + } +} + diff --git a/src/main/resources/assets/nnow/models/item/bun_in_the_oven.json b/src/main/resources/assets/nnow/models/item/bun_in_the_oven.json new file mode 100644 index 0000000..c097f1d --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/bun_in_the_oven.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/bun_in_the_oven" + } +} diff --git a/src/main/resources/assets/nnow/models/item/clay_berry.json b/src/main/resources/assets/nnow/models/item/clay_berry.json new file mode 100644 index 0000000..e4febd4 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/clay_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/clay_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/clay_dust.json b/src/main/resources/assets/nnow/models/item/clay_dust.json index 727f8a2..03a948a 100644 --- a/src/main/resources/assets/nnow/models/item/clay_dust.json +++ b/src/main/resources/assets/nnow/models/item/clay_dust.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/clay_dust" + "layer0": "nnow:items/dusts/clay_dust" } } diff --git a/src/main/resources/assets/nnow/models/item/coal_berry.json b/src/main/resources/assets/nnow/models/item/coal_berry.json index b38f8f9..d5606df 100644 --- a/src/main/resources/assets/nnow/models/item/coal_berry.json +++ b/src/main/resources/assets/nnow/models/item/coal_berry.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/coal_berry" + "layer0": "nnow:items/berrys/coal_berry" } } diff --git a/src/main/resources/assets/nnow/models/item/coal_nugget.json b/src/main/resources/assets/nnow/models/item/coal_nugget.json index daa9761..2199c41 100644 --- a/src/main/resources/assets/nnow/models/item/coal_nugget.json +++ b/src/main/resources/assets/nnow/models/item/coal_nugget.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/coal_nugget" + "layer0": "nnow:items/nuggets/coal_nugget" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/copper_berry.json b/src/main/resources/assets/nnow/models/item/copper_berry.json new file mode 100644 index 0000000..86cc77c --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/copper_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/copper_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/copper_block.json b/src/main/resources/assets/nnow/models/item/copper_block.json new file mode 100644 index 0000000..e37be27 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/copper_block.json @@ -0,0 +1,3 @@ +{ + "parent": "nnow:block/copper_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/copper_ingot.json b/src/main/resources/assets/nnow/models/item/copper_ingot.json new file mode 100644 index 0000000..a3a3d6c --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/copper_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/ingots/copper_ingot" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/copper_nugget.json b/src/main/resources/assets/nnow/models/item/copper_nugget.json new file mode 100644 index 0000000..83f4a2e --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/copper_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/nuggets/copper_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/diamond_berry.json b/src/main/resources/assets/nnow/models/item/diamond_berry.json index c220a3b..29919d6 100644 --- a/src/main/resources/assets/nnow/models/item/diamond_berry.json +++ b/src/main/resources/assets/nnow/models/item/diamond_berry.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/diamond_berry" + "layer0": "nnow:items/berrys/diamond_berry" } } diff --git a/src/main/resources/assets/nnow/models/item/diamond_hammer.json b/src/main/resources/assets/nnow/models/item/diamond_hammer.json index 5ace9c5..064e045 100644 --- a/src/main/resources/assets/nnow/models/item/diamond_hammer.json +++ b/src/main/resources/assets/nnow/models/item/diamond_hammer.json @@ -1,6 +1,6 @@ { "parent": "item/handheld", "textures": { - "layer0": "nnow:items/diamond_hammer" + "layer0": "nnow:items/hammers/diamond_hammer" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/diamond_nugget.json b/src/main/resources/assets/nnow/models/item/diamond_nugget.json index 0d08303..586818f 100644 --- a/src/main/resources/assets/nnow/models/item/diamond_nugget.json +++ b/src/main/resources/assets/nnow/models/item/diamond_nugget.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/diamond_nugget" + "layer0": "nnow:items/nuggets/diamond_nugget" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/diamond_spade.json b/src/main/resources/assets/nnow/models/item/diamond_spade.json index cc23a47..56b877b 100644 --- a/src/main/resources/assets/nnow/models/item/diamond_spade.json +++ b/src/main/resources/assets/nnow/models/item/diamond_spade.json @@ -1,6 +1,6 @@ { "parent": "item/handheld", "textures": { - "layer0": "nnow:items/diamond_spade" + "layer0": "nnow:items/spades/diamond_spade" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/dirt_berry.json b/src/main/resources/assets/nnow/models/item/dirt_berry.json new file mode 100644 index 0000000..db5737d --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/dirt_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/dirt_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/dirt_dust.json b/src/main/resources/assets/nnow/models/item/dirt_dust.json index e4bee0c..4621315 100644 --- a/src/main/resources/assets/nnow/models/item/dirt_dust.json +++ b/src/main/resources/assets/nnow/models/item/dirt_dust.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/dirt_dust" + "layer0": "nnow:items/dusts/dirt_dust" } } diff --git a/src/main/resources/assets/nnow/models/item/emerald_berry.json b/src/main/resources/assets/nnow/models/item/emerald_berry.json index dae94e0..67248b5 100644 --- a/src/main/resources/assets/nnow/models/item/emerald_berry.json +++ b/src/main/resources/assets/nnow/models/item/emerald_berry.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/emerald_berry" + "layer0": "nnow:items/berrys/emerald_berry" } } diff --git a/src/main/resources/assets/nnow/models/item/emerald_hammer.json b/src/main/resources/assets/nnow/models/item/emerald_hammer.json new file mode 100644 index 0000000..9c92b5a --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/emerald_hammer.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "nnow:items/hammers/emerald_hammer" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/emerald_nugget.json b/src/main/resources/assets/nnow/models/item/emerald_nugget.json index 6725fcb..5dcbea5 100644 --- a/src/main/resources/assets/nnow/models/item/emerald_nugget.json +++ b/src/main/resources/assets/nnow/models/item/emerald_nugget.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/emerald_nugget" + "layer0": "nnow:items/nuggets/emerald_nugget" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/emerald_spade.json b/src/main/resources/assets/nnow/models/item/emerald_spade.json new file mode 100644 index 0000000..42c8500 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/emerald_spade.json @@ -0,0 +1,6 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "nnow:items/spades/emerald_spade" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/end_trader.json b/src/main/resources/assets/nnow/models/item/end_trader.json new file mode 100644 index 0000000..9a6bef7 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/end_trader.json @@ -0,0 +1,3 @@ +{ + "parent": "nnow:block/end_trader" +} diff --git a/src/main/resources/assets/nnow/models/item/ender_bag.json b/src/main/resources/assets/nnow/models/item/ender_bag.json new file mode 100644 index 0000000..94d1d88 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/ender_bag.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/ender_bag" + } +} diff --git a/src/main/resources/assets/nnow/models/item/fire_berry.json b/src/main/resources/assets/nnow/models/item/fire_berry.json index b97e266..159657c 100644 --- a/src/main/resources/assets/nnow/models/item/fire_berry.json +++ b/src/main/resources/assets/nnow/models/item/fire_berry.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/fire_berry" + "layer0": "nnow:items/berrys/fire_berry" } } diff --git a/src/main/resources/assets/nnow/models/item/fire_nugget.json b/src/main/resources/assets/nnow/models/item/fire_nugget.json index 3e79d3d..f62b5ed 100644 --- a/src/main/resources/assets/nnow/models/item/fire_nugget.json +++ b/src/main/resources/assets/nnow/models/item/fire_nugget.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/fire_nugget" + "layer0": "nnow:items/nuggets/fire_nugget" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/gold_berry.json b/src/main/resources/assets/nnow/models/item/gold_berry.json index af8258f..82c8b40 100644 --- a/src/main/resources/assets/nnow/models/item/gold_berry.json +++ b/src/main/resources/assets/nnow/models/item/gold_berry.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/gold_berry" + "layer0": "nnow:items/berrys/gold_berry" } } diff --git a/src/main/resources/assets/nnow/models/item/golden_hammer.json b/src/main/resources/assets/nnow/models/item/golden_hammer.json index 20e6cbf..715de0e 100644 --- a/src/main/resources/assets/nnow/models/item/golden_hammer.json +++ b/src/main/resources/assets/nnow/models/item/golden_hammer.json @@ -1,6 +1,6 @@ { "parent": "item/handheld", "textures": { - "layer0": "nnow:items/golden_hammer" + "layer0": "nnow:items/hammers/golden_hammer" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/golden_spade.json b/src/main/resources/assets/nnow/models/item/golden_spade.json index a9bc6e4..0905d67 100644 --- a/src/main/resources/assets/nnow/models/item/golden_spade.json +++ b/src/main/resources/assets/nnow/models/item/golden_spade.json @@ -1,6 +1,6 @@ { "parent": "item/handheld", "textures": { - "layer0": "nnow:items/golden_spade" + "layer0": "nnow:items/spades/golden_spade" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/gravel_berry.json b/src/main/resources/assets/nnow/models/item/gravel_berry.json new file mode 100644 index 0000000..d32da75 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/gravel_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/gravel_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/gravel_dust.json b/src/main/resources/assets/nnow/models/item/gravel_dust.json index 28665c2..a49378c 100644 --- a/src/main/resources/assets/nnow/models/item/gravel_dust.json +++ b/src/main/resources/assets/nnow/models/item/gravel_dust.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/gravel_dust" + "layer0": "nnow:items/dusts/gravel_dust" } } diff --git a/src/main/resources/assets/nnow/models/item/ice_berry.json b/src/main/resources/assets/nnow/models/item/ice_berry.json index 6ba86b7..d042d01 100644 --- a/src/main/resources/assets/nnow/models/item/ice_berry.json +++ b/src/main/resources/assets/nnow/models/item/ice_berry.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/ice_berry" + "layer0": "nnow:items/berrys/ice_berry" } } diff --git a/src/main/resources/assets/nnow/models/item/ice_nugget.json b/src/main/resources/assets/nnow/models/item/ice_nugget.json index 93c33b7..888a23e 100644 --- a/src/main/resources/assets/nnow/models/item/ice_nugget.json +++ b/src/main/resources/assets/nnow/models/item/ice_nugget.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/ice_nugget" + "layer0": "nnow:items/nuggets/ice_nugget" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/ingot_furnace.json b/src/main/resources/assets/nnow/models/item/ingot_furnace.json new file mode 100644 index 0000000..2b59a00 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/ingot_furnace.json @@ -0,0 +1,55 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "nnow:blocks/ingot_furnace/ingot_furnace_front", + "1": "nnow:blocks/ingot_furnace/ingot_furnace_side", + "2": "nnow:blocks/ingot_furnace/ingot_furnace_top", + "3": "nnow:blocks/ingot_furnace/ingot_furnace_bottom", + "particle": "nnow:blocks/ingot_furnace/ingot_furnace_front" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 16, 16], "texture": "#0"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "south": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#1"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "down": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#3"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/iridium_berry.json b/src/main/resources/assets/nnow/models/item/iridium_berry.json new file mode 100644 index 0000000..911d437 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/iridium_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/iridium_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/iridium_block.json b/src/main/resources/assets/nnow/models/item/iridium_block.json new file mode 100644 index 0000000..06a0e60 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/iridium_block.json @@ -0,0 +1,3 @@ +{ + "parent": "nnow:block/iridium_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/iridium_ingot.json b/src/main/resources/assets/nnow/models/item/iridium_ingot.json new file mode 100644 index 0000000..2ec3ccc --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/iridium_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/ingots/iridium_ingot" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/iridium_nugget.json b/src/main/resources/assets/nnow/models/item/iridium_nugget.json new file mode 100644 index 0000000..8598816 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/iridium_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/nuggets/iridium_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/iron_berry.json b/src/main/resources/assets/nnow/models/item/iron_berry.json index b3fcf67..017e188 100644 --- a/src/main/resources/assets/nnow/models/item/iron_berry.json +++ b/src/main/resources/assets/nnow/models/item/iron_berry.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/iron_berry" + "layer0": "nnow:items/berrys/iron_berry" } } diff --git a/src/main/resources/assets/nnow/models/item/iron_hammer.json b/src/main/resources/assets/nnow/models/item/iron_hammer.json index 7c71295..2cb1f5c 100644 --- a/src/main/resources/assets/nnow/models/item/iron_hammer.json +++ b/src/main/resources/assets/nnow/models/item/iron_hammer.json @@ -1,6 +1,6 @@ { "parent": "item/handheld", "textures": { - "layer0": "nnow:items/iron_hammer" + "layer0": "nnow:items/hammers/iron_hammer" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/iron_spade.json b/src/main/resources/assets/nnow/models/item/iron_spade.json index 87b0f0f..bd210c3 100644 --- a/src/main/resources/assets/nnow/models/item/iron_spade.json +++ b/src/main/resources/assets/nnow/models/item/iron_spade.json @@ -1,6 +1,6 @@ { "parent": "item/handheld", "textures": { - "layer0": "nnow:items/iron_spade" + "layer0": "nnow:items/spades/iron_spade" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/lapis_berry.json b/src/main/resources/assets/nnow/models/item/lapis_berry.json index aa14a18..3c4107f 100644 --- a/src/main/resources/assets/nnow/models/item/lapis_berry.json +++ b/src/main/resources/assets/nnow/models/item/lapis_berry.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/lapis_berry" + "layer0": "nnow:items/berrys/lapis_berry" } } diff --git a/src/main/resources/assets/nnow/models/item/lapis_nugget.json b/src/main/resources/assets/nnow/models/item/lapis_nugget.json index bdf5cd9..889165c 100644 --- a/src/main/resources/assets/nnow/models/item/lapis_nugget.json +++ b/src/main/resources/assets/nnow/models/item/lapis_nugget.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/lapis_nugget" + "layer0": "nnow:items/nuggets/lapis_nugget" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/lead_berry.json b/src/main/resources/assets/nnow/models/item/lead_berry.json new file mode 100644 index 0000000..3097d69 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/lead_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/lead_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/lead_block.json b/src/main/resources/assets/nnow/models/item/lead_block.json new file mode 100644 index 0000000..8c4ee63 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/lead_block.json @@ -0,0 +1,3 @@ +{ + "parent": "nnow:block/lead_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/lead_ingot.json b/src/main/resources/assets/nnow/models/item/lead_ingot.json new file mode 100644 index 0000000..b7bbc4e --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/lead_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/ingots/lead_ingot" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/lead_nugget.json b/src/main/resources/assets/nnow/models/item/lead_nugget.json new file mode 100644 index 0000000..2129d7f --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/lead_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/nuggets/lead_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/nether_trader.json b/src/main/resources/assets/nnow/models/item/nether_trader.json new file mode 100644 index 0000000..abe8ee6 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/nether_trader.json @@ -0,0 +1,3 @@ +{ + "parent": "nnow:block/nether_trader" +} diff --git a/src/main/resources/assets/nnow/models/item/nickel_berry.json b/src/main/resources/assets/nnow/models/item/nickel_berry.json new file mode 100644 index 0000000..b01686e --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/nickel_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/nickel_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/nickel_block.json b/src/main/resources/assets/nnow/models/item/nickel_block.json new file mode 100644 index 0000000..1220538 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/nickel_block.json @@ -0,0 +1,3 @@ +{ + "parent": "nnow:block/nickel_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/nickel_ingot.json b/src/main/resources/assets/nnow/models/item/nickel_ingot.json new file mode 100644 index 0000000..c3b23eb --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/nickel_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/ingots/nickel_ingot" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/nickel_nugget.json b/src/main/resources/assets/nnow/models/item/nickel_nugget.json new file mode 100644 index 0000000..ae61ccf --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/nickel_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/nuggets/nickel_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/osmium_berry.json b/src/main/resources/assets/nnow/models/item/osmium_berry.json new file mode 100644 index 0000000..3dd9855 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/osmium_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/osmium_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/osmium_block.json b/src/main/resources/assets/nnow/models/item/osmium_block.json new file mode 100644 index 0000000..9625b12 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/osmium_block.json @@ -0,0 +1,3 @@ +{ + "parent": "nnow:block/osmium_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/osmium_ingot.json b/src/main/resources/assets/nnow/models/item/osmium_ingot.json new file mode 100644 index 0000000..6be9122 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/osmium_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/ingots/osmium_ingot" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/osmium_nugget.json b/src/main/resources/assets/nnow/models/item/osmium_nugget.json new file mode 100644 index 0000000..2f56a8c --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/osmium_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/nuggets/osmium_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/path_stairs.json b/src/main/resources/assets/nnow/models/item/path_stairs.json deleted file mode 100644 index 9c54ead..0000000 --- a/src/main/resources/assets/nnow/models/item/path_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "nnow:block/path_stairs" -} diff --git a/src/main/resources/assets/nnow/models/item/platinum_berry.json b/src/main/resources/assets/nnow/models/item/platinum_berry.json new file mode 100644 index 0000000..d608a8e --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/platinum_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/platinum_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/platinum_block.json b/src/main/resources/assets/nnow/models/item/platinum_block.json new file mode 100644 index 0000000..16a6c35 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/platinum_block.json @@ -0,0 +1,3 @@ +{ + "parent": "nnow:block/platinum_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/platinum_ingot.json b/src/main/resources/assets/nnow/models/item/platinum_ingot.json new file mode 100644 index 0000000..17ccd94 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/platinum_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/ingots/platinum_ingot" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/platinum_nugget.json b/src/main/resources/assets/nnow/models/item/platinum_nugget.json new file mode 100644 index 0000000..4097c10 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/platinum_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/nuggets/platinum_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/quartz_berry.json b/src/main/resources/assets/nnow/models/item/quartz_berry.json index 402fbfa..f922a19 100644 --- a/src/main/resources/assets/nnow/models/item/quartz_berry.json +++ b/src/main/resources/assets/nnow/models/item/quartz_berry.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/quartz_berry" + "layer0": "nnow:items/berrys/quartz_berry" } } diff --git a/src/main/resources/assets/nnow/models/item/quartz_nugget.json b/src/main/resources/assets/nnow/models/item/quartz_nugget.json index e5b8882..b7e4355 100644 --- a/src/main/resources/assets/nnow/models/item/quartz_nugget.json +++ b/src/main/resources/assets/nnow/models/item/quartz_nugget.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/quartz_nugget" + "layer0": "nnow:items/nuggets/quartz_nugget" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/redstone_berry.json b/src/main/resources/assets/nnow/models/item/redstone_berry.json index 5d88759..687d6e9 100644 --- a/src/main/resources/assets/nnow/models/item/redstone_berry.json +++ b/src/main/resources/assets/nnow/models/item/redstone_berry.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/redstone_berry" + "layer0": "nnow:items/berrys/redstone_berry" } } diff --git a/src/main/resources/assets/nnow/models/item/redstone_nugget.json b/src/main/resources/assets/nnow/models/item/redstone_nugget.json index 26f2381..835786e 100644 --- a/src/main/resources/assets/nnow/models/item/redstone_nugget.json +++ b/src/main/resources/assets/nnow/models/item/redstone_nugget.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/redstone_nugget" + "layer0": "nnow:items/nuggets/redstone_nugget" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/sand_berry.json b/src/main/resources/assets/nnow/models/item/sand_berry.json new file mode 100644 index 0000000..caa231b --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/sand_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/sand_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/sand_dust.json b/src/main/resources/assets/nnow/models/item/sand_dust.json index 7fdbb0b..4a6d5de 100644 --- a/src/main/resources/assets/nnow/models/item/sand_dust.json +++ b/src/main/resources/assets/nnow/models/item/sand_dust.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/sand_dust" + "layer0": "nnow:items/dusts/sand_dust" } } diff --git a/src/main/resources/assets/nnow/models/item/silver_berry.json b/src/main/resources/assets/nnow/models/item/silver_berry.json new file mode 100644 index 0000000..eb42412 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/silver_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/silver_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/silver_block.json b/src/main/resources/assets/nnow/models/item/silver_block.json new file mode 100644 index 0000000..f01eeda --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/silver_block.json @@ -0,0 +1,3 @@ +{ + "parent": "nnow:block/silver_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/silver_ingot.json b/src/main/resources/assets/nnow/models/item/silver_ingot.json new file mode 100644 index 0000000..63767cc --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/silver_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/ingots/silver_ingot" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/silver_nugget.json b/src/main/resources/assets/nnow/models/item/silver_nugget.json new file mode 100644 index 0000000..ab0a9d1 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/silver_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/nuggets/silver_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/stone_berry.json b/src/main/resources/assets/nnow/models/item/stone_berry.json new file mode 100644 index 0000000..0c23812 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/stone_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/stone_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/stone_dust.json b/src/main/resources/assets/nnow/models/item/stone_dust.json index f059d6a..eeaf1c4 100644 --- a/src/main/resources/assets/nnow/models/item/stone_dust.json +++ b/src/main/resources/assets/nnow/models/item/stone_dust.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/stone_dust" + "layer0": "nnow:items/dusts/stone_dust" } } diff --git a/src/main/resources/assets/nnow/models/item/stone_hammer.json b/src/main/resources/assets/nnow/models/item/stone_hammer.json index 69fadf8..0ba87d0 100644 --- a/src/main/resources/assets/nnow/models/item/stone_hammer.json +++ b/src/main/resources/assets/nnow/models/item/stone_hammer.json @@ -1,6 +1,6 @@ { "parent": "item/handheld", "textures": { - "layer0": "nnow:items/stone_hammer" + "layer0": "nnow:items/hammers/stone_hammer" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/stone_spade.json b/src/main/resources/assets/nnow/models/item/stone_spade.json index e20f445..04dc188 100644 --- a/src/main/resources/assets/nnow/models/item/stone_spade.json +++ b/src/main/resources/assets/nnow/models/item/stone_spade.json @@ -1,6 +1,6 @@ { "parent": "item/handheld", "textures": { - "layer0": "nnow:items/stone_spade" + "layer0": "nnow:items/spades/stone_spade" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/test_berry.json b/src/main/resources/assets/nnow/models/item/test_berry.json new file mode 100644 index 0000000..e4febd4 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/test_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/clay_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/tin_berry.json b/src/main/resources/assets/nnow/models/item/tin_berry.json new file mode 100644 index 0000000..0b358e3 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/tin_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/tin_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/tin_block.json b/src/main/resources/assets/nnow/models/item/tin_block.json new file mode 100644 index 0000000..df384d7 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/tin_block.json @@ -0,0 +1,3 @@ +{ + "parent": "nnow:block/tin_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/tin_ingot.json b/src/main/resources/assets/nnow/models/item/tin_ingot.json new file mode 100644 index 0000000..9a99bdd --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/tin_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/ingots/tin_ingot" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/tin_nugget.json b/src/main/resources/assets/nnow/models/item/tin_nugget.json new file mode 100644 index 0000000..5bdba91 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/tin_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/nuggets/tin_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/uranium_berry.json b/src/main/resources/assets/nnow/models/item/uranium_berry.json new file mode 100644 index 0000000..f63d164 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/uranium_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/uranium_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/uranium_block.json b/src/main/resources/assets/nnow/models/item/uranium_block.json new file mode 100644 index 0000000..93ef727 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/uranium_block.json @@ -0,0 +1,3 @@ +{ + "parent": "nnow:block/uranium_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/uranium_ingot.json b/src/main/resources/assets/nnow/models/item/uranium_ingot.json new file mode 100644 index 0000000..e9286b1 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/uranium_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/ingots/uranium_ingot" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/uranium_nugget.json b/src/main/resources/assets/nnow/models/item/uranium_nugget.json new file mode 100644 index 0000000..b8dbe36 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/uranium_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/nuggets/uranium_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/weetabix.json b/src/main/resources/assets/nnow/models/item/weetabix.json index ed68e87..e1e5336 100644 --- a/src/main/resources/assets/nnow/models/item/weetabix.json +++ b/src/main/resources/assets/nnow/models/item/weetabix.json @@ -1,7 +1,7 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/weetabix" + "layer0": "nnow:items/food/weetabix" } } diff --git a/src/main/resources/assets/nnow/models/item/wooden_berry.json b/src/main/resources/assets/nnow/models/item/wooden_berry.json index dcb0ab0..8d5ea67 100644 --- a/src/main/resources/assets/nnow/models/item/wooden_berry.json +++ b/src/main/resources/assets/nnow/models/item/wooden_berry.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/wooden_berry" + "layer0": "nnow:items/berrys/wooden_berry" } } diff --git a/src/main/resources/assets/nnow/models/item/wooden_nugget.json b/src/main/resources/assets/nnow/models/item/wooden_nugget.json index 750c13f..549a634 100644 --- a/src/main/resources/assets/nnow/models/item/wooden_nugget.json +++ b/src/main/resources/assets/nnow/models/item/wooden_nugget.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/wooden_nugget" + "layer0": "nnow:items/nuggets/wooden_nugget" } } \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/xp_berry.json b/src/main/resources/assets/nnow/models/item/xp_berry.json index addb3a6..a68f32a 100644 --- a/src/main/resources/assets/nnow/models/item/xp_berry.json +++ b/src/main/resources/assets/nnow/models/item/xp_berry.json @@ -1,6 +1,6 @@ { "parent": "item/generated", "textures": { - "layer0": "nnow:items/xp_berry" + "layer0": "nnow:items/berrys/xp_berry" } } diff --git a/src/main/resources/assets/nnow/models/item/zinc_berry.json b/src/main/resources/assets/nnow/models/item/zinc_berry.json new file mode 100644 index 0000000..4a84a7f --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/zinc_berry.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/berrys/zinc_berry" + } +} diff --git a/src/main/resources/assets/nnow/models/item/zinc_block.json b/src/main/resources/assets/nnow/models/item/zinc_block.json new file mode 100644 index 0000000..4367369 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/zinc_block.json @@ -0,0 +1,3 @@ +{ + "parent": "nnow:block/zinc_block" +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/zinc_ingot.json b/src/main/resources/assets/nnow/models/item/zinc_ingot.json new file mode 100644 index 0000000..d753f5f --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/zinc_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/ingots/zinc_ingot" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/models/item/zinc_nugget.json b/src/main/resources/assets/nnow/models/item/zinc_nugget.json new file mode 100644 index 0000000..87a2e66 --- /dev/null +++ b/src/main/resources/assets/nnow/models/item/zinc_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "nnow:items/nuggets/zinc_nugget" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/textures/blocks/book.png b/src/main/resources/assets/nnow/textures/blocks/book.png new file mode 100644 index 0000000000000000000000000000000000000000..2a858818c553b41c59c37c2f327d084cb0e32c00 GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9EFZXnDkGR4^uC@5Xx z8c`CQpH@svgbj9r_8mSkpeF*FEmbX=-`%1f|qp;!gue4nSb^?!X` QfI-3F>FVdQ&MBb@0K=h|?*IS* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/aluminum_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/aluminum_berry_bush_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..cb1c58a80a3b5f310bda64b8b60b8b16e0f3c4e1 GIT binary patch literal 3824 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 WF8u!5l^gjrcWUf#`6nY!eC0o$IroPE literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/berry_bush_stage0.png b/src/main/resources/assets/nnow/textures/blocks/bushes/berry_bush_stage0.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/berry_bush_stage0.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/berry_bush_stage0.png diff --git a/src/main/resources/assets/nnow/textures/blocks/berry_bush_stage1.png b/src/main/resources/assets/nnow/textures/blocks/bushes/berry_bush_stage1.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/berry_bush_stage1.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/berry_bush_stage1.png diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/bismuth_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/bismuth_berry_bush_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..40ad96b0cef08664d2593103807de8f2374d5780 GIT binary patch literal 3824 zcmcInYmgj89p4m33@L-Lj8&EtIu1ypv3I(AdU_s}4P16FxwEq2ayjKvMU5`@Bt;|2ec4HEm2XlC?8l_rIs)B10O_6J_yDbErp8z+1KsK zU9u%ITRV^LfB#?o`~SN8*69QLwrqam=2EG&WooiE1JA9+f73>|zxi+H1UxQjO&-ol zrAr?#{u}PxdFf>!d}lN}m(SJrdopR3MUeQa+-|l&x>VYAb-N|xQI%`Hnvdd&{@k~| zt7}nE(XX@WxZbL&g=q44stz4LFe{HAm2RM4y<6MW_CP^X8SFpvYe)?(V|7!RbO8mg({JOf!W zkZmm_d6F$8>!==duQC9st=9)O*7T*>9GJ-Ri6sc5myk83v)N-UWz487SxlvxSOPb% z=tq;~GioKDBMb-e!Qea!*BM*%tO`oCqjf}!o`Gn~tENiiNjjS(jXrj!`&rbg)dDN7 zw&S`e4wB{UZABQpF{&nVRnaM?7-5EpJ4>iXh)2zxn0Od>Me9irg~x_P9YoAo!aU3I zsJluOfE3ZC<;6*1-FDH5a+gol*KUeX=tL*Q6b}@ z8FJh1kFOfWY1;@}SfY>u1{@^?5}doH;{uE*A6b`hM5w4h0e2{pqRu-?q5)5hmP5p~YMzEQ=x{iE?e~*j%Ymb+OR5Z0g&Ho4$oyi}}c*lp!o> zz(N}<$^B7vIm~nj4me<2`3S~4NchBu7{kz}wr#3lWL-koHYD6af+!nVP$J-*%Mpf> z37Fv0G3BU!1vK;nCtyf9yeL5yK*3-R3t`BpH^g`Kcc|^kk4dPApBSli-**W15|3Ab;lF3TduNTZ58Of=4cJl z8jT*hYL^!j5W{(>yepO^VZJOR(zlulzi9xTH%7#(%R#_q*0j=H6m@ zI{Qp-EncujL?UcFJ=nTjU^7FolqQEI)^r(1fz5!VO#<6NAX3}pR0+ZgTo>Asm%EuM zVAM&&(AlEj1P7Mlb#PLGkHJ|>#ZbK|oTPp>_WWx~r41XVYU8ucPd;+$%UiyWx78jV zd+V0h|9QuuY3=RzZ=1aRu@ZZA=^}jbiTm%n;i7ln`?;y{qi6I_FCO^R2hTkH@fV-F z>D=ifAKv=WKO{Fl`GZ@YzVQ@#_Mw|ko_=Vv{@WvG$H!jy&F^-6C{~YtCV4G8vFor97j*sLH3xtH_4^*NFJE{M(l42ReCJK4e!UTuuDbHb7fzJsK7ZAi zf7kUt-gj%dUB7nI6W@GieDD*`eDUwkTwb~Ct4}@px<5Yn#ILSIli%6)qy1mg?>+l) zb`3eb)-eMZEx7x{=mO(e^Szkz574*m3#j5-pB5EQ}cU2 toO@vGpa1@3`lVldHa&OvmKQgCd(->B@oXLcwK$VbO&q8_xaWqG{{ayT-su1U literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/bismuth_berry_bush_stage3.png b/src/main/resources/assets/nnow/textures/blocks/bushes/bismuth_berry_bush_stage3.png new file mode 100644 index 0000000000000000000000000000000000000000..2e19a4cb8f32e1bcb2c7432d2a7dbbe6a5fb1141 GIT binary patch literal 3906 zcmcIndu$v>8NaAblelqZsVPY1k1iVmiNbhiW_M>F%H`p^v@y!L#xca^A$4|U)?RXV zd)-~z=YR-MkU%07TD71EHB}?ge=5|p0;vSlQi5`*&76?)R$?aqAj`yTU~@B8L!6XSOd4c<0bC=`aq4wWb2e>necz7c+JfAilQ{feYS|p45QM-aGjgp#+4joU_k>lf2;`lM)Nqyg5ZBNq&fSSs<)~r?QsoyN>EnFX- z^I=2RS|Zu8qJAJ(s7+TUv{IZX%^qP$5X;saZ-g+@^1Kgg6cg9Lu0c#hm~Ua9QmymR zL0ck2f3kc>M;E*m^|>r-_=d5#xHz(Cj>O5VK|IehFf}MeAc4}Qdd8cmo^J0VlvOH{ zsF6i+UCR-95YJ~t9V~6TP;2yH>uD!U5HO?38wMG{xl1iUDSC2^`J~!XE`_10s;25$ z3bLdp+n9^9IGu~vf$mLTr2s-(sq}QLX-lovQ;}u|7r>29K-QE_r1))CETdZG=#lqjCX$y6LyyWE-RMo}x3 za;|vV&ZALX#*68$+>Oo}Rpyy0>J(Fqu!V>>MW|1RPtDz!_!zfEE3u5irPZP?BIXpa zeB1Rc`zlc&vg8@RuCNq-7$-Fj+Yr_GtTGz)SzYUGu3w6)aRQ3LI&<~-SgACT#9>s0 ziFESLQElvCi4l)6L`O)=+)BkCtEU;S3pG|Q>fq~06iJ`Bo(z>IQ0PhfmZ? za5`sbb-q35F$^DrlksybbcATnv& z2)24==IR;9K`Y_vx_$sQB?YFYoeVX~XFE^TXz$vQ#sXvI+5|D`2FP+Ofw*NdWIArZ zu(X&6`5q%rP5{x)d+TBmmj~2zVAE|3M4%Q%t`Zz^#yr#YfJT({jm2FaD$0>$E=7Xp zSdw$3ApFW9DkPNjjU@udW+FhCFb9RU>G=7$AQhW5huz)wgq;1w#N|mpx9cR3D*?;+9hciNLN}&xlAGI zL0<4I%%G@-7PUPrEMdPLt9yPePh!V`HKwaVpp~Ui;JOmQTKHf`h3;y0ws_hmy>ac+ z0SX|I9g6bPvee=A5p_?G;aaPP`CPP*zQ`+pl6q%2S|b7WmulLui*pK+%r(kFTP%&k zY>_AGz$|2@ekzZ#p8Y9bxVH5Uc8D#wM6T;`B!WDBGmc@e7_&Xo0E$U$s*EHT}R3p(UPsT!BcACK+$+axjRto*Pag!>ERxx3< zmYxaP|54v{dDmat@OIw4`}@?&CGC`8{CBo!zn9y=yd&S9R?q6Ml^6PDA~dl+v_aQt zjJN~c4>L`~1@v0Xg7U*5lOpT}p_0_JsDiGcZB6{YHbyy(T47jqPw5W9S*fg~9%nL8d4QGtsy!Y2zyvt*6U3~oyr$4=I`w#uvh1Z_E>+zR=QMv8h zw`Z27KQO#eyWy>ehaUgek3YHRwfnN-rI&v7>W;G?|NXfKUjF-s?%uXMSoqvGm&+f$ zS6)1yog6szy|H2Uh6|th-Nxq!4&U_Hi!-GghyStbp$A{MPhKg|R~+*eeE*J}%X=-+KSWqkt_NH6ToW6W|$@~0Y ePh7fk)9z=or@w1{>U4g~9XmK){{HCQU-}PMX8xT3 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/clay_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/clay_berry_bush_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..e8f1e55d6dfee476ad93e1d822cd741261c06170 GIT binary patch literal 3824 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/copper_berry_bush_stage3.png b/src/main/resources/assets/nnow/textures/blocks/bushes/copper_berry_bush_stage3.png new file mode 100644 index 0000000000000000000000000000000000000000..143ab78d9273fa390225f0559bdca47ee252db1a GIT binary patch literal 3908 zcmcInYlvJ|9iOyTx{-z@3D`DhZzmz7*0cAVbI(2Z(M&d*nWWj;jq7H$8*FvYJ&)bX z&dibFQ_WnoQ8U}!mr&E0OygD_ zCrzu6D57LJuav>kt_zLUKx{MXg$V*?w?)e)W4LgsL#X6{uC<)jJIa-`bzL`fGtYpQ z3}{=6NuFej$tI!)+v^lSXs4zIIySVW(HN-6^1~;=jb1=Dq|RnfwX{8>vt&7y`tV6G zb9djHET7S<@f?C3$Op`MY&PL7cGfwi+wmr(#m<1V6;@L%@+6&2l6oII)BPw~)oOv2 zz}ojf+*HX*c30s>k4M);t}A7VDMpwf63h}B5)xA9ZcIXqyQEWzip{CDq&_0fEMXz_ zL*}m|1t2Sti|Z0A8JZ+*2snngAr`dVYA%$m!QqD0q@JXp7_4*Fu1{90(`jPjI&5S! z_a3q)4_7$}I7f7hbj+Qa3MZRcE}BwL)+%N2bu5lmXq3;Ti!lm}G>9lhkuMw<1&-9r zA)axB>hsqUxm*CV;P2+BN+ifwHIGtmA|qX-sFWy@Od;P;f^-m2X|$AnB>K`moW@Wl zM18H)!YTz4xv#tkJ3dmz_=s{Ap~w(|n2HQH%*aT4Wvf6&2x7n_QRHH!46b$-=L&?@ zm%EDr$MCU9@!Q)!ah?6u?To)~4gOuFutCh)mWsg0I~< zv3>_?&}z8)u1~*bNHB*Z$MYkO730!~ z{dQ5DKt#9hZ7PfSBBGAxA?#v_3}qPkS_&jM4;()L7*Rg7Ea3~IsX&VR6iHFYQbHgN z;nyC~hEOuJEE#z&ml48*d&syfK*Dt?B9iF9qrS(r9#)n^9nF>Wk>g5?M8E_fo<>L! zPF0|d)WQrairv-oAErfC4CFN8=(} zPW5noTt7TOxYg-lp^)9wmqiEAP{6v&@dgEOxKh*QUs=>pWUkQ`x@1{m@)eQli3O-k z!*m{dGy5}f^4ivW*dwkKP-gu=AQ?f(1s71w8Ru@`IKtt&@BMn~DRe3)be)jmey4hy z*7t%d7e#YH!?lMxq?T0}#(Gg+jT@ggLIq%`n6H(+uje>UvA@4P=UX`a;S z8ich(Dqw2WX;vwlG-+6()vCv`)1K^;P1PF)2Ozid#9D3io5oG)G+u**wOR%ySpP?T z*Tvm%W5Zjs=AA#MPA%z{1pB|MMfbhd4d#*Jcses{xKUjg7Kt##hA;+QXD||8z%_Rq zBxE2FXV88GR8oZf$Y@0!Mm0c!s z;PX43rMbUvdp7&)rCsgw_dN6Z#osnRlK=YUAK!Q73jf~w-}kleUipN1j{FxWO^GZ7Nkg*^A;ma@msq)G3Esr1kSm}3XYkR+N`=00aKC!gt&rg4I z`@1e3JagdOS#`q`kG$~5b9dhO`G4$u?!Lt%^wXu=*f+jDa_cX)?^Ji()cAJvMjMIo zU3%u&fI$DS7$yDUH#M_wuj>{j9*Rv^~*P(edE38$&df@!952b RFYdXMhmX~sJT(8g{{Re!`-K1i literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/diamond_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/diamond_berry_bush_stage2.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/diamond_berry_bush_stage2.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/diamond_berry_bush_stage2.png diff --git a/src/main/resources/assets/nnow/textures/blocks/diamond_berry_bush_stage3.png b/src/main/resources/assets/nnow/textures/blocks/bushes/diamond_berry_bush_stage3.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/diamond_berry_bush_stage3.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/diamond_berry_bush_stage3.png diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/dirt_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/dirt_berry_bush_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..a77de43ce7e3bab426c9dc77f9f7862cc6e874ec GIT binary patch literal 3824 zcmcInZEPGz8MaGkV@nBETN0@hx@?O`NyfV~J3BkO_?kF(PVF|A8pjX^f#~e)ti8(J z?PYgupOdIcq5NnC;vhOs})AGbI=?41Vd$f^;2MVex6I!EMsij_{pf~k; zaGwtwy4DoQjurIL+@Lm7p45tQqBMJ$A&IH2IqooK7Iob{8Zj|9Om1KcVdhcOBSdRo zI#^4B(3>h9XxoCPfHMCHL&ZthDi)U5J;eOsg{Wbs-<^!G?Y{- zlc=6WaZSrL3O}CD3Oab&3ZYu>s;#B%G(p0QhNv5O*vvy}3I?((SD#NRP2+(yR7F)) zElWWbcV+8yaTcd@@g}Of)9VaCYRl!WjSYRNR=XzBY-|C-XeVSt>2!Lju8b*_#`B3( zV+-Ksotvxns%-d&tU;U;VInRP*_Mzo1&KGPMgd&NYFEKa85xYEJSWG9PS zv6y4U)pi|;YC*i1-kpchUZYAPQw5!v#6%`V*qz42!`LI%ZWDW^*%B?sK@={n73Ij} z)0lg<;4J zJj$iM8w4`2u+v#zisgI`%zS;TMuS*_j#c;UP!LR9j+_8XBqR+H=hQ?Y_bu*I?%Kre zXnP=ufF?v`t=8PD05pcKD}3cJBrF#rX;Oi>!V0-mKy3>6UEmzi)GIR9h$Mp5$pxgwH#Zm^dAPAgEWJ!=GbJ^P?ecd1er-& zPO!BzN7v5)2d$>76Z$A@N(x9#+YGf|%(m|;(LEby+LWfLxQ!7b+(*=*kZx)*WI5bt zW-#LLHd=0Rfq}hS(o%3n@Jy;m^mo4sf%*7A}q0T9l{-^RIj>d=-UqQ9mFi(My^eL z#0jCulq8^`V=Bq~UUhM5acl+*`GN8gtmjDh*oPRy&>@avsi0?FLO2d2+(rT`2iX+- za&4C((}e~}1(V#8z4{f9&<}V(k>X4t;?e*L#$?b4LrQGdlvLX9)zzsv>ISCcz#5CI z5THO6@;MI>tcA;TRLIvNs)?-@P>pLN8VmsWj7K@bm)cl7td4h4sWtnKCuFN!WzO0v z(A&e&2Bg&+J+#y=&M6>;3~JRuPM%}f zaufOaoymlBfbe|k`km<4drz!sY&E+J>vWg*>3uu7a!%A{6&%qF{r$(oP19yH;6U{} zM1)a-TuA_SAuth@l5%^)csA^oAACGAt}Uo!4Z`Xo5pdE}Nm|guB(7?rUav&5*;0&! zTF^egbwRFWv9{WrH_cn1l4uPQ)>`Shp#2~1T_1Nnwfgr~%?H0vO)hCsg7M#M(Rwbm zl6fHCp5{5z+lUu>MIszLJvh2t=P-j!DJ=#q)^aHvjT{OjZDBYL0+BivBT8VJ*J-XT z{$CF>IgFZVSo3bt8G;v<{I>h11P|SJEmec+P2f%Hp>xkX+t=6MKT#T;=HLAKnNM#2 z<-Vb@lLL3%IQH=iH;hg`GI%o`ERXa4$98K!8QAgg3&%fv`;O%mXX&YnukBz@T*(%% zet+*Puj-FXW4B}6e|q1Ap_S+V`Od!|D;zuf=jUEpS^mtCGmoD>b?a{r z-q-)@rPpuYHS^}J2d$so@uvH(`{f@$esBj8_hx8F=E#>$^_A@~@9H w&Yisf@A$w+Phb4jrJcXH`uJP3=*rGFt}a}f{_@V_`8(;v*rC$-{SSWiKV(JSBme*a literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/dirt_berry_bush_stage3.png b/src/main/resources/assets/nnow/textures/blocks/bushes/dirt_berry_bush_stage3.png new file mode 100644 index 0000000000000000000000000000000000000000..10e47b1924ecde803165844a246979152d0d68a7 GIT binary patch literal 3908 zcmc&%du$v>8NVbX%7cbJA`n5Pn{8Bqn(@xg?#|9^b4e4Q6I;QlW1Gef5_ooI)?WGU z_PV=%s+2Yr&>$*Rpf(^tD*RC)fud50Qc;EW4-(2lyoAInf3*BTC0>kM zwUZMCanjxG&V2Lx9`l>;`{vxp$>TTd+`F?>D%~(NSQ&-?8;kGuZSZ^B)i(tE?Pv^6 zW~I{Z?-t)pkKeibJs|u_JU)?641XYyNv%()B-DM2wFXF+N(T=wHiVqjxe@B=xL!72 zd;SH}h*jAIMeQzV})n@0+T#>DW5(VwK+@cJl{w(A)_@3X1na(=)d*k%@HmhB*$1}+W=G1?y! zw52KvMk~kKy5OyB&g6L`u&jlJg}w!+FG;5@n{#eqViAHs0%c3}Tr8q`c6$e*qBEJs zjXX~3Mu8~8WG*k8U}?*RTB8eF&)Q*vfLV*8VcC7SaH%P%WLK^+msXp~m9%tK*K|G4 zK-TWcHfEAM$!3xbpu5v+6hLT)hr2q~wWU_;s>t$zd2pj0kaeZA@uh~gMs=3VrBV;f zgPFH?yvg!Wy%NtJmVDqGvI2Jb#TS5Lt;_Tvu4hAWG7jfNh9tVp>~``m||uH#g`{s!0lp!8&L4_)vfUNSZ`( z6(+LL<4295fqrUpN)hR^o8}G=2SfEN7j>zJDrFOV?Tcd-I5d*jB^)uIhR7E#L5#zb z6S=leB;}fl&iYCs=L%vL>sx13B@!@J%;QWjC-NDxeNUpuac#t0qLB)j?@_LZVzh&H zPZ~p-5Y^SFg;fd=DN}xk9fnjCF+`{vqA;>;gq%#hR9?s zBf!O#naQ;?kb_pj)p7j@Y)S@9&Dt62sF-d)RpUeJM;c3vHS=sl2@8?yyAlc4p~&%B zNU?IMjKo2!NKOFJ%6l7P*-V7Q@qL6n47)~LjF^@J2}-%cIM9gDp0NZIktPBu$_SF8 zz*0gW4dK_mts|S*J!8obSR+G(ZR(@Qb2$>8N02RT&3yul)w)+Khd7!l$&lkoj0ATD z;t>gvvMEtqM^cNZS1dOQJ)eX=qE6@`?g2X)Auhs_C^z!4mNe`Yi@6T7v7#tcIz+IZ zAraak#4Cz?;`@$PJ!1*s`>=T)61Mh{=Yn0_;}l^I#nu&6GDr4mmm*Q9m~xS3R3pM& zg}93;6xGNj9>>y^-kY&H=hx*5`#!93n2vx}u0|na3c*_VU|&aUH9MO;ZIRx(_UQlx zkjMt(;oVME*04ax*3p+m1<=ZD569~yz}`|#3wB{fLz1~hS!ju6Nt7>$ zR3Dj!%+yQeu{N?l6Z6-$-p9V}Nudy9Tp$@j$ORP`_KH%EJC1Ou?s&h}dg6@RPT)BK z!JSI=A6nlIuAC9|X$|e3WxfS}e2QrZ#09&Z;y4h*In)!E>X7(04uuDa|INFxZsq;o z`y-S3yiQj!tRYeXU8_#BvKggG%@B=7HI~itWX;!AyBX|~+{hDSrOJ~f6%$r# z>6&2t7xi72cfGX@|BroY=8{%Qu>L(;wB9SNU>+;Br`fXx>*WQ%MYmaWg3C|w*u8bZOZVQU z>u`EgxRw39Qh%vb+O%V+a%7zS@X^oSwR5w*XJGo4C+NLrwm&g8@yO#d`zCgs{pR)y zFa7{cJa@~7cAYpcUfpX>zx?T;%QtO#*JsXOdHsQ?tAPVH-GiL$Byol)&s*|zI62qCuVMa>e=uA g==eW=JMqG%j~t7l`_D|hQQUKf22NHk9GyD*FSaQ42><{9 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/emerald_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/emerald_berry_bush_stage2.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/emerald_berry_bush_stage2.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/emerald_berry_bush_stage2.png diff --git a/src/main/resources/assets/nnow/textures/blocks/emerald_berry_bush_stage3.png b/src/main/resources/assets/nnow/textures/blocks/bushes/emerald_berry_bush_stage3.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/emerald_berry_bush_stage3.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/emerald_berry_bush_stage3.png diff --git a/src/main/resources/assets/nnow/textures/blocks/fire_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/fire_berry_bush_stage2.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/fire_berry_bush_stage2.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/fire_berry_bush_stage2.png diff --git a/src/main/resources/assets/nnow/textures/blocks/fire_berry_bush_stage2.png.mcmeta b/src/main/resources/assets/nnow/textures/blocks/bushes/fire_berry_bush_stage2.png.mcmeta similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/fire_berry_bush_stage2.png.mcmeta rename to src/main/resources/assets/nnow/textures/blocks/bushes/fire_berry_bush_stage2.png.mcmeta diff --git a/src/main/resources/assets/nnow/textures/blocks/fire_berry_bush_stage3.png b/src/main/resources/assets/nnow/textures/blocks/bushes/fire_berry_bush_stage3.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/fire_berry_bush_stage3.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/fire_berry_bush_stage3.png diff --git a/src/main/resources/assets/nnow/textures/blocks/fire_berry_bush_stage3.png.mcmeta b/src/main/resources/assets/nnow/textures/blocks/bushes/fire_berry_bush_stage3.png.mcmeta similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/fire_berry_bush_stage3.png.mcmeta rename to src/main/resources/assets/nnow/textures/blocks/bushes/fire_berry_bush_stage3.png.mcmeta diff --git a/src/main/resources/assets/nnow/textures/blocks/gold_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/gold_berry_bush_stage2.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/gold_berry_bush_stage2.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/gold_berry_bush_stage2.png diff --git a/src/main/resources/assets/nnow/textures/blocks/gold_berry_bush_stage3.png b/src/main/resources/assets/nnow/textures/blocks/bushes/gold_berry_bush_stage3.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/gold_berry_bush_stage3.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/gold_berry_bush_stage3.png diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/gravel_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/gravel_berry_bush_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..6442ed7630fbb98c020b8189d3745c60fd29a7a2 GIT binary patch literal 3822 zcmc&%ZEPGz8Mf6AN~KgON&q!T-E2e^2y;6#yF2?4U);-`TVK=*mhGrEl@PNtv-Xm^ z+hccapHn^pN+lX1l|uWYKt)s$sE}F#1%VW*6jXjdrSkEE?+U8+M}vYQ!4K5_AiR5D zK2tk66%cFrZg1wD=lz)Heczb}XO7;zL!uQVn|E3$^^Y*`A;qdkL z*7RaJHg?PN`TzK%2X5H|!jDGt3)w>L9$&X*-7(6vYw^?U6auC>Z)IhsC^sJRnI=f#QR!jt;sA#I}V13*J%Tx&P#&D3uf^$xBN z@AUS%{M*gLs~2U}{i`Kmw)f&5XBEGu_umsHjvV zQ7en$rj{e}AYRFeI#}9uq0t(^Hq&01AYewDw+vFixl0{EDF$+_m89NLE`_1$s-c=$ z3bJG%+ggsZI9-mnfgVh6QUIZ?)do7Yw58D)s7SM^RdAyhkS(Rt`Sq4EW>p%mBtlKC zf|>jJ-lW;A+KA@}%RzjwIE%t<*5)&toKo#*8_|4bAlmZFiQ-wD%*S!P&z+fm6t!|W z=ZdH8zc*^icrATj?nZBos_;w|b&4rQ*h0jcC)6jzr{)1ne2lxIwOB^s`mm^rh&fMe zADBnzCQ%@=0*b*pb9lU3F3%)!7}a4S zoxS_8R-Gy{;xUG3fppBR)%5VarAki~wP5VdUB-LxB>e zWXg7I;q}*7VzH7FGhg4$Q5g%s*f39GX(=XLB;C+PUSLracsxYPlgfq1G6k63VWt1U zB!V)*>%*wIRT2bZzj%%Ljp<{}2=;>NTF$L*_~)R^L6|{TXKW^FtNKDEg2<#@BiQiF z;^rBsK^x)fyIz7#Nr9OTD*xbZF~HV}Y@9ZGsqe17tatK-_|TGaWZzunSCt ze8R|!6F_w9-nLl8NQ*%0xJL`fzl)#$kqFAxs7>*7PifqyvW}ZW1^SLLqfbMinPk&g&d4{!b4x zIgL7D7`j{Zhv34JzYcCn@MCb-QccL-1a49Xzp|*oE$m9QQkr*Pc;JiA?)Wj@b?TYx z-@9Y?#r<M{V`uJs+>{@*-s-~E3rz3|c9Rd?TqU;grU+44Bvd+|drUH2Td_wIb= z)gyX`$KIHG@vHW4Z!cZ9`tp89%3S)L3VOxU{F&T*P69zJ@uO>>>9*Gg!vZsDb+fc4$=}C z`qSl!jx6{p>5Ey`@C{>SWu>@c7UN{WAfD$Lm>QHKpg`$rJ>yMOPxp5@lvOH{sF6i+ zUCTN0AYRH!I%wK9q1NcJt*0F~fy0a@Zy2PAbCX(xQuOE=OG&jQTna-~RZZ2i6lh70 zwy_vzak?09!MZoSK>)b6Qt8RqRF_(%w`V$=qKB5-Ub0)z>3P-t5o;%j(-s(U&*A`a8X!p+ zm7WTP;$gqMtT3=08aRlVfsH&H(CJcYAuOo0LI*3sf_{0qmgy2K849Ed5Uh6*4|T5cZ(hTAT^j6#eQYX&6XXT1dG}A?jHYc@}0+ zR6~o}9u}6c-_5HVzm_MlozRUyF2QYdg;iC`^U*ioUo9-S?mwn1-PJvu-DB(mdC z9xbaKT%S~T^$@PLYM9SOJM=|f0hH7`!_g)Qu)kE(X1lVeAjw>%EVRkeILuafqK+&; zX6mQ%7+dL|^5v^*?_h`6f=lGO9!DYomvhD;hg*!S%*=YuQAlI^3TPyTi`c0}NT8D)7QhF+A z|3!J%#9e=F!~bKSTDhd15{!S(7VYnH+nE#j_OyCdf3v*MFA|}N^`Q;AMq|Vsk11xF zhzn03WIDDz9C-IQs3~_isBt zaQ0_AK7IFL^x?NZ^MhY4oxSkfEtkK1cIB^U-Whyg+uXqC-?#h1fzO@45J!{yK=AG_O1JVdFA5G*WLfOkxL)Da*WmQMlFUwbc9+yA9@7XW7gCD(Z=-`|CrXIa` zdFKreKl#>oe{<#3$PL>co4e;Mx&Gh-_q=&{?~|*C(wz@J68+@a554f`Uw`kP1HXTK X@eeP*^i`Z6awo@6l%F^{fA7Bl0OIs# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/ice_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/ice_berry_bush_stage2.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/ice_berry_bush_stage2.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/ice_berry_bush_stage2.png diff --git a/src/main/resources/assets/nnow/textures/blocks/ice_berry_bush_stage3.png b/src/main/resources/assets/nnow/textures/blocks/bushes/ice_berry_bush_stage3.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/ice_berry_bush_stage3.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/ice_berry_bush_stage3.png diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/iridium_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/iridium_berry_bush_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..28e090ac53e0d25fd58207164f014574e1620587 GIT binary patch literal 3824 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/lead_berry_bush_stage3.png b/src/main/resources/assets/nnow/textures/blocks/bushes/lead_berry_bush_stage3.png new file mode 100644 index 0000000000000000000000000000000000000000..73e92651304647b551477ae2ebe4d136b84de633 GIT binary patch literal 3904 zcmcInZEPGz8NL9nibD#8R8&MX+fAi@q;oqnJ3IS9E+xKmYm1(1IWBQZkup0oYp;BF zd)ZxoB;`ji1PK*Hl&FMf?D&N(d=Z(;rnStyJ+V0*VMhlp>W66^MjD1>U_o zpKWRdQin1`G?uD7dtE*?9c>VwB8rseT@=_~V|{l>oK005dg7shh4(aM75irK*p z;JFyKOrs-`&sWR?g+gPdK50~wR2xp2BT1NJxPF;%oB96T2F1j)uxAk)5gsrcP-^r( zCTL4l6in6b?dgKIiaD3(?ZC2@mX^v(b~#CBE#mvWg{eg;0tu8IYvp1YwX!{{2sNF_ zG;Zf{(lQD}5he?H#RN;cE;QSH*jCmH69mj!7Hx}^ap6)&P|3brdm(Lflq+fJhHmOs zo`Eds%eLo|Jjv#gEuj0;8x%lj>-D~lO>Jp5`zo@0bP?R>1!Pm{Z2DMRTT?nq7E-B4 z7s1RutKMY!lwOPH0LwwVzc`PhE!Gw@8=TV1@fM=ROkcDeR8uYTB%Mx@#wvFvSEFcD zs|8nlnqm;@MiMeB)*qhsquJw)tj z!UARk^EQYAk(J2BHHDQ7q9kn!*oL?%X0_FB&6-AkbAxKqNK#M?*4gXF$E(%JG>PH{ zOk`8{jTqyjRZe`)5iOIBx%GN5-pX>(l6t&WF~Qez9IGHCN=s&glSD9NM=U}i_8D?L ztbHC5&t?7fwL~ry#4Of#&!|cyV62%(g-rp+M%)c0(t^22$WS0gIi+4GsqgYtYaU2r zNE4#59<{Ja0V4O58)Dl-DvCTrISWx35rUWsBMvsoP`jp4Fe3mMFi8|=v0{R$oxz!c zp^b&^pwBUUEK>aT<_}+Eer@`}Rt$SVO{3seH~a@7%|Vz!S7&T8Ue=A7S`3lNx<-JD zYcq#8&Oi=Y3)iaa2Vhe&U~1OOP$Oct_tc2@ZysqZG1i_#5Qn%T<}!&O?i|^!7jmo^ zmyy_K70C%8x_NI)EaHif+OCVRgC&Y6!^qQ8Ai=qBdp^*J@`160Cn8M+Qrx3RiULas zfi#3)yF^EXl7X>g=sH}62ovt2$YDMbjzbZVMEfrFT(0$?ST?maSJFeaBQX*_6UdKf zh!o*e`8twXM1x|nD0EyJx`^AMgM0_r=~2oMmQ=CG#ai-kP%Mwx9>I#EQ0WlCdJl<^ zgb=SNa;fXuS`CaPgzLiQIYj`etbP#^6x-00M>K*;XVmqi88%Ipotn;z# zRPWOIUU21{Xw7P9_bl_>`$KGCDdQ314tSv*Mv(B}$V(kk;wT47Rk)cyn^xZU-XEE? z7InIgVQrBL=vsA}Rm><&nuch%8?o$^Cu^~#dd*;;zJ@!OWy?J z|ETYpyc?`-c;~5k@As*bOS&n+`tNMfeXn(cd2g{jot`z=EH4boL}+3IXoIfN7zx+s zn%g$CL%u|uLHQAoNfGwKNGobHs-bJ>T9f>*jZs0PP8inRQ&xxI@>4waZ(Z=xzqjcY zoZb{}WncdIg|C%L+lIz#2d2GOzJBIY!|x+IM`u6w_{#mSvoIF7es<;LxsylYJu5#N z+P)NBp8CVX)!%;TTjVER`0J6soPOkz_5C}7i+`gZe)P?|ez5zN=sSO(eejz{OV5d)ME@|R~WzyBq}ip+1{esJ$<7-+leI z6BpedUijUv*KQg@U;M(UPrr>nI(73SZ_N**r!GA_@&;b0NBdvC^x{8uT=(>$KR*7% S_|D>vJ3cy5``*ZrmHz-V8~Ee^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/nickel_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/nickel_berry_bush_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..297699145ef3fb8086f347f40716a0632af0fbab GIT binary patch literal 3826 zcmc&%ZEPGz8NRfrm_S1l(Sia}Hrp13Hgh{OJNqeLf^+A_7PT?9QEd3p&d$u*i|=li z-L-wm516?;obZ4 zncB&zfY{UR$ILs=`!UbF@61Vp8{oe0Z&x@x-jhr$ zW~I`uXN&)iGk5O#FbJQC<`?pXsk?meZ*@&TZsa;~)+^=9U`Dta5&hxek{ z(6zQmzEaW03WeIj)Qnb*Q>9sD8wtWJ&GE{_Hks!g)F>vdfn9@`h}b^EKBZds(m`7) zLw~k*S63H&RrKXNPkh5zUtce;o8>rNGKlAS2Brq32qaK;yqWVBYG$|g5NawDX_Vwq z+|&w09>lA8MF&eeE;N!pY%}YI2?A!ccw&$;E?jC0O3{}~R?~W0xfF(~tA=Xk8OV~p zY_c5Zakd<91Ksc5qyR!YHPzR#r7ev{UqzOWuYnugfNUw9%^y#cF{`q8H5F=n4a~f? z=S`N+s*QLKF&xDEgYzidW^B>3$tl%}wh=9Q`l5+nO%>1MbUu#jJ?_l(qNr7?1y?-n zz_F+)X9w(J7`FVTOn|PpD6bPt7|q@iFd*PQ@|`j}MBvh?w()`6kfL z*(3@?mOSUz6qdpd7BWV1() zXp`ern|QX3XqmLlotp9|n_14ALQU2xI`~?SBI&y_2q|_rl9DjQJ*JT71r7=s6M}?7 z1)1mX-LZ8~mXW65k0@=>Em zP5{x#d)s0Wmj~2zVAd=wP)HeuXbX=IJ1>si? zQ6ZsZXe<#pmMsE=i4Bajn1{G!QA7k$of!MYgSje+jfLux$!h%W` zI#>xi7#7QArc1E2f!iuTFy2KxAOZLoh7NTcQ^}#RICmTfxP>@T4zd{7`XW0-P`g5nL^ zTsV;M0_Fuh?>Addp}Ls9W%|_aRhM^YeK)vbnKzddY|#w;o%`cS8erjih&Z8*q+%2W zrX`SV1%VWyfLZ`0MGw=sq46ZCN1|O)jJ2lh zZs7VP*Ya4~D9+o)O{z2+V8Wo5z6siYQQtLrH(aUzf6P-mmvmBs@$cE9^Ihu%^R8lg z+WSm@tGqBQ6Jg`&!`9^*n;C+IFl{KYrpJKS4ud3Z!X^pYnPb{ial#5-7ijT+x|u0x z)DFYI*`n732bSWse^P>v{#i>kVfChPlKRWuUq4nV?YMrjHa73R@RbMl@4AkBpmurB z#QRRKK6mrTNquqb7rWikyPr9a&y~JbOG+OZX+CpvvQYo!%kpfr{=tba{3E(@_g^o( zb<6%Qf9Im}%8Rf5yj8h)@N;9zVTht zBTw9S{?uo8?0NISduq4sJn+*$mH(U{vd?qt^lj&MUwD1;Gb@jmzIlKC$ZI?9{npu= zPA#Ul@4Nl^Z=V|7f8gRBPmYg2_~YMQI`+oHFP*$Reg9K;9DCp~?af)ueChO;{&4Bs z^{2mn^oK9zho5`=O19^f(MO*D?hQ|$y5+vh4_)|P<)d@**$baq`|Us9`^0a4hW`Gc qPn;=zao^nUzyHQV=MJwtde5t`pZFDDv5ewWIypXF`@xZWPyP##wd0Ba literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/nickel_berry_bush_stage3.png b/src/main/resources/assets/nnow/textures/blocks/bushes/nickel_berry_bush_stage3.png new file mode 100644 index 0000000000000000000000000000000000000000..5dac6b15a246a3ac4865df1936d8a715ee996530 GIT binary patch literal 3909 zcmcIneQX>@6~Ck(YOOXzCV!N+BHL>cr7CkfJ3Bi&yW|=tz9crSgX9ucAt6;oRQU%{6p%m&2^yrfs6r|qRY)l!6p9eEMJ-=K{DDvj5`?$+ zWt-Z`snC<|Zg=L*?|sZ~-h1=N=AFEBl|JLGr-L>$${co29{9T`n z9nDImEzcF-O^@BVEl(^+PnGxHW$bDB0MO96Fj|dzGxJ;3avRr& z=VI6_8*Pz%p<3QoC^Tj!CXLZJ)rM1HNLth}T(4p=n|j{+41z6gVs2VCvY1b?Pl(a| zltEjnLVv1uu&WE+s^$4SPkhr{US6&&+m$$-GcC{aOiWBd5J;fxcrzC*)XZ-0A=Gpx z(uKB8V6BY8fo;xX?)Yu+6L+CJ30>5{YS5aN$y0P|3brvY6J}%9S*AT{m-29%u9M2GITKH3}fK6BB(M>)O(2^i^c}fhBOG8<2ISv+3iBHm7tJFQ!r- zSOPO|?|GBuQ+g$y11tye{^C3eH&|QDtZ_=Wq76ignZ9V^kEUAWaXKBx^&WR7dr>q- zM+>fa#_s!~riz!dI|?_tYjjQIx>_cfV1y~MylIR0mgN)sPHg!YcSI**6@|xFi*jVy z(-!q@%XjD+Q6RDsxwxXRl71Mc4FTH_HN>1YljdC6=x?q+8rS0#6oYm4>hbZ>(aAIp zqdH7vQ-}5&;|E5W7G2xFlvs^T#9%V;u-29Ho$;)Iovm zc_`#kD`ruu1?#P^#d5JAX0g6=MpY~UW5qlzLKR|aBdv)*gwqfSC2hn!hXytmPC$bm z+6U7J(uAn5MlGyTfXKLV18j4o!jL1vXn=yyvJh24$U+**K)Yq5V1^GcV3H`#Vzmse zwg+blhSnE5gC4{1F|FdaJAd>F^DEOIYDTaZq-+%2>V*FYq&WyP=xUEmMlD^RsYMW( ztYZWOY-Q%?+8M|}E8*(7z7IAf1Eyx(47Fd(b)V|dUF%00ON=#lEW`*85Ot}9&9fP@ zT^=y3D3hVsV;0E?AUb((LoADnfY`2!u!AKE3B`zO36x;Wv$+Q}B5YtR!9`eXzG9pp zDGDql1kwl3|xoF0AY){D0HX?EOiL7q@_KVaF=O4D3(oZ&6MQGb|gl^ zqXKy$36QcFQJxMZPEzSx3FR;P&z=c zo+A-h0mLf|UE;d7Rs&-R;kvMS4ic7jkwd{Q&+!<-9u!+DnB=w`)GkHBKygKp=1e2v zQH4B;85Gr!634@mO6RRuz4J>wgezxk9iOKG@YEU(L=oPdlVHFMm2f z0VJ}qs5mXhySzT4@9#6*XxA`b$j;H1MFr5R+#QbANq~c;nhxypyoMxmnX=Fk%i=I! z7OCDh2bpP*%42S1eO zBwUYaX4^4`09Ss)zr%?c4{xdWbwwde4Q^k6(Y&^TXTJ z_G=nn3Vz-~;=4z8d~x=kmw)uRy4pGW?%T52^9Rq~|My6%AFA^|jca!=Jo6C0W@OjU z9e=uIau#pj`C{t_FZ|-f6UXj-aqGk3zh3{o@n!t)vzMlyd*kAdcYgbmXC8dx^?y8e d>486+%SrOCbMHkzDK5I>2M*W1v48gDe*giH{o z?lkw#TxVuqF@m&+h87Zx5k!*~AAg9nq==L@wGW9<5Ykqq776|##s@`!W4tX+Zj*1}h)#!4w1=6L`zB`s%LLO1M=Bs)Xm-V;L zzo=_bP}c9YYq-{`sQGC8XsV`<9-fg$k4QJr@3>vtx9ov}rpkr3+-$^|w_MiSdOdhA znhjlRi{wYj`hmirHd~w2DoLs|dz2wbEL-F5C}F1Mx_dQ>iDO{LASNQrv#>|0*1dGF zmIk3WRlT!o3%<(we4e*F!&q8c8eK9+leBIS*L4j{4N4J6pll`1#WISsTYDO+DwAo{ z%A+LK3XQ@~7V@$Vo_0cLw)$%0teYlCn6WHc1{uXgNNvGD_T^d&X`^jCkcMigri$|n zWJzDPHJ{{3HlJ*wy5GId0Hn57>)Y7Smu9nXBFo1XA&hQ9Hk8h0R$9uKQdzQ)N;S3! zZr<99Cd;SPYCZ=T4&wd6c@%Ckw&+AYOp-Ku*qQ8QQL9u6 zthm~)d!sl=ma^SN7~L_dDsolUDW(`<3lVpQP>&FgntL$uFz$%fk{}9K)`~iam@~xk zY}>@cGFow6*ZPy|Rgy-Mf?@E^T-!cTsZ6Fx7&V|H zo4V_uHZfLV#AOW8QPOs|R`Vv}EElm<6V% zDX39D3_Ib%_-Y~-3SbuFJ2e_45_GJ(=lc$EeODo-n27>n1<0`-jC{s9Ce$XD@Aka; zR2l(Ih{js2g;xP+3|&|FiZdik7hJ>Om7|D4t|g#01^ftvUm(K+HQVXjwI8s}W=->o~#I z_ROvC0S;PCS1-lE%pX*jV?n{-fFVCnK7#QM5k@)2@s5h3v(4ZYZ2APRtKoY)e#K_fIP;d0^uuNEKaM>_ED*|*BwvDPPxj0wN;>Z zo1+a#YcP7~s9l;@Knz!*@{U-Rg!z(4)qy&&$sntRv6=swSiHLTHV+uoDo4D?F-$q| zWATQWkQ@llw_Lv${d(^ytS+W!n;vDo)#ZQmzMEV*FXFm_Et;Xfhj{GJ@|j7HZH6JD ztSD0pxEm8L80AE8!Z(U%!`1Trk4Gl)qDt2wtR+$bJ57~lWj#!jrY2ggMkL!yim@06 z-3?qH4a-7`4-|=4{bxf&)wO+CM45NB^v)VyNB}PErV8e!f&18lI>gm~npk#Zym@{1|Vq z{$TiHBRBtX*Yu?J@$YOOf9$1_^`ZThM=lKKd-uP5{p7i!J+Hm~vzcO+Yh|(=+=X;|Lq&`@BZ@O^Jf=!*l&LGiOGo+B$S);f+r|@#(o|zV!Lw zkw2f%KX}{lrTvo^o-7?d_Nt+8yKeja@h@BZ9^d)ext(L%E`GWG_m4jL!~05y#-F?A zozl5OwJjI+KKqpu+b$ojp56M@h0~Y5rN27&);oKSzVXn@pS$gq`%iy=;=Yr|cAxzE zLu32@v~+RkC$D^aHhk`u-~Q@~dptgS&*iB{9;iP0(m#J*|HVg6?WVu^{jT%TzpuOW xhhOhF_Sknn@r4&peDAHh|1o{>ar;f_&*%h-@5<+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/osmium_berry_bush_stage3.png b/src/main/resources/assets/nnow/textures/blocks/bushes/osmium_berry_bush_stage3.png new file mode 100644 index 0000000000000000000000000000000000000000..2a5f85ab870e6e99cb664345b076f9b443023935 GIT binary patch literal 3910 zcmcIndyE}b8NU^4q)OAkYOwu-VW0(qXXl(VGiM&@rMunRc30WDY**QmD0}8ScE`Q< z&ShqH_wH8IfK9-J!~~j1hzSU8Oe6-Q)<3`)6Hpr-qEy9%_#lF)LH{tOVuJOX``WGS zwl^q~+_^L7eCPK)&hLERH+N4QK6J^po!d&K(j{Y~l}Y&DQT*Qf9=Koe_p==SE^dq- z%}S;1PZqx|C$8VV3xt0kPfh33<2QyPsSR?OL~5{EYk+jAw0B>#!Nt7FjY!SL^|JZ5 z$A4fNu`HW6yW@DgF{0+;(UnvkSvfo!=nMv_z+?jS>gIIiIZgM`^m5PaC6nD`d4ZWaVH-7rd3txjb)#mbJ9BG`M6BCh4q2f*`OkwJ1d(fwJX#&YP&7UDZXXs7$1B zBaf51Q6TatS;)&KSlV`>*66|3vrd>GU{;eiEHa1-ms)~S^yC@~X|<(X3QJX0P1W-Z zWJyo9F_+{?HkWJy-J3o~0fcsZyr*MBTWYnQiYz~{2yS!&vY~V~wcJqFq{@?agsrCQI3Mg&UnUs={+sHYuhUVF!_5iqMddklNQ{5@OsI9ZzJem)DE>h}cua z30*g|-E%~N$dc#$g2GaSI!S9Bwjr+ZS!Ffqv!>D8+;AkRCMhTe>+JR8VbgLv)a|%pD&O$Ld+m>q3oH$|m?a7{@XUZ0`9H$Z_Ri6e&j{?zi2#f>^SBU<@F+rp3WB)nC=>|lA|(UcjXb6`Rb8}? zr7@%lUR{q`SS10G`O=H9?IWqRk0^5@6lp?`BO}eUqeY}V(|%j5bujXk;D|F8*nR*sqO5N$?sKguN0Rvz30`1H z&XI!fD~~8mDCrwZM4rn;gfL+q(ykK#rCf@DmMZY5?=hwN#R5JnCWVh|S75{ghoeB# z2uZ@I43rj%>wd8u9l0KjJjCqCMS%r&FV(bRm*x~Cne&u|wpfIlop5J;8d&Cu7BHs@<5>b)98ON|!jJbhrbDKfJ-N$3{lJ#bge4Q%BD_}n!y{5YAjmi$y%(-PBYjexsfNvTA|-GZc?T3Iwq{w(lf#M zKkB<6@A_*S-padoexF*oq@5D1|IQZe_ewjM2aD}#^{nAWd7)n>LK7Q88+4(@$P1Wa zwvD(51Y!=99}bxmVL#GJQrn>lx`wtj$^Y6I6*OvvVcmC1cL+XyipSnp7rgYo+f*G+ zZwg;!uMaIxmr7gSH&z**^6y!=x4eCLc;NVN_uRMh17DeZXva;X1D8e@eel6=mF_th zZ4Gx#ytw7~*Is*+|KZrFGcPUw^zl<;`mfIfXOh)xZ>c`K{yZ7{>_3a;i z`pZKDpMU?0$A0UH0zhhL%o$;|}?*)#ER`_UM%t-Sw}5r$6%bL-h92hfY6m|HYS|x^zHZ zv9L>{gW?MX+Z@%)B@d*C+$+J^WzWT;9yT9|<)z7{9%0Ew> dz5OrN&sS>cEiat-Lh+?LcHnU3oBL<(_zw}q1e^c> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/platinum_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/platinum_berry_bush_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..7df0c4dacb0df89f71ad0ebaa69233f882edab65 GIT binary patch literal 3822 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 XoP6jXzkMtJ#vMC&xboD22Os(m^@abS literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/stone_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/stone_berry_bush_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..7f94c3b4730892940e340c784d5b43da91bdb327 GIT binary patch literal 4020 zcmc&%U2Ggj9lxkFl+r})L#q-BU0qO=)EV#0?Ck8$Dwj0zIgLXvwQRSs3q+lrnYCBB zyS?nL?Q>`)+Ny{~id3lj&<9kh75xCw7gQel0To2>03xCSgb;Z`qH0wMsWhSxRQT_G z*`aoPDn;z+?q+BH^Z%OP|6?AVJa)&nYj<2*DwVcP9H~yh|MkW9nyv7A>tFvR;qOze zBXe1)wEbN1-SWi9_Rqq=#51$`Z0*iKC5=(3lhBN|8!ezNmG&KIx1>60aw|0RakEnX z%PT)FTd}T`kGnNoYmJ$O_{izhOrJhBqfVbxLYEKhxAwIIV9+qRwAzh&GYi_4a))mK z<6_z_TOE@8WTkwt5NOTTCatj~HI_Tdks{2sJTXeR!-UvtQA~Ur`!;b9;Q_+|rB?4L zgS1pf!Bq8dPZqpY$_shk3T%6Md3ki%8BNl8n+PFnOl?XLP@rt3naeh6W;^>FswPuu z+{)vmX%!r0m@MX%GHBX0q0t(!ZDu_;fy3;!Y}sTK7bbNGwHna17Sno1xK_5Qn}%uT z8PJjeZEGRPlWZZ`fc0ScG6CS)T5TX>U0oWDfru<0Ujj3F4q2Bvn^|cYd&*?VVyeve z5~#VeZ%vj@nN@!du^q?)450xb0d+<&2{7)G))E~@D{D!8M4TDo z29yPaUq%W*)-soy5^EJiN!pNb3~@uw8@tt34ML)OIj7$<^rL`O+S-C8Y}XlA)=Dl<{7l)=`~IMxA;ga*|Ja*QJolZ+t2JQp!n zc*2zwGZXgrR}-~Z0JGTNjZvK_;IXP+sJPF$k|<)*N1kLJ5=1+Q3yG8BFa=&K3x* zFLoyd$MD#s`0cIFZL+?)e0MX3v!G?Gz*g7&(~#!C%^<5YHyO80eYP5dXR@vmVB+e^ z+~q5fgI3+uH~kOkGD54C5x8V>a=fd#?z=-mpc}ZVJhDxNlPmz)ZFD)f9 z;C|x~6A?;==A}Z<1>`{g`7yW6y&0y8M| zeGQ>Z;lZAX{I!VcV5?^zzQ7 zMUf*NS3|z$UN|_-wWr}D?9UKCU@UOGezpAH+oO`^l1bMftR+(kou)~%N;yiCh9z6A zdaODn#a?RaUIRA(xs@l@YH{AsZ`!2s8YHZhGEl+#80Bq>J4Y)lJnkT-LW6Wvlnf1_ zPPr!u<(ObctcSb*(>ZNw&v32FhvR77F70E*T_-noQ=I*u*{}Ov?SkWQ0k=-y9ITh; zhK(#}qyuQhHfhcXR?6YfGB|>9q&)^j$05+(LSgV6PK_k2IRAoM^4~URMObv)u;#AR zpMncmF&y0d;AL=kG)>4xDclUR*12E6t@7eT_27(u_L0ZQ_MhPE#=m;QO}kzuOZPoL z`N=PAy>07FUq5=w*LJ@CtJj}+_{4XPi`vL-bEiIc>CH<&e_`tAZ{JvMfBw0%7oPdb zojXpxS-QCR)F=Gc?1|C`7ru10_15qH_NPBAU6`r<^2U*pzh&p6(|gYSnQZyv`I{em z@9#f)^PB5#*KZxYb=N;`xaPoB&!4X? zotgOc@gwfYz2A6Ez5mU-_2VyD4}50#v)`Xxxc}7lS9g8uM(6DZllvDRd*}Q;U%qG_ zJ~6xH`bXZ~ah5#!ko?{=?@aEw_tgh?zxTE}qxOz``h)$?zW?McPrdukx#>$+efQ<` WMCFSs&lUITiSc9A7Z2U{(7yruq!q#d literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/stone_berry_bush_stage3.png b/src/main/resources/assets/nnow/textures/blocks/bushes/stone_berry_bush_stage3.png new file mode 100644 index 0000000000000000000000000000000000000000..2f78de330e7a196d23bc21f97421e559339ceb03 GIT binary patch literal 4102 zcmd52g_^YDFq=wZdw1@=Gjr#oc}bJ^HrWL?-Q8^HrhjPf+>hO1 z-+S{qGy9Q^NNJ(eVnmb_LIn#h_=i}mC>HvW8lwg&{!xmtsZbFAP%$Vil0RarXWrND z+THAJcSvDVZ$M9IQqGscf3*O4+Y@Rnm%UWDq99p!8l61x*K@eD&T9hJ?K-uX=&X-Ul8|-SR zs!XJDGmn#oQE22*GM|@Cu(a($z1dUS$U0$yfLTktX^|mZxYQDqq9@m!Piw8srLa^@ z)m012^(MV9kxd>uVvG(~7zr3dbcnRf9UBWr8(Gd9LXB3-CiprO$1>E^b$r)WNZElz1Uok3 zR68gVL4+lv(xp*%eKisD1u%>C?HrYf03EC5v4Ggj^CA>6jgiM3iMX;gq#|`Z$MrDP zva9WZGzOaBwY6Fct0ZV-zVsq&`$%f-Bg!1ms0l%ij5O1Z7LoEyqd-OoYQQ93#gIV$_ci1Xm#L*bLd8 zA2BQ)CNw`_732ge+Pt@^F5>fu+Mb87iv`lu!N^yFBhFZ0`vJg+vc7e3pKC=qlFX+_ z@Isg594QFD@`%!elD>6`$a9&95GKq++I0fNU6&#vhzdOFdrYZ*b=lNbObQ>_uE2-~ z4o88e5t0B+87M6j*Zt~pbmV$8@({Bl7X>b$)2GxySWxL`4=cfP|o{Kn99&#P9D{upbZ~(>D;Y|3p=+`bubtHZ1AmuZK zXaJcUIG8~uYlpf47LIT~sH>a5P9U-8!5Z6F8erup6#2eHuogbpQ`%pP&K6GFpto+G z9k2lq*+^Vu%jpiTPpC(F2sc_aEaak{`l6@+3Mi*N9B)8?{ZUPO{oYqK94+A1>cPW}c&^{ff~Gu#wr-0?k9z@A%!X!B z1OhP!$|;A+09hDmC8_OD1zk|vn&iK2^oq1-g<;LTt2+djx#F>Ri-ecnJybP-jZ(N} zj@(*Xfg9?L(dywT|Lpv??%R10@2X~>-1GU@C&piR_Q~;qy#waJo~K6cdUWvq2Yz<$ z>=#$=_`$oU;=O0CoqzAmlRt@mb!Go|4qbU|`Fic0t1n;t%UcH@-&flG!|OGD{kc2; z{-+zi|M9iv`Iqd`;hed7$*=Z(OcUJbwF|m-4f>y>emkiC1_3ZsppiS9amM zzkPIO$L{;z_}=uyMdzD;-gf!ntFIk-b>!)1jT`&+O+5d|OHVgP_HX-``1R2zS*dI^+;fy712HKYf4O_S?!2{qx-H?&79CI()qP+>wVL F`!^*wHe~<+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/tin_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/tin_berry_bush_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..3c1b1fd0717bbd48099bad43e5d896ebcf66c8f0 GIT binary patch literal 3822 zcmcIneTZCF72jx;8c1xR^$!Eh^R=OA>fLwmefQn>!A_TCXOmrV(q(sRcBN?VyZ64` zM`q?t-+Q||8^tU!LJ|VD#Nr30EwxgLZJ;z2rAUM1kD_9WA4P?Ne<&hWBUqGLN<44A zcGm7DL$x!^%$s}9{hg2dJLlYcdg}0@9os*?eQ0QC$K*tL8h&poJ~w_CzIXrQs(_!5 zG$!V=p`o3Zi_f-4?%ufzgdd4#=kmGArvsVPhJ{K(J>0A{Kze9sWVG23@~F;@P%p&w zl6mFDmrNs8CG&_=!Ij3CUW_M>rF!Pr;aPd?sPvUNdXF*E3;>{}b73@V)p`~*OJ)l< zfahY^GL4oHATZB!?TgsKRbXC`M zJk2CwL`hl`unlodENH7yUoef{<_2R)HAz7+SZDW-PmYaErAZW5 zVIrG8bikM#ALGR59MNIYGPhC*ChJ))>QYaZOD6a_9LFlap~Nnu5`{AIkf)e~LM}WM zMuONp(hiBd?)q{fmkMGQ>)Sc15(yaV=J`=*Yo>hU6PKb$GmZR6D-;Q)9LZd++^CCo zZyH0H5Y>Lv!YT!bk?)I8yBrDICrDx@kf#ZNF#)+L;7!2&f*Aq8fJvgr#gYlGwg%@4 zhE|u_gFeUbvPkjWnV-MT{QC5L^%(YonnuB`cKBzY%t4qzS8Hr4ZtCh>Iflq&Z6kR9 z%>2d~s6p%D>bkxkHYEe5W}OOkKrD2gs_{LWM;c3vwdWATsTU&VGKmDUIkH_ZMLeV2MJ*LqMa7KM&WLl<#7bdc|`5P6g` zge6rhaN5oigE=(9h*8JKl1b;?SlygszQV2xYiv(PKn2L% z(DNX78HE>ib>#Iks>Q7~QLSq;8WceBnTQL9uXeaNqaWR(UjMAiLh(@Ct%T`OVmg}l> zfa{Um$P;6|Id2&^rPH{N3H@4nCK&%meb?pPV6Fb$S@ZtyQ>&J=OM>;^)uR2s+z#f! zVtZQW%wV&+Fenq@;2FTt6`94Qx$M#3g=9E3vZ+MH@ZTD&gMlK=HE zQ_!dthQ7N+cL**l#bfWL1b=#WEnSD~P2nbWVdwof!!7LUWO@Ir_tUSOdv3>%@h#=& zZ`iZr)<5r^nKJf0dCSDvOGD3GVrm=R_8~NWd3%2G;z8>d^9y(0@T7J8jpKiM`|DTC zlT&BkdF`p%$lPu2cg9Qn&b=S~o^j&!)!pSw$IriW$E(jiQ^`(0{@cHP?hn5|xwh-Z zGe5Z1c=*a&p)v-Z2)=RbJn z;X}{;EFXROg;D=>{n5|-ar(=jzr1$o?O!hZ>b7%t(J=km>+I?W>TkaCu`ize?x)sX l`fB{fegB^M`D4y+EcW1+8c$D*&J;J&$??PG3kM!J@gJSD;xzyO literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/tin_berry_bush_stage3.png b/src/main/resources/assets/nnow/textures/blocks/bushes/tin_berry_bush_stage3.png new file mode 100644 index 0000000000000000000000000000000000000000..a4b596cd3118655e724e590d7322e35719fffe61 GIT binary patch literal 3905 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 T8~CN-nmax^QG0RUV@Ll5|JVIu literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/wooden_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/wooden_berry_bush_stage2.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/wooden_berry_bush_stage2.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/wooden_berry_bush_stage2.png diff --git a/src/main/resources/assets/nnow/textures/blocks/wooden_berry_bush_stage3.png b/src/main/resources/assets/nnow/textures/blocks/bushes/wooden_berry_bush_stage3.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/wooden_berry_bush_stage3.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/wooden_berry_bush_stage3.png diff --git a/src/main/resources/assets/nnow/textures/blocks/xp_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/xp_berry_bush_stage2.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/xp_berry_bush_stage2.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/xp_berry_bush_stage2.png diff --git a/src/main/resources/assets/nnow/textures/blocks/xp_berry_bush_stage3.png b/src/main/resources/assets/nnow/textures/blocks/bushes/xp_berry_bush_stage3.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/xp_berry_bush_stage3.png rename to src/main/resources/assets/nnow/textures/blocks/bushes/xp_berry_bush_stage3.png diff --git a/src/main/resources/assets/nnow/textures/blocks/bushes/zinc_berry_bush_stage2.png b/src/main/resources/assets/nnow/textures/blocks/bushes/zinc_berry_bush_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..90d0cc8cb9e01fd1036260c4bf915b0a462cf407 GIT binary patch literal 3824 zcmc&%ZH(MT8Q!!3nn+gyq!JV)EVn>IJL?&HJY$>NhRbf6yV6aM%b{LGKpl_Adro%O zi|xDHJ4F>7EfO?URkZ;Leh?uLqK(?1sz0FO5)cstq_(IWMu~acjez}-Uz?%{_Cp({&ut` z52uB~wcpRb+fLqm?K{EvWHdXM%~kL4WZWo#4)gA5DO9JQS6zf*1L4@ zmIR?UQ@O3@3!X~)e3rF5!&q8cDlS>YIH?)LbzK9ShG`3qI8}%GvIG7IxXHmGt*u3YGq*OcF!Zhz0n6|ufqC^%avvFMSb7#6=MXg-U zx#DU!-4!*1cq!eJr_mduDk4)Q-NYtFm?GlN64N8ZGp(C3@i6Y1R^uQFmxoOqM66k2 zd)Nf#U1ADE4n!udXdFl{jFX0dX^0x4ri@mzrfY-A^~!NQPQWolXAQScmCMsf97c8M zNM{c0)28;98F3jyW|4HltyaCMW}1nnR8y6b4!IViDDW`j*pfa$O!*i&HYG?15+d8O zSjadh!Z!QkE3sV2iJ6b@uF)WtfUyyt0FO!r3Q>VM@;UX9U`~K2m&^<;OQ^u_qurTA zAQPfKjG9Lk0AlF6!dILjVYviJOa*cjQOKnN)~0|Df%J1`cmM+-iF_@VbV#++IF~cD zzR+!S8HURs`ERfP@D=(uxiJw&|#?>T{I{DwB4DV8cC! zFYN&h+9+2)^$D1i6quU!6l$NS_3rA?t(#XGON^Cc!@QY}5A~%I32HH9amQykpiG8h z+{ncVAiBD@B^GgnZ(5uqY-5Q+lL8Tx6fkwnwHy~{WU`U5gd;*_3KTHML{j8ffe=VR z`4uNBBqkXdOZwbq(npvujzXKdNZ7WCh$PD8ro)+1qhis}x4G$a#4O)Nt_{p|Op_uk z&47j+E6My(u^ehS1P2WHf$|ZIcaZRj4>^V*H#xU}<)dN=!8sJ%MuI4gYzlF?w#yK9 zVS}WCNyn0-Vg+XC2Tnkda+pG3b_hg)5u8kc7@H~{gPjB&Pcm43xtH(Qrb})BLoVTo7pps~a3Bz6nA!z?ae^=z)Xj}dNW1c!%(v<|`-_@e~T% z-P<3!PW$|qm-Smd{K4tx>91DKK6NUx@4xXy@x-62xBuah!rLFt{&?}~b4QQv)4~fU zk3aImCH)`wo;v;5jrXsO{=L@BGO8A*rTR3eLL^HnR)Xg+1AVLC3}#)TrQ`%tI+!9{n#6B zcV{~@_agzLNl_^zQixh&P>YI!#2Sr%SW25%>K|1>!9P?~L=+UF1QcoiG5VeTb$9kI zS*l&w-I@2kzu)Kk<2^Y&bzsLG_uNq^6n0EjD>LwaSN`388~nciAOGg?cYC`!pB4&t zzMOwYKEM0U_X6=BqS?7@u68gGakIo_9IDc4vklaR!rq5h+gvQF%m`IIYL$!Ep1)i) zB3UjTb!xcQ9#;!d^?0I=9G{vM#}|b!iw{3!>|G5&KvQMhSZy|1X|P%@cH{=|oG+V2 zqeGG{mWyM#LSwErZH&i>GMo}ag4mAX`X$0F+xH(dC?=kXJ(F07u)xLvrAF^l1Z|1b z!Axa;PZzwEiwjxS4oq`pWu>%YmExps65sbtOifA=P@wc!E90xEm5%l$R8%UGsGUV| z%g812FkZ^aMX~oFC~qRaw$yJP)*g!QlKRR z+V(=6#py!4h3LWd1_cn>T5X_XQ(KzNfr>PnSOzzG0ojx~ojul8=8Q_?r9`NSWiWHJ z?@gM`sI_E>cV}!ZsrQETI7*0kw8x5@6gVt;I6Z$JUd2h*-1439uDl zvVjzUEP2LnN-Ra7 z%^lh2uf$?02WHOS%~2T(kg;YSas1HN3fOHX5XUw_oOlZ95PPnVnG$*+?NAaync$7} zQgf>$NMxRLLu`3SYV9G)>=1>T5M;|xGi_@TDz|9l$Ou3Tn8fp3EEmDm&f;8-(8f}C z(PtPwCdq$$`|~&1U)%n0D}uA2MI*;nH~dGS%t4qzS7&WHT2+m?N(7NfyGF3}JM$ZN zpa!jltMB?497+mEO?wq;AFubG8qq_WM;Z%^mFEz|s23vJwISTL#gOHCA;S{FulZgx zFHRt$Tlcnt zUumJZ9#)pEL&v3|iJ2KP^u6CzlV58LWq~v zE_Gc?$)RO&?z(Vz4&UC`J2>rv-n?;kfC4CF)hN%F zV?A6SQI8K0ZghHBz(qIpMcx4vl$`Ezv`GORuGDn-R~8f$nH#i)E?FAuY=tLktPYiF zn9gHvWq-<-Z*0AbUE&BXk>~jwi4a208OLx|j5)q#af_+G_ZzLJ(5bAzu>y+wo$3u* z-wUo-;H|oXanCHiaeoMh`k-A8LA8g*>j7|l0Vssb@;ohxrF~~Je>UyBZ@xbwZY`^1 z9m3i?;V`wTBrO+p5;qOrZZ{&)X;0>IOZJAr0mzLkHr5*bmT{9RiPj-uy_SIq#{W^@ zO>sBe*zo$SdGpVyQ%kxf!Tj%P(S5IUgSkIHp3ck~Y*rVBMIsEb0gOR68H~8=GsP?m zap4QZY-m3mDk;KVsFkFaO%+THU2Ee1buh|d)Ct47drE%^E;MN5%gL|85LG~ta zE8G6I(r*iek=rIKW3%3wrL!;WcnRP2sY|!sx8vQ}=f=Kj%vN_+PhTng{1+ETtc%;X z?L58jz}ao5U#vdn?fTQ#cm2A4dF2z!hu{9IzyDzB{7*{X{qp-h68+^-ed%9&Pu^d+ z`{Jt?>c9Ef^FRFCw_cP#E3iNRG@b5o)%cbVI z4_&)^&tq55oR}CpWPI_T?t7ki>ZR8{bN$FW&;Qwa8oze#`njk7c=Yx1k5J`Q|CR$^g^v<$uu(dBIxpVK_ z`AV|8$?J9@!W7c?R34C{T2Us|zYVPd@g6t@Js4Fki6jVu5Kv45V(BC3;J_G)p>S#gZlfz{nzwVj&6Y>eJVnhz zeX1naH~$sNKm>2kzXuAlMiNZnU%`^d*QP(LY5_-sb?uWCE0O~ z6(n3Nuv2&)pg3Ft`IN|V3`_HnR-q7lU>>VBt@PpDvH>r) zIaWOtV0Ua4l+kF$@PcSnf&&w+6aW$y+m;_V0`s)t0Dz?bkQehXL#;Q%f({BBV6^^A z>XFcX(kk0|SI9qm89iH6;tO!tH>_p6VZo1h%L5ARb2@Bj7yHU|1W5>bT!oc6-F@BT zWuN;qUh7CpIqZI;eckoi5nFc2XwHf&ZD|7qqjN*8OK$s@F6Xzt6MFwbQEqbHSGRAf zN7&r#!SS~by{t}zC-zRvo&WNYTh)QdyC39rjrse$U;pxP=E!8$bE)Z1C*7U+ru1Nc zinij-q4bs0L%n;+%qqSbtRyb!qJ8*M*cCy19gU}_y&a7ia;COwZt6za55dl&e`(34{WJkDKB)t28%7)&Gke@>jS{Ww{^dLUt@^}}pt>3T=pfe*@4U0Kt+vp82-|<)3VFb( z{Ce!%X#e?B&vtdPVD~cRQI|DSRu#lzwq^^J))|K z;Y5XpB_n>nl^7POUL`A%nl|Q)*aHH*3A`vx(j-Q@FxnNNDGvTg=Ufur$viZqN^-Pq zB-D-3Y=m-f6w6VLTcEINB;Mrz6D)~bRMnF_^jS{w&4AF9W)vw#lJlzxRfmS5I>*TQ zpx+U9~ONj@=>)lwxvMiQPKx9D+WZi?YC7w=>+fo1^aVkt4o zh@{)&7Ocw8>#CIvnC7;^S!x6=g;7FAa`nUUqIE93sAv@gkkG=kJW4$7%5q_UItC!= z9jYX6-B6=un%9A^8OH8z3X!;-euGclS^eE*GcRkT`cVt_f2uD8M~v}GGk~p@KrMd= zt10DEL;O2yxwR1uY#0u^qBShGWB5{R=stW*yM`+y(_XOHW^jZ z$CjVEw0Zie{f(1KVh5Xgj`&O1b1TQT49=R<`{U56j;fP_Or=qjro@}VRqnq{3-!|s>*~B}&w)r3SZ86UEAAW}IqGn9( zyOs(MOuytgRQ8?y>em-1KIr~wsPydagGraFNYvBGE2aS09*M1jGhiD*R8xr7@_@^Wx&P7@fKgcx;htjIKoR`~;{ zN7Vr8urjzn*&V2pwNi}D&az`snxtF==^`i_PBEOFy3)RCvZj2>tXN$UC`v1A*%{%GV&p{-f&}3 zX}1f}SejPRQ(=MuBNBX!psb|nQW7W%XD6l5{;%!=tfBcbR!jzKGAxxF$RcopsV$o07@F5%skVZ80XOdZ>U;O zRUczFZ3F`A@FoOIx{BS=#m{FC-EB)pT|P`@h5 zQe$tZ6Q|iAW#cF(=WyKtg;gW+2LGR6QQ#z1i}KKCIm*`nBBs<}XgZRdM~$c&Gz`_* zde8ejo`9xGas)2u<)y`_uf)SpEW_Zml}gI>`#GPY8@wU_pVy7S_*i9G;^igp2~^l6Y1WalktT-0rg5aaOdEI1ngF zvO5LF#)xL+CyR+IlXaNp#?)D=0CQ5Kh>RxdhvNnFT(~j8EC?WCscE^7c-)ue)c$xF zK+=0uNw;-fm5eyAfub51yZb3b;%@qNzTw{L?=PF(vU;oUvvB{X`c!a)Ft5}A*lG#P z^oKB;Qg>>Ie`hVZ)~kW_z+qQ3hv{|5N&!i-TT^ujto|WqUSf(OJuDUmxtgfH%OlF#zHh9`YM*oJGu9SAKeJ9f+F8A$^882IxeFB|*>yJqp|MEprX{!Sy{;-{ z^tlIbgnap#vbIre2(4^+_j>NahdXXm>?&{FOLgv@*;aV;;Pct%wok6CTfA`84`<$= z`w0DH{?)+xMT?Q~-1HSiP1j}&Xj${n@mgh7OZC<*mgBPrtj3OAn3XwURQ8g0KFK^` zo3iD{yc36)f2-eq{CerIj%Pc!U1?`JmVK4~b-U5>hGqGeS5L0J@H-ReKYuipF8*d{^|(ym987Lha+bya|SisvW0D9n}=4E{~4Xp zTs`v8!Bdf99djR?cWuv8)=}EcC6`(Y_U+w&wj}J^e|mbE<+p*x8?yt$%!IKVY>KY`oQ}H5RUz_vr`UHFOQ0zNYnd;m*q^Ua*%4{qnx}#j(wC r{DB=y(U*$EO$+RUr~Vb*G_VWt7v!RIJGOsgexQ9Nlf13Pv*-T}MT@_! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/end_trader_top.png b/src/main/resources/assets/nnow/textures/blocks/end_trader_top.png new file mode 100644 index 0000000000000000000000000000000000000000..15da329d2bead8ba0b150064dd73ef8d8f494d65 GIT binary patch literal 11512 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 ZP~(({fZJ;f+VB4+n;D-nDmQS6{yz^`TvY%7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/end_trader_top.png.mcmeta b/src/main/resources/assets/nnow/textures/blocks/end_trader_top.png.mcmeta new file mode 100644 index 0000000..4f0718a --- /dev/null +++ b/src/main/resources/assets/nnow/textures/blocks/end_trader_top.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/src/main/resources/assets/nnow/textures/blocks/ingot_furnace/ingot_furnace_bottom.png b/src/main/resources/assets/nnow/textures/blocks/ingot_furnace/ingot_furnace_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..23ef16bf4c8b9287bd161805054d10bb5c3547fb GIT binary patch literal 3492 zcmcIn4U81k9p5`j3n)3Y*uouY#z7P-Z|D0nw_NXb5AHY?&SO)qD1|rk-s}yxyEDwp z-QHazZGk9CMDCPR5L$^~0w#?nR3wex6ir)EqE<~>iftM^DXG6m^ps)iCgNciFskMtH(VI1IJ4_PNtmY&N5#r9uKpsQ43btIppO1TSAAWH8=qS9HV)b zX8|h%UQV%!E^s<8-^y}2%N9+O4zjJmYEu<(Vv6TUb?BmYi76>L1Os?QV`S=<<7FWc z%+A6zX53twrYdRB<4(r$h+`6+Q2o3;9`E!V%g&G={H`S}RC{Y&<}{fEALR<+CX;%5 z&JSSD#O;X~O}IvF8|j9qV8aqsz*HeQVqwmZIH)Q`x@3LAG5f+23fC9A z2{|UgxEP*d8IV^54#>zv0CS=UAgi!IF*!>UR1umgE=RM%vq?k4Of_m46(WcnwhR`U z63|pb0GdH?G+E>UmMjIcvV>Ju3ftzQ=Q2t&;pda2`=z#Qf$7p!#$Ggj(5z$;nj8Y6 zDJlT+p)*6lz%nF7;#n+6irmPA9Z4XH%|0QP#*2okA^`}9WdX-w4HyD10whU>BuFa9 z^TK4YOwKS=WEen%79V1%BsemGG}aOXUJwNnij&2{vc<6+gn(BxRKzlPSpb%WHD2RH zo@BlXtH8D>9dmh&3$s9PvqQ}XOX{q|8!9?ch4$B>8IH9WZH6t05nXz0k5iG8%6(~l zz6TS~%k*i{yYE;*9(uSrO{#Y?qkx$(eka$Dy($JS^dQ+#u;<5U%X6|+rERIep`hz# zY!imunf@Fq4eg4e^n`wV*nfGI1Qlr-Ng;rSMCz3nC7_Bb1eiy%!fG0lG^4C?wMyj? z#VNWdlt ze(`+FE7rjkQXf`FrBo)?4Pno&s)XultAs!m>hAyJ?}~Ldx&5M;fbr_?i_24CW)(*d z^Pf|xc%LYWxj1ao!m&ahZ~jcS63ID3C;MMzNBpn$u9AP}^X`G+04Wf!Iy{yikrQcn zSvd-mo62Dt=SaVL`Njwe?%^A!_8mTQrskh_cO6W<|IEfa zl(gI{)&JI&H)kCr58h+WxyYKbu{b%Lgg+rTXdq3{H|KO(sn+~*YoB#91*fHmw zcQVKRJo;wy9eV~h&ag&~A8bcAHFUN&G|d8v4lBa9)7?3^y4p0t=abN_zQ>Me)`^)$Li+3a`W+@9(#Q6 z-}XK?|MwfBjpBZzW9-?#+&6mOIvJbwy93Lgcx3OcZ|wM_?whk7p4)rK{^;!3A1^FT m-EicUwb`53KllByhLO`xJu$Ox)|~KvRD0|4#7|n*ZTdI(nwby) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/ingot_furnace/ingot_furnace_front.png b/src/main/resources/assets/nnow/textures/blocks/ingot_furnace/ingot_furnace_front.png new file mode 100644 index 0000000000000000000000000000000000000000..2f5f400c7f00f84b7751a5ac51965a6ef9f7d7a5 GIT binary patch literal 1896 zcmbVNTWl0n7@jsM&=#Z=jDV(228GggcJ8w~ldh%gR(63cYgtkRtDHS^W_RfB%s4Y; zcMCBFFA0fCAqtTYFEKt@i9{0=X{ee=qAw~&gFfgJFGdKLgn(8&v%6i3DM*}TX3m`R zo$vqt%lT(tvVYxzrsYipK`e;Jq67Hd;@|V?@pJ4zR>rSJJNCFs5Y3DIyN)<=bSXhJ z+%QsGy{(CjDzx$epjl}YDCTX9CW!8yq7C3M^2jvG7-pEd_~~hiG_)`^C?(j09YI+m zHtL|wqx~s3It&$!>Uo6hE~=Oyk32vY^EuO1i(#tFtKzXg%}`_+;thwXUf&?OHIXDE zmV-zsAk&Z&B{HZ4I9U)CrHkZQF2t}Qh7)K`Rz+6jd9r#@*qWp1>Ol0-sxAB#rm~)A zs|-^p6aobyU^y9vQxt_^d4}g{jG*0;>473`x+|s`qR54gVS9#Ul0G9yTO(eW!b&SH za4Ii%vYg7Y6==fJ481fH z8lpKd#q%mBs8aA2D6Sd}c;G+58dP=5$ph@Okp~&X*k*)74SVAj|cm0_dNMFa`aBKpIt@HfD*(U0JT~FJuuWy+f5$th<)(6@Y_! zGdOm4Q;5v%^t)i!oz>r6HY>7bs-LxR|EKzDa9|dg8H8IcL;3zNep9NXhWU5a%4;(k z*fbn>MSoap$M~bx(2bZ!v1k4~gIzM2!8hrsYkIePe>((_k8xiR$Dj@ReS8SgnX_4Cbhhno{;k3Q3n zhD&dpSvoQJ>+bq*ul)wE^WEczo_c3){lIgV)-ReHeejFA(1k)%wq9J_N4B1yau+Q< zIdtkXYI5=YvE6^_6O9|Mf4%DTmCR(aq`q`@&$fMy6Ynm|U%T||+e)MN*q5bf=7I6f zhwJwJ{^JwNdy>h8@a+0MKP?>DvgOqeyRNi-cj4UB4=0Z)n_hTt?>TSVi9>C#teiN0 zU(4?OZ|!`4dt==nla~V@9MRhjwgykNjP<;H=KEuN4~`yOv$JvjSooXdl7`;ameu=% fyI8=yJPR)6^(4u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/ingot_furnace/ingot_furnace_side.png b/src/main/resources/assets/nnow/textures/blocks/ingot_furnace/ingot_furnace_side.png new file mode 100644 index 0000000000000000000000000000000000000000..85b6bdc62eb759f42c4b3f4fef61f23f74be03d2 GIT binary patch literal 1864 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 V`9_~``J>>smL3{QeLVQ`;@>bUT}A)^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/metals/aluminum_block.png b/src/main/resources/assets/nnow/textures/blocks/metals/aluminum_block.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad83f3fd9c70519ec64b36bf19e2fd5860e01f7 GIT binary patch literal 594 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 B@Kyi- literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/metals/nickel_block.png b/src/main/resources/assets/nnow/textures/blocks/metals/nickel_block.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe59d1c5f78eb88b03943df3bebd4db7b454216 GIT binary patch literal 584 zcmV-O0=NB%P)N2bZe?^J zG%heMHD!e|WdHyH#z{m$R5(vX(*J9caS#Xa=P&G+^}`TCiZKvseZgheaBa0jaoJqk z)K;3JrZMN%7iO&}g8H|5J)9Ms$9>Lwzu$NFT$0Hy-C55Sx9*i|8+@1yE0k_WUaP0ia9$>pUHSt| WD7rDj_g8WN0000h+U;UX6zS~Do87UyJIlyLtft$=8S8V{fW50oH8BNFhO6(!E+dMsrNemSs^ zuE#inh{xlmxY?wrL4smgmLO?@rg4bCwZ^EG$W76jzcB^~AJCKrRRCr4pv*~zH!;qs0$x{C zzoLW(5>+`M8Ff01#IWe(8aXN|aV>w)9^m42;J|2-CUMe^Q?#FAIE$HMtOX>+kz_yA ztBA7Hcq7!xnQ4wTUjv0zBl0@`pI}koBt?zz&}TWq2LTa_1~D`pNzSQ+6%`tW>db@Z zJx*t(sz`DeE@-~;Qq)uCv{J0qiqj@4Dc9@eJW);OqXO`_92ks`NtQ*9=PAj?+Gv~- zfq>gshQ32-x18J#?)D=26I!Ru#6__hvNm~TsSbnCMW!QliHLVPp`V5=oC z!ym$EO8u!JuFqO>ZBPRnfWxk64Aboxexw^Zh(c-=w(IUZ1V@k|ogP<-e{ywM>yy(; zt46(WsQ8!m#n}Ggtz8||ry6Qfc{;=2g zboFkqMkwOPOD~?OY`KfwyQI$g=dRAVJuS~ZyjVEMZ0RnXHFkDIu(0pYQ<+*#`GKu} zW2dbyIqG=Dk&rc`U0c|LdmEj)sit2RbbY7Z$O`pVVcUTw-i?m_N9wX?i3;jSB(@o28JzG!duPU*~sEzh*{BHPyut2i$o zi@*NC*`Ft@&Tp<-J>swNBhLH~WVZQMP=~8eIlbA3n}=Th(6p)U`PL(R+xE({@jJhp?qg#bWPuS zPuB01SCRV`Eud%2bg#`DGo^21(Za(0iHx)%5K{dB_k OcYDezT$@Yl7XAZ#3CVo` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/metals/platinum_block.png b/src/main/resources/assets/nnow/textures/blocks/metals/platinum_block.png new file mode 100644 index 0000000000000000000000000000000000000000..05b86c6378f496a2235f2fed8be1bfc2c8d79f05 GIT binary patch literal 2068 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/metals/tin_block.png b/src/main/resources/assets/nnow/textures/blocks/metals/tin_block.png new file mode 100644 index 0000000000000000000000000000000000000000..0b5c8613c11747317b70a9d723dc4b60a92b5c6c GIT binary patch literal 1994 zcmbVN4Q$j@94`~_AOndCf^1NV5(ew_<9fYo;eg|A9|zpHZ3lxuz+U_AuI{caZSP}? zAfn0SLlF&Off!;;CJK=lHOiM$fd~>va6+7lga|Pcfhd6mMDg`@JIANQCT(Be`@P@) z_y2hRt`5~y4H^98U<5&i1giaY@IB1BZAI|;+J-m_UxT#jg$9BQJz(AaHclQo8bJnJ zm%|Ip1;IJIs3z@#q(*=}o75m0L8ea6YJ%7ZOf&*wvf{xm?P}4Y zH|wCjxh5<&H;SBuO`nEN&GL{S2}}XaCKHOmXFXVsmxp6(n!wN;#BB6nUdtf5AQ(b@ zst!=6oyA3paiT8HPO%P#zsj3|iBrC|~EV%-e!r9xQH} z8cz_JOvavZ*i}77P#nh*Bu&sX4iUJ~q?ke$SB&w!41QpUx~!S9s-PC55K&X62ZKs` zTu5pKTE)nR2?mVF3K~J#Nz0`iP!bC`Eu|-N#wC#e36KPeX+SJhz-n>TRE@ZL59-45 zEe2p{gTaE0yJ|@$3nmP+A`RWh2js43Biy6`q7E2pN*6&z8p<4Rd86?@9SEkXhgCJv zo2XE)WYp)g62qYr8)QXNGe%jTJ-{!Rz=P2wP2!{*r|2-n@JbM&1L_!{eD$USyf=|?>P{XDngEbRD;MqC^oVHp~CvmlC- z9PJP&GQyBTq?c{3F2ge^B>J*iswBt=fDq+Gmc{`qQ8?pZoVeh0MsU*Qq8W~HF*GGu zm7gmnzFIb5nw#=xsU9rLj}kJPs~=tvt#jeQM5`cxgypB@yTs#xEa&%U;sBD~r%HOP z8*0?d2s-e_VC){G5Q%%~H-z;4)jwD^dt}|I{Q9k#|`C(1$w? zcdb3r+5LoVgK>5ArgIxcH1FR2UI+78dwW}l+Xl0O8;8&8yY?>G`FpnH%gfg!+nM5){T*Fl8}sS+7uY>NTsWCp zK5grz?kR7dcs8K#IkkA~`l@;JQp~Ce%Ews z(r;9}b-3rOS<+u9Jr;E^bKja17&5>0+Yi8uwgGGQuin~F|M$uBAD^7}`qOQZ8^tT1 zZ$I5}Y|N3i(&m>AmOS(Va&&WP&6;$>tW@ofH!C~09GxJBTFb5-9QVb-F|EHn1-i#v n@cz2axt@9Cr|V~1(kqaWl}l?6I2UzVf7?JsjsN|b&#d|f^x>(0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/metals/uranium_block.png b/src/main/resources/assets/nnow/textures/blocks/metals/uranium_block.png new file mode 100644 index 0000000000000000000000000000000000000000..dd3a33c47086c7694373b2cf1d7ccbc986f69f95 GIT binary patch literal 2076 zcmbVNeQXnD9KOv>WMLbK7#J#-8w{51dLO-B+hb)L?Zz6`v2{&0qJ&-V-maImcir8M zb_10t5SYU_5W?3`|BwU-7#5TeLPSAWKw$_dAVLsD1d>4%<;#!vx~`5-iI?2nd++-C;WPEf)oUR3MS186LEr| zRMDn_+O{g6(AFf_MXY!VS`_0TK^W*f8ViSHjf*+3I4=js#x#MUafsgJz)B5+XuYQz zbt)=AEhZKhD8_b-6PjK&2fC36$V1VZuQdV)FVK`0RRCpkpv+vun+WGr0k12n zPfdb@Z z-A-qAT&~B%xn)h~WdXQd4h+V}BuOG?rWilq0l)*6 z0F6^T18}>=X2E%ugu4R(*nw?eze^EXj4Ckp_a6vR5g^CE^8BJjLuNrCQLO7=UOyZ!80W%)2}VHx5lc)<4~fSUSx)Sa1_2~} zOqKLo*OY)B8bqi zMSnzH^&6Y6Yznv6biQAHdP!xGFYlz=IdXEa!5b)R8L@D5TV1c`H|yM$r-lWJFOL2B z)pM(Fm4C5y>E)CI$JZ5X-=MXR_-vke)4t{nxoZNI9h-C8Yj?E1dHC9*^=God^rI)X zloW+sBVQ`)eDA0B^J#*tR8N@M+wIOx;g8RJ`Fz#4 zJoWjS%iHqjA>;4d{_teXc1hp7u72l={8<~a2sUMJa6uk#9aTLst@h8?`nJ7pTD40~ z-&=g;s(*ZMM|w$CP4}I1VdN6Br#0vJ(DtmMjF7tOX-8@H%wKoj{QW4ibFKyX{zyU9 z^?X}R{k60gGIGr+TROy^BMr78#a-t|ai<&BXN)_xV18=lp4q=F%P4207t>FU@=bcX z#>vr9KMu;0A9(mSPh>Qg(0 z)$K3qeD=o={z@qvmU%+f7WX>xydC4(s#fRsHSA`#L?&i@Rb|iHRnoa`e)HnmWjDUQ zy8Jt3$Wm-!bNAxHLwCE^q6gDfPp-QtnZ}JhbhdldfKvg%=*D~lenAe{3!K8 U@!2l;n@13LS(R(+)P^_y0ZsnLfdBvi literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/metals/zinc_block.png b/src/main/resources/assets/nnow/textures/blocks/metals/zinc_block.png new file mode 100644 index 0000000000000000000000000000000000000000..48a18898dd1f8e82a8dc65d15588569d6c7b54d3 GIT binary patch literal 2061 zcmbVNe{2&~9KTISbZ$6)g9AN};kK~r{pgSNPRiWc!fGg#tvY59xxRaCkF~vWccUGS zxr`v9A`n5uU%}}%`2#Y>`&XAj&>yh=-#HjbRgu<52-rLk;)AfE2M2KkwL0;F4$~D$Q=%9ks)t zRJK5Y6$_?$!GdbQiA3=vd}5qO1YxKNcsv}6sC?W;BzSo=)~6`~Pe8P48&RSg#Amua zxLsBtZZ=p*z?jT<5ocg5Mia*s;w;TrDcVXgMv}4cCYoniJb4kwnj-r7a>wMPE%aq0 zf|?fPDJm9=8Dd6*tOO{A<2Z_DDV8M>f>diGnh+-=>bO1z2ULL~MKwu|;5wt=lWQ~^ zft2>T5RRs3BWf~CC}31vh*FG!)?G>fMUcWpYm`vJxCkg1f?*iZRD@+x*l1AJWHl(? zg*vr-ivbi`w>xFyj#|RulnGUH&PQ$}19C^S>aC4JsvN3vjRK%^K9V_3_a@5Q6)0%3 z;+5r4U!pvHl5x9TPYj3WS4t64j;RIx_CSZAK^wu+EKSl@l3~4!i8mX0lVt+U@HE{E zb<3jUue}Xw^fD;H9B(w=0!39L3YzerU=i?sSqTfsXDKWMAQg=S2s{-@-Y$n^1sO)_ zjQ!_bcDqNB{Za@msO3{iahKC>VK|G0WDQJ0uG`JKBB~}t0CYKQ1d5MAl0+Vu7+{1x zE9v(Y2_$1R6_HjE(4?6W&46RfM$TH)x8EUy8odhi{k;c5lmX)STOJLqtQjCS)@L@7 zrXrJ-_Efn*a$+EFcBWWF!S(DI$F$ z0J>WOYoztcPZSehCaEaRwaK$o0p}%0Aqh{^4=(`yT-XSp7X%cE|zqe4}dm zK2P@I8_O47bq-m0Vh-Ju|LV53MGYQH)l&nXU0=B6rH0AiH*}cd(ob3^Uuy0e6HD7as-S!C#$lek0Ttb2U+>Oq+_VN{cE=a)D_gfV z3*#JzdQKZK4g1#m=+MR{d-}0_taDx7g~xJsR&74M_T21(J%3bxUNC9kNcW$)V^5Fz zg4(kp^Y_u2ty_DxR9*-!s-0Umb!d8qr(yTW@xxyWp5!yysz3IO`S2r+rK^RCoOs>p zUCM<48P{9tPnodM#WPM_IlQ;5X7_XJm*7v+?;Kmze))wHrT1;ktUTacIpq8YH`59; zvwr#haY9?Zbl7)G-mmZO*H{PNe6Tq0Qugeo5odnYf7mYPG{?r$ HIgNh-jWot; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/blocks/barley_crop0.png b/src/main/resources/assets/nnow/textures/blocks/old/barley_crop0.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/barley_crop0.png rename to src/main/resources/assets/nnow/textures/blocks/old/barley_crop0.png diff --git a/src/main/resources/assets/nnow/textures/blocks/barley_crop1.png b/src/main/resources/assets/nnow/textures/blocks/old/barley_crop1.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/barley_crop1.png rename to src/main/resources/assets/nnow/textures/blocks/old/barley_crop1.png diff --git a/src/main/resources/assets/nnow/textures/blocks/barley_crop2.png b/src/main/resources/assets/nnow/textures/blocks/old/barley_crop2.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/barley_crop2.png rename to src/main/resources/assets/nnow/textures/blocks/old/barley_crop2.png diff --git a/src/main/resources/assets/nnow/textures/blocks/barley_crop3.png b/src/main/resources/assets/nnow/textures/blocks/old/barley_crop3.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/barley_crop3.png rename to src/main/resources/assets/nnow/textures/blocks/old/barley_crop3.png diff --git a/src/main/resources/assets/nnow/textures/blocks/barley_crop4.png b/src/main/resources/assets/nnow/textures/blocks/old/barley_crop4.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/barley_crop4.png rename to src/main/resources/assets/nnow/textures/blocks/old/barley_crop4.png diff --git a/src/main/resources/assets/nnow/textures/blocks/barley_crop5.png b/src/main/resources/assets/nnow/textures/blocks/old/barley_crop5.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/barley_crop5.png rename to src/main/resources/assets/nnow/textures/blocks/old/barley_crop5.png diff --git a/src/main/resources/assets/nnow/textures/blocks/barley_crop6.png b/src/main/resources/assets/nnow/textures/blocks/old/barley_crop6.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/barley_crop6.png rename to src/main/resources/assets/nnow/textures/blocks/old/barley_crop6.png diff --git a/src/main/resources/assets/nnow/textures/blocks/barley_crop7.png b/src/main/resources/assets/nnow/textures/blocks/old/barley_crop7.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/barley_crop7.png rename to src/main/resources/assets/nnow/textures/blocks/old/barley_crop7.png diff --git a/src/main/resources/assets/nnow/textures/blocks/pepper_stage0.png b/src/main/resources/assets/nnow/textures/blocks/old/pepper_stage0.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/pepper_stage0.png rename to src/main/resources/assets/nnow/textures/blocks/old/pepper_stage0.png diff --git a/src/main/resources/assets/nnow/textures/blocks/pepper_stage1.png b/src/main/resources/assets/nnow/textures/blocks/old/pepper_stage1.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/pepper_stage1.png rename to src/main/resources/assets/nnow/textures/blocks/old/pepper_stage1.png diff --git a/src/main/resources/assets/nnow/textures/blocks/pepper_stage2.png b/src/main/resources/assets/nnow/textures/blocks/old/pepper_stage2.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/pepper_stage2.png rename to src/main/resources/assets/nnow/textures/blocks/old/pepper_stage2.png diff --git a/src/main/resources/assets/nnow/textures/blocks/pepper_stage3.png b/src/main/resources/assets/nnow/textures/blocks/old/pepper_stage3.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/pepper_stage3.png rename to src/main/resources/assets/nnow/textures/blocks/old/pepper_stage3.png diff --git a/src/main/resources/assets/nnow/textures/blocks/spawner_bars.png b/src/main/resources/assets/nnow/textures/blocks/old/spawner_bars.png similarity index 100% rename from src/main/resources/assets/nnow/textures/blocks/spawner_bars.png rename to src/main/resources/assets/nnow/textures/blocks/old/spawner_bars.png diff --git a/src/main/resources/assets/nnow/textures/entity/villager/profession/ingot_trader.png b/src/main/resources/assets/nnow/textures/entity/villager/profession/ingot_trader.png new file mode 100644 index 0000000000000000000000000000000000000000..4a92e92b26354cba5dc5a54fb615b2891a924ff1 GIT binary patch literal 4116 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 DU(QOA literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/entity/zombie_villager/profession/ingot_trader.png b/src/main/resources/assets/nnow/textures/entity/zombie_villager/profession/ingot_trader.png new file mode 100644 index 0000000000000000000000000000000000000000..eb72ecbca28f4075f57cacdb275fcffc91dd2bdb GIT binary patch literal 4111 zcmc&%dvp}l9iB}Bh5$({V5Eo{HdKNzJMY<@F)Mj2k)R79BnJ?y%;QcnvOBZcnPfKz zCdJZoJbIvih#FcBkJ2NJ6wrXNSb^Fejsg-8q*hVFu_BZr4=Dkm(mVSi)P&^J_H@tL z-I;rT_xJej_xtY5vz0R*8lLsTECfM@S4{I&!T)0Wn>iT%wrTaB!M`D)Y4c1389KuL zI*?Vryc=NB*UU^-bHdW!}F6-iXc5W;lW87BRPQ~1d2ivA190! zR#c(NSDuIk@4U`B%L)lN9*IO;5!z*hYjKk2d7Pkdio&1;W;W@T7{zq6AnCyeOgXHD zEX~kS+oLEM4VKplGmV!J45i%aW&$P%7#TzVb&RaxK2&q5&%N$_org?noBU43SnAP8(|p0yps-z;bAwT5M@*A8YNITZ#fvtq)UsCS@8D%ECajjBvGK1d`mTOrnUE zmDyb3(ZV^Jt{4$>qFqK}4e*H;@H#1iA~1r%NTQnX2n;I_%p`&o2qJFkHxx~6>S^kM zoU0}v=LmtNZZU;KRzyqe*I1DS)d&YgxD8rRtOa;TuXUoS%@xXwfDwj)VRm%S@rtst z%CMno0XSh+JyeQTOfBO`p5rjeMaI(g`-KYKv_xG76+W*M*6PwUMc@e8L&`Lb5ge&v zBE|5S2pAdzvPc0B!$}muB-i^4xxpr;y*}QfiXlTEH`9}ON|G5y!8ny=F@lFz9+DPe zmjZ$!-KyK8vPo|!YMZgbE+P{hUdHu}aoUYL|xEGWYwYe3Ce>Rjk z2s4Zo8>`f!ATZabL1fHW5*!5V=FGfXXP^e%gezHk3EUJDGSy5dRH;~-xC&?w_Kq}3 zlWtLU(-@_?2~6S`3G)CCkI6hwN-C__Ei*;9El$uyT=)9)C8-kNd6~orR%J0tWIUKh z;Y7H9EHAqmj#AhG`;vLqBde+e7t@e@F<+1en94IeCrKVo>@Bb4zLS6w-7Ljn3;_tt zLo;qnq!kvXL(@>`CA+fkR+U^WQ=|+7P#7=EG)BvCwM3B;=7 zX{c6241RckAi( zT>0PEBlpXLezx9bM~W(a*_KKHjq&ck6R%(14eU_-f9z9Cv*OZ&|GO&1 z?|pGF%k4IeJ&_5$>CZr!2p`b|c*ys2><{Dsv3YHKGrsS!Z_7yxh8|Dh$szb?Z(pX~ zDd0`&tpw<>d&BUZvIqdUL3XJ2HK(Y;|# z#{=z=-!(PX8V4r&Hf)?dv*X^8Pp$cERQFfMUYs?*Ja~1<`4L}!FsJ+Yma0P;NZpt3 z@1vrb!R@ag3yQve{DC2e@b$5yPlu7fl!-_#_s0#$yLV2XpWbz`b<~AFAy+WzOy;269Wz(HnAYNI zHrONCU4Q$u=JaaeMApvxs&>Cx5Y6An4*F`>+0Rd2YzX>w?|gh2w|v*mkB_Ilao^T| zK6*SY?~YHYy8YZx?#imi99#b~{q^mJV}IL+lXo6n`ObUILltCn@!+339yxq%^_;X5 zFR7>2+;9G4!}xUMn+riah~!>7u*ITUjykqF3eLTD>Cn-0X?N}YYhGvmphHx{}6WY&ps0W$jGh(Rq_;aM;`S)+Md7T1s*>UH~gYzCe+W1(_!G|5i>97BU%*Z~lJO{ga%JETgQRccD zYQ_5WkY%B{FKs)fHh=i0wj`K$=h&4BzI`1xx=0 DrJH$! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/entity/zombie_villager/profession/nether_trader.png b/src/main/resources/assets/nnow/textures/entity/zombie_villager/profession/nether_trader.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa1bc3b720ce4d56836f27d21a54a711bc2b18a GIT binary patch literal 4885 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

=V_Lxnkzlwlxvp-XaI zNS%J=A{8QxhSntl*P%iK2~ih>jz$4@91M^^%5yPusZzu0V#H<$N(urEAb=%dfCnhh zeubfnUDsAJ7*?03bh;3tfH;@|#z+V_<{pp^;Y4A?6n2Ky#kuS1ggbyEjdX|TZR0r} z1<=z6B;iyrTMVm9;xLd*5}+7W0DHw=CXnibFeKRVpdezBj+yzV^4u!2N>3F^9-{if$gs_j85AELh@NatG zO|Dqw@ru$-mSyf5k4WNml@3&-$y2U-E0tztGfb0)(LZa9JTZ8)S&u}UQLXh@cKeq; zLUy+!RT>RsZqQ2K1>-u}+p|tgN?B}fAfyulT99PmF$I(qA$BB(F4oMxBg+04b=otY zFz{TBFAop|H4TQu1s)O#P{wTA#UaHw*eRYJ`;z|$-0cCi0*!rWUJu+|AA5V&X}G59 zUvc-}uTz`zJJfBxnbkYb)y^h9QP4uWqxW~>?_rUsTYO(PiF>q-Bn%uE2fEX<14o~K z`VeFo699!is6!VjLEE@4v?c#(+gQ+KI}HPGalIk^YFOO%-%0gD|E*TVnq^b{&N}_z zqj{+`vVXohv&0UG*S5E(_r3S4pSff7J1_oZ-vir6_{GUPZy0~*SNCt3dGKY#b7#j$-~aGn`I_V9`2V}E|GiC%f>M-PuYzIo!o_dPK(K3DR7 z@Zs^vm!FDD^r4$y{N3b@uix^(%*Ff3SE^t8HMGCDHL@SfoxAj<@84DY0Wd#%s`}mI HXSeO;1&4;dgiO*)a;=pZ@EHfS-@IrcPvr zar>RcXTBloX}l0<&evwli6qsgQ|3q#=9sQuCfsJezu%;ocoz07Vk5!>h675??yCgS zQWXWW)yb|b_*W?{=6Nfytd*6O@`_zf(gln7zHeb_QHp>9Woyk`tfFSNug9UPGnvM% zJWiTs!BK?CQeG*6rX3R+tv=gk)^!s&%vu#Ki57LzSl_qVST0Isdo`Z6}vrP1h%$nvAhU`E#=n^I?UYb|Zf>MU7Gr9Qe0 zYVPYm)4&?pAc^qwVw%EDOD7_kQL0ateNn620szsipb4gO~VP~f2MRQ`J zz>04^@L1eb$x8P5!i?@2T@|^mlqjYcVTLH4!(Kp1;P3}A2{7)E))Ey*YlEa7BK8~s z3V5^YNCC)71w3}wwB{q1&oHa>qjn1jLM@F!VwsY%WO%Z!J_$n@7?Z z%7my7axJt{z|qxQcpM9)nRXH9pqht68&R7n9Xg!5Ay`!)BLFs_k|=VqQtB|lu^$}sY@6i9IH+nx_FqI_sx!V{6E0x9lMBt^kX2?!*( zU%Ny{gp#3o$ddTxwgaj2nQVtVLQ{rjr49iOh*9C_=NDx4}!&r!X2NDST z&>)%M(zE5TycCT>_@`?xaOog)yklW?-AyBZR`vm9?yc7{vv&iR!^4XJ&DV%#Cik|kg%>_hWr;O^$g+cr+a4ORb& zyZ?Ti+BLsZx~-2^_0IolCy6JEve2IBgU#yqutSDrLXLHf9#11FTufEU)%FIJNw(q zU)b@p`+hpR8V0^gutK(lg&7P~i@HV!eJv;K@k3NZl@yE{aSpWb4 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/berrys/clay_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/clay_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..cc811df56ead35b9c03693e97db05e7f5155530c GIT binary patch literal 4113 zcmd5=ZjbL8Nlh-R;i2^L{?_%sXG6J$~%Y+wZwu)3iHhrYm#sKaqcTkHhcB{<6;D@BOXm zlc}cNaaaBw(=LBwpQe4_`%!H^o3DPx7jdJ=WgMttr_lmwO*=H%X>oBzWqP0%qGqY^ z$Cq9y=#eZH9lTPMken6KBr|PZlO0)DLxhP|#2r*E@}RGxa;ALRYU3 z&-t)X(7PhpnNndYH>l57XZ3QNDBUhHBur}Sj#o69MLqAJPO#}3*fmTGnaroyCq(am z3Scdfp+8qS+P4L7rNUyCwS2>9x7)?GRg9Ab!}L7Qz{DT~fdoodni=n)X1af%p`uce zM6E1}n|iL12k}x?DuAcG5E`wa+Gg5M6C}*&@Rnf~aUN1vP>P{kYbmLBjZ0yux@xFq zmV&G~lx;1>S)4A$+o&E+-(UbzTdfXlZ0Sp*F*K28N0uRsenPgCPHQVIWz4BGUP^>I zvJ7tSA4HR8b7~`>BP<8;;o>X`w^^Id+z^!NMB9kwGegmqUrrRy;-nVG^#OKf2U*n1 zG~G+ts6xF$dYG#M`0=aFisjA$`Cd9f-+jog@QgTu3wJpaRP?HJ8Sd!Ou0Op#9>s2 ziFEGRVSVOEnVBAAh!oAPyVa^c(@Zno6l$hYDnP8oD3ZQo6WhU#i2@piNV?QUJPb`l zq)n-521+<=u)Y$Dr5u>~`raOuu>c(#?pc(QKn4;~>OwL?Y9bzBfrOM!XmOW@wi;;r zY!U%Y@cL%0xmPmxN-^#-%#otXL5xukxj3*8v8Ysm&6pEFR5>zyPy;UUd@q&?gTeV6 zq4lNSphGZx3^V`jFFLuy{KoX>ni1536!aWhz4V^|nu9cht?t-t)KT^MN(7lndrm;Y zHfB!VI0GECk*-1LQ&5x?kec=x>M&pEKh>iLx6U*c7%SH{5hHGZs6z$f)MChT+<;+8 znF#qIBPSft9IO2?Xmg@nG2pd@!cX_A?N0PY&37+ec z9102PSB|Mdlb9px5`kkg5g=?b2Zc7EfZH}frZAP~5Z7T!jjGF~mTO|kPyhe|bW<0Q zX$Ig|7&^ppEG2_cb#d-EkR;eCCZH4cNq{`tV+eb2s8P;@Yl%^HNfHLql@uwLDMUOf zkw-Cu!z-l3_OPJB-lVHr(H=aEo8zcU{r+^6<7%akfD`JmAr|y5+xuMfHi^i&QprMp zINFLTM%t7;we3X(+wmp@+7nCTFl+NfO)bD49)+Wg?fg&q^3A;m(72Xo5=2FqR}KIG z8F!E?Opb*Gm9)J<^zZQAs+q(GTF2Ia{{Ktw`^goHyt$yDF)|9<#v|h9vPw2pq{R~s z{g6u1QXx#@hCVzW^eonSt5uIgmj#XGrtJ3|LxgN^N2(;+l)24ThA!y0(B6)9awVJ< zup!~hutUUhVhcQ1AtgmfY{{`hfQ`3A*}GAv9pkY>PcR0A$SF{&D}XFq0VKv05iYYr z<}f(P|1+K~dx`%C-0c9h9F0S0-U{5^8hbm|X|zV@-KbNS^Lx~7ypz>?@0H#rKAO`) zw+r{T;_p$B2yM9!jol8d9t{KAApvw}R$#;Vm*bicim-sgHFU5NEXZ-4Ym5KaRxhW? zZW=b-yaq#Xoy#AG_egjd-b7UsST@P;nUg0BO&i-aQ<#d`hI?X;(_<>`Pz?H*MHwW^^aG=U!20@f1Y953oF;3etZ4VPk-uPKdVht+IN3v z?DEw3y8ZNh*Y9}i%G!q?r&s^<^=BWx{?)%9d;ZFv*UsOoy+?mT-$Qo4_P%J1PyBN2 zsrAWgN-ux!9_`J8XP(=&clC>F{GvPk(O-Y$;&TU1X=9hdiK9Q={mi+Qy_It>pZnm2 z-?ATk<-+wZJ$c);Z@+$O*GuF3UOX_qN?)y4o;rH*nW^8MF7Eo(#24;=V(j(Hd|W@a z|DgW1yt41Fe|Ypq+M9=-zk1hCwDFIx-uKpl@e7ZgcC>rXKgm91t^RY*RlWSs<%hp@ hZSm5x)30hj|KUUIjpN_^O@3*gIdZ)6-NUEX{tfc|Itc&( literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/coal_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/coal_berry.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/coal_berry.png rename to src/main/resources/assets/nnow/textures/items/berrys/coal_berry.png diff --git a/src/main/resources/assets/nnow/textures/items/berrys/copper_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/copper_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f6d168bd674a85ad4ca97792ca554d893f8708 GIT binary patch literal 4192 zcmd5=Uu+yl8DIBL;xrDm1&Ag{blJ2`t1{l%+1=UMCD+8ci)%|m6OhQH}lQ+_cy=qTYq)##N+$!IdG4rY5QhpD)aC;Uc5(l!QcCDv^jk2Y0jL^ zG;Qw(i}#53{5S8@v=6l7g~fca`l&!9^+_(1P))Y#O_0{K!$(?8F3zZ257koKC>ekK z@oR=2%aZYgTgBC8SuMvi=Tdd*+=&Ho?u_uIapW=ma4P@>b(M3yRj)O&pj9$DdIR`g zESrYj5y{V#jH$w)zF3{p%SozqcakDuIj-*clNPld-~WV8u*FQwOv^?V4ICU0qW4|~ zSW9IT%vYv+w%}LESkCiiV47=dYm;mCWRfnKmhbx}CMF>WBv7{A$axDjvV(mM6_trJ zZsu{)&hqzI#TMpbyON(R9MBkUl87cdKm6}a?KYy}v1MXQO7qxH?A3|V9W zU}v+yA~%TwkR{Lgj>1v|QIgg-Jm5n2#P z=sQ03J%`i&`AQ;I3SbuJyLVJ30(5M+=Lw0K#~h?w>LWoMfqd-yC{mR0NI70eqQ16I zr!mk3uWi;^cqKujrzmF>bEF*QAxa$|F&x^6*p5`8OQ{z^R0T2uPy;UU;x3kq{^DYR z(Ar9O(IXgMrd9my9Xh?k{>Jua8Zp#@7c-b&N0dzSZK#w$3yb7%S#lh!Pee$Ae6B$EL{kSV*yS zsEGJsvmhr>(dE5ubyh&3u3np+oE93<^y+l9Ul7c%e&j zC?up`d6tSSVhycJgq}-9h_FRH6uE!`?z#k7!cx9Rm`9ZwRu^+@W?@ND2mnGvIt=m9 z3c;@^@`&fzN`}Mg@)e}ZvM6#~!VqIlggD_olCHxYMJ%R>JFG6wJr5G@B5ncFUB?NL z@A?#B9~vawJ;7`-tS(8SP%;U(k5Pq)??~i3m_j3r9OC*|IAXJ39dvY|X5Jc;oi-B8 z#05szduTeP&JJ*;cREMFMfbvqf_IfPddu+^v@_fV@2Xu}R&cd%LB?INEQ#_po~o%O z;DcfK-rUarjIZ9>djKG_eTyJRL`CHQOptL8F=25mY^bE`_oIK0_x6HC0*eLM?)QiP z()(U=#WHU!DHyU$W7~K{(pXjLriwIq%3-!rX;w0#G^y)@UZdxU&YR6zEIN#8t~O+E zei0KRq0v$zL+UGF3=ewGf5x-rT=M^byB(lbpm6}r+kv~=V{gYg z4L4N1A9d<*ewVt<_p*BTccpuYrwdx>O!UE4{5>oZVZ;w$NZes;bfVDpNC=aj9lFr} zpb0WU9E1fl>d3=N(6GRDp)L7e$HsytJ89VT6xUyZN5kUl;F%PD44!IL16VeNXV!Pv zOW)D7k=?VEsRcG6{?Tq9x%0s*Pd&8jLti*>;rjUp-Wm_T{p3@B+kd_N)}=k|m#e?L zfQIZ&tLiZ(WgUKd-3#dkL@wE-`w?v ze)ieJKl`L!K6zEU1OGz*+V>|O+I_>gxNCj)gX3@4^AAt_>)yS)ubjI4lhM_Ec<$tw z7GLcmm!=nw{`t+O^_Snjd}-vx_35u1`rgRc zjOPF7Lj*?3e literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/diamond_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/diamond_berry.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/diamond_berry.png rename to src/main/resources/assets/nnow/textures/items/berrys/diamond_berry.png diff --git a/src/main/resources/assets/nnow/textures/items/berrys/dirt_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/dirt_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..1577ff0261e3f918b2259e4702e13743d66a6c3d GIT binary patch literal 4113 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/iron_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/iron_berry.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/iron_berry.png rename to src/main/resources/assets/nnow/textures/items/berrys/iron_berry.png diff --git a/src/main/resources/assets/nnow/textures/items/lapis_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/lapis_berry.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/lapis_berry.png rename to src/main/resources/assets/nnow/textures/items/berrys/lapis_berry.png diff --git a/src/main/resources/assets/nnow/textures/items/berrys/lead_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/lead_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..7317cedcca3d2e8cad0782c73fddd16084f5e039 GIT binary patch literal 4185 zcmd5^6q`* zQtbEyk;+MTw>$IB^L{<^&O4{)4j)`hze|?9;-v?TU zj%B6N#Er#wTj`N+-drku@SSL3F<-3T?Te&Y<}wLXxzlWcbg8s=f2YO836*PsT8iR| z{>IbK=vpKz`h9jC*IQM!9348Ds-q_lFNl*TgeUd=`?S3s9{`#v=US)Ph%>)a(Yv@l zJQu@;u60H76BT{BP^c}|=d@~)D$OoCND#}`T(3+V)AGDKG>Qo`Ff)jWh~rz>r&Q~I zbkLT{(4Vi})z<}Y6@59+TfSkm+wF4OEGOxbK|IehFf}MeAc3;AIOiP{XSWUzYAO?H z)XJkI)(S)(BrADE2TOY{G+RU1IO~TA0%ml0%OGW3xYQMtVkp;INgG||QW&bCnkvpS zkR?Oe)^d_3*>bW8^l zn0f2Kn=GGKm*P3bau6Rb&ZBUXwZ+V3PN`0`iD)r16m9v{RPj7X7m}ng;LhA2idwZ= zaK+PZzb}eq($01lZuHlv8qZZlr9`SPDN((k6#AL`}Y=j8?p)Ys2LF)ufT6pct$(N5^NY)wwhYqXtZ5 z^9K)TvolqPc#eZ;nRLyq*ZtWz%Xuu+Y^|b$ujMF`zOYT^C`^%bsEq<<1<2zjL&|~; zWif2xKn&K`60uScvsmBTqcRbIamhSSGR(PYBFkhJ!qlS3vn_&bOA5fIrfr1-v?FN* zWr8wYCZeV#RbV@g8-P~@GkkynlX$TgEBat?v0!Lp zr8nqO3?G9Ozx_qWwwS*(eQz8=E~u^*-0Fq@D3mz}GwAA$%|#v6Sgb`5nXG4oGdgqZ z@)@W>m%=r0eHxOI0aLSng*w2O`cI8$-^P)~0%OH&f*i^MWVx0=+%g?xx-4+8v>Xxg zy+%=-0HRm-HpL>02h?<3gl#NPNG*(*5*%^I@l56cji@s=7H2$Elmnj_MS>Stl0zaP z{K_RNB$SMeB?8xWM1U}HTol^C0&d$B5kZvaQsz2Jjf=&AkpxQz1wbG~rNs~rNC0+) zp-WxYR5BPB%To|8LL6k-lp)5f5OK;qByEdZiV~)%JuVjKt_uOT5huWO+bZ^-?Kud0 za6nqz5zG|hVo4eXl1U3G*wTo4mPDR~9XJR>i`pI*mKe3G%Z?t^j4N}pdyM#pqJpDq zeKs9c_YZlcbx#hTi{6G4Mcq|W?+-^Cl%4T5cn`L{tYB+jp&0kXvLwvgJXO<6P!Gnb z_r_-SXMFX_)&l{V=@E)75f+&PGC{;$#0243n2<@^8+iXN>&*p1eZqWf4$g=F()xaI z#WIhV6f{|ezNtSViC0xRl93iqIrLU4%_@4BCQWU4)@XU6@m8x5iEc$TR%6-kUxp0X zT#r;~G!nT{EkhHutEg|wJTWO{vAL0uc8Hv!NCqBLNJ$Y=TXO7DsO%fE?7hg-mj2iZ z>Xr?zgp4S}UCTr)fHS}hTsX&t9hx4TaR2GghJDHZ1Mjw=TEWI4HLnKmu8zJf^E6&l z^ot_!kMaLK* zMkzFq0uJiX#Y#9q!RrDo`Cr?{qD*$fFmj6<48hf~cpTnI;bnNMRWVfA6z;5#zx^s) zn75T?Ytswt#h;uZJD&U0=)BnB4Q-<5K-?=d%}||Au>R z_t(|apS@W-|JvI>x4-v`uc)(UE|iw+-@O|D@@KCc*|&brsqN>3AAaoli?@7no4I}R zJU)%z`sBS2%4=RK9sg73@7XzZ1OM>F+ut9){Q3jeO`2z?)R9lWaN}#s^}8Sa!^^ka z@%gVk{<+h$k398*snW+i^2XGg-@5J8`r7N)&b@Ta+>h>=y71E%Z<=YZ|6}#x3#Iul z{ieC|_=A7hw)Q|=ee=%mgx60#^s94!{_6gtyDBAX`mN8r^6e+m;_^Q`bGY{8f#d7{ E1_Pi{p#T5? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/berrys/nickel_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/nickel_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..262577893e855726a10e6165b98bb3a999e390a5 GIT binary patch literal 4188 zcmd5eAAfWNv3>cV{2?;!1b6r8Xz4vO*;2!?QE9(pGo3 zm)(_gG9fXAfJ<>`6NlJNA^*6P(h~Y0f4FU&e@vXxLYq)X3av|M22+}-ZXH^1-oo9~F-e-=W;8Z+#?}`_S9r>|8omxyut#t-xjEt3tEZ0O?$A_nu~hizSt6zFG+D z#r(yeK9ko%S#M7)g;k>v#S1!dU026crxbw%O4jNrZ=!l~YZsxc z5)p@uG>qz6hRFSBIW6YF(zXk=Mh~{0bixDy)0@1ZlLF3MY6(iwlWQ!;)s}K8bX8R~ zRZkO;B|X{3Vw6V7VzdEtZ~6)a5ZX$mr(<1PYPFtcH)=>J4N}}ah zsJ$y-=B-_Cl5|F0j^_Z&LAYeK``#88Nf5Dhp9nC}}Hn_aX6 zaR_CCSNl;jt0W-WigAZwj+Civ#F*(K2m1!1hAEYAF=qSVRmKbtV8A4v?ZslgJ2;my zw7T3Lv?+#hZ3OF| znZI%dYS86ybzL8Wq$I%9q*I~B`9kNZ8s52nq_MzQITk^TIzBROQy^{{3>miLGb~Le z0=`?%iW5Mz>)wV~#Nj?QY#U(<3lz{SYf5m$8FLNC1sYK{Fcx=speRR@ITQ(=VMz{& zgzzhysDMy1FqZIbiwPfL!fX^+zyfYr6cIs`Yg5N&N)3wTn1(~JWXJ~sAu3G=ai92L zR}k3LwhblyL9tu~;Ua_~)1nS?95Xyd7YkGL+tp%6n`-*iIoWC>-b9#j zbgjdtgX-QMue4U@@VIDiIFZ#|CG(x(aGkO<*amOIt}ZIr+E*#YZLuT@(p4U-u?46H zgVcL{Bl{D+a&_y0fR5o3icAq?nFBIG#G!Hu!m%(Qla|}{{vFmEvxIuY@vzZtCGXPu zPH@E{uP-P#Wa;@0{Si@pMa6v?Y4DiC*-FJpF(1THP3!dU6XA&O!69*zW1|`PmQ8&)=^4HS z{STU;L#YW2hejRPSPAB5yw1>~_j+v1%491HeYd#o5L^wj$KIV3UV67$Rfj4Y!=3dD zTh2}8azk4u%VV?7FP?g2YFc@Lc${mh{YzkKz9H&32@e#b+veS(NT-grK{ P|4;6nDnB`X=&Sz)jtE`0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/berrys/osmium_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/osmium_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..211449daf407125bde4fcde8d095d6ef887777cf GIT binary patch literal 4189 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 Ip;MpuCqRByQvd(} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/quartz_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/quartz_berry.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/quartz_berry.png rename to src/main/resources/assets/nnow/textures/items/berrys/quartz_berry.png diff --git a/src/main/resources/assets/nnow/textures/items/redstone_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/redstone_berry.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/redstone_berry.png rename to src/main/resources/assets/nnow/textures/items/berrys/redstone_berry.png diff --git a/src/main/resources/assets/nnow/textures/items/berrys/sand_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/sand_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..dc2cfb5d09004066e627417be883ccdc928d9b67 GIT binary patch literal 4113 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 R`9A?B#}8JY-}mV1KLL&1SI7VW literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/berrys/stone_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/stone_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..e643b73d5e14339451eca47c5d5c3d97627204c6 GIT binary patch literal 4106 zcmd5>*HU@JoY2rYsX^N$KGRgmI81u-<*s8N*qo&A+f zy~`~c(S_ZedGGtaKR@sDzVB;OlaJiK`R>i7Qt9@I@!B-}Z!Nx?J`BIR-g}?H->u2` zTvjS=xvTizQab(2j#B9(KMZGP^V#~RJsvm9OvJt{x0(q^mrDB{Y9)*xleyx{`7o-e z@1DP)Dxs*TN31%oCsnx+j<2Nh(8}ZtUpdBIp+2-<+1K(wK~v^TX*C;B=CvwnTdxPt z#jvI-ZIS#~MI9{+Dzo(|r5dMFvC0&2-Lw?jE$h@UU3afSuM2 zU@aAaH(h(UYYW~g>O!6;o~A7?FPE2%a-7a}ltLr(N-j_=j(?;94;F@g6ri}6o zWc9vmvJmHSwh*tOx<7rL0Z47V-nX%;FU@A(M3#>&K^WbHtSX(&98aV+Ewgwr<#KEZ z+`O+BO_oo~Yxx{vIf(Zc=V7qM+G6IqpkymtL$sLbizZ$*l`N0bnK*9rurt-mqEf9E zSaFrzN5V+N%h`iP7~M6p#&TIv2__g}6A?Uv9gpaqMfYIc!?+__k3|?99~5;Ec4l-C zwLMI(69pg(ma}z*1^0qDZ89iB*ktokOQLyI=@-|l#*H`y!{D7UI6hIWPNi`WHee!~ ze&m2MF;=CzODQ5{z3pzj?oC8l&LS=+Y84e?Er+4-WFTZfb&gC+*vQw-0Qm%BHY{SB z*rkRDI^n|lTFe&55;dsM_6bX;@Kb%`5D23AesAZD2u`5b;Ib`4OcyMf?6Zw{s* z&;)A?YAw7HpwX6;ITSM_O=%-aO&2-XHxMyQA$^Nd+lQzMWO$$kTw=vutf;-g*#e=B z#m=BjFnlz<`0Xy5TW9{-^k zpH`3)sOa$Cn!0p{`NXhoge}ZbK%iibDTmeNn1-WcL6HvtLPVGVPha=J zuOP6AZ5vYf!|GzpwjoItVmhGHGEE=3mP-+K;ZQRf<&MFJ)g?&a3rCnpI#eR!ngY2d zrf_%#Cb3-1O>Pb7YFD%a5ADV{YE!>A9u~Md-bKJ6`T0H;ls4OYjCVE(FSt?)wL2WH zLKVYp%8uIQ1qs{n1_as>%i&-3|A+}z{abh?0-?Gb>p#ojsrPOE1IKET(9?#%ElIRD@fbObrSGK?Uz(nbush2PBzxs){_dcGSe*W%@_iVZUg>U}i>UR#kcyZ+F`Hvs` z`ktk4o%zlEqg#KfpZ|4r?yXBJZ#+GH;!F6%rtB*lECf zx4e6<{INN7bbQCD(Ycc&f2e)xje8GY*zxDT?R`gi?lk({=l)oIWy7Y|xBuYHr=C7{ z@RJ*U9$X$d#qK!u=I)K|&L2Iv{jS&k^2=Y1d_%7teeBthAHTRVy7SJx%9Y!c(b-Gy heDUw!K7Dz^(eFL*(Op&JN^x7C7@MrUbl~Wh{|Q%cJ*EHv literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/berrys/tin_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/tin_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..5e0c6a3724071e2d0fbd5c3f9b4448cbf821c2c2 GIT binary patch literal 4185 zcmd5mD0vYE-fzKrW5LdAg|Y1Nw`T_}v+(P|2LNM}Z%XQM`` z_`%Ds6pcugiuc-+c(OUJ=c0+ji9T?6UsWDHBt2EUW2Z6N@ zK0N2cX3=PiWQR({vD~0BGdX39$B8!V5eG@aY{T_Nh+{F&yUn1Oa1(QrSco`2!#<@( z_frIGi3NhtyelrA+g(L#-Mdrw1I zr!t9}Srj*nT%!o$`K(j~Pdg#hn|-y7w3{YKnAs9dlZ@azq_&`veYxg*QfnJm($qCw z*NrR%S<;tn&c#`r&c$n}?oVH008%?S*|)K(FZFugM4IhcfH1lVSyei%E;Y3|t|?m2^a?Ntd--H@$so7 z4x<`Oq|@Meu-;tC)+p zs}!QtwHTJ3)Rx^_UykK`4$ORgXOF5_f{u&s*&ZQ+djz?G8=`+ zVNcuFk_c!*)K+TEy;7jj)sEl}7DzMgBFAAK;yADnwV2X@?Ko}#QRT?+K@GSh^1WCp z_6BEigx2OegD%DJF-iX0U374r`HRzEZ$wZFS~PNOb<%$TXb#d0w%TJ;QA^im$`NEH z?Kt7AoH=;u3~)U?Y`yTxqxsTS>AJ=0iXthr5)LwSIh%On!aa**Zn zz`=?+G8Cg`PEMer!+UG$B3uO2a$SUNEKx`qMqEpQgyVP?RMT^)Gq5hfMX0Gj%Hb4A zk?T?d3JK}gF3};OWMEw~aBW8h2ouLep$#YyHb9j~qCJ;#*U@@VU7T5*VCA3y0EDPw z9EpGg;8z&B)O9Vbfa=b=%%hqx$$_XPLtHS50B;gWI3)v1N$Lr{T0E=vCI1h&TL)@68vD?^61clE_SUV_ zU`^G(;_km+r#9zzsN4J`t9RbZolSgaP7Cdh-d~Ns2Sp;Z_&zj=>$Ht53~ZMM(CJx$ z4d)*mf}B!@u!Ms;bg`CBkmEYn7XPPhV@{LpG_1JA^@iYTm_PRKr0~+e)#?VYYyx-I z7oNvE3Wci*mGW4X|MsOPOPkK@+I;j!*I#?f$>b*5{@c#E6Hgs? z&yf=!KJ-aBVcA3D3UGW^kt?|%B^@2-CB_qQ(p<)w4k z%irJl?jOa2S5K6F`S#Gs{pW^MW&ZZ}`Gdy_4==s)#p^$`{`C6R2fni-eWzM}IKTW? N_UtSFboT>~{1c76Rz?5- literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/berrys/uranium_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/uranium_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..84fab92d59e47b0154c171e9c0a50bf4de2dace7 GIT binary patch literal 4189 zcmd5=ZHy#E8Sdlca_o9?AO?epw2dD}pr)&;yQ@FA0e5HaW6zsovp0l2e+bo8)jRFY zOb^|?yR+*h82kwSFeoQci3n#*)E^=jgNY&0U@kEP6C>snFC?JyyJ@JQsxpzr zojgw3dZCer$zonMz|(#RtPah1JPn;B-#losp5H(){~?;#Lnz6i+ZI} zV8z#W-5s}OvYg#qgfUp7sytU^gJOyiwh_g3>;;qr4!Z@D0OP)BEs=4wvR2eXgw}~0 zSXO}PMWO&?$#cG`uoOX*q%96*h+BL?nVt56p^u6iRFY#fVo16| zDob2Vr7+D74%NVG(*f3VlT*In;J% z8Us!6=31?VR}wV3igAx&j+Cuj#F*_P4~G__mMvB2Fy@93Re_8E)PPI8*o$RjI5=M* zw7J+HbSZ|9Ns8aWq9dEkUzonD9YZasp%>Wdr~fd}9Hbd+^~Pr7u4>L#W5`U_cY>{* zIdbs~aL|Qx4MU%TqGW*7Y`{>{d|`0cjBj5*(^z1vJcl4gy%5>1EfBXYhAh_$8J0E^ z5#MbVe1H*UW9#BjXhk`a%%e!~LYL%F zNJzhOiHZm%W9t&3>o5@lkeG`i2T;Hrhaw_~@?Gk=OsR2odA8*dEEx&`K!{2}CJ#vn zenpW>UDr}F99NgGAYFtoWINPDo@YmhQ|=eLhuex0Pf=%FU7WivB-}xq0MZ@X4w3Kp z3}GJ*NSia^Sz=sWl18EQq>Yrv6r#Q@k#A!L2VrDW$H&4JYyIk>qYpLn(wOWWBfh%;cE;P_{q@TY1zY`UFdmV#msGl@A|0M`=&e+mm5nG(TKed$(ep&-olY|rJw`Q`+H%mp zj1aQ19jVfIP3G2G8M&ZeMthsq$&*qRn;Qw~M2Hn68Ty_=N{Wa&l4F+wv#*P?|3#fP zjYou7Fiw2n`zS(D1Y{AChy(cGIH16@mKClS&$@ld{{!wefm(sa5i~Cc?k+$!vNQ4$YfF^O1w$YA4$E6{3dKR>e zz5}@SD7B$&go8SAu@bC@>q1-dpSFz!P4?2T<}GeG1h0n0?dY8p9!77qstqig!aM8Z zzq$UPrfqr0Om(X6J^%Fa^2E|NGxywZ`ZM(Y9Xrn*JH7COuZWkkv+TEz{7$?7rB`43*7Jv6v~GNM*YuTt zZA5o{{*8}lTchpzFZi|m{oj7!)<>?gw|)A@JFk0v^6KN;|NP><+pfk(G*UUU>r*cn z-)#JRf~ILqr_MU;%zL(edE&%#_>C(XKh(}U2fp<8V-J_U zYCU`GrSmQAdnbPVBdz_1@+*(k&wTj4^Y7ep#ktipZ~pO@=fC*m-|pN}{p_17-!1+C OnAvlv`sDPz5Bw9R6kC`8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/wooden_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/wooden_berry.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/wooden_berry.png rename to src/main/resources/assets/nnow/textures/items/berrys/wooden_berry.png diff --git a/src/main/resources/assets/nnow/textures/items/xp_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/xp_berry.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/xp_berry.png rename to src/main/resources/assets/nnow/textures/items/berrys/xp_berry.png diff --git a/src/main/resources/assets/nnow/textures/items/berrys/zinc_berry.png b/src/main/resources/assets/nnow/textures/items/berrys/zinc_berry.png new file mode 100644 index 0000000000000000000000000000000000000000..339537dc5f04a95894a2fcf8f286efae0a991578 GIT binary patch literal 4185 zcmd5JGqZPV z-h2Dp-TM`VBv&gGHC#b#75_*}wdx-&v|tgzG)jd+5TgF2`9~~*rC`K=DhTIy->Q9_U4r<+J*FK8IKi;{C;W9Bs3oYILZvwOJb@wsP?wrwBwVZ! zkz7*Sc2p#JZ+$h9O9e2C^_@Mc5(zr4yQc(IzLpq;ey9+!L0ibUK+=f_3qy*1se0NT zO=F-5Q6JP=c%?w2rOk;_$=B|wx;US_Pl}J#BA;;q(!-_H) ziGx-_PN1U0d)w-=xd@5lc?i2$qKH7%xRwG5#(anS03*VN)+M-zG!aNKPLLFZE+wFl zkbdpiI$g zuPE|}=Q&!1!|L)iq|3G$qAuZxa~dH*gpZU<1=Ymnnz+O262kK!;Vu$3Al;=jM84}Y z1Uto7R4~aMIjk;4qEK-~k>(6`uum28DQ0jGMwGZdmQ)V<)ka4LYSzs$**->sskp%C zS{F?x^cVZMGTSFdAY^C5$%1z^Z1m1>yanwHx4}E>R~9vF?VFHsM=VRCd_|;sVgdMI z7{0f*^FI^IH}@U@$Q|D%h{~v_9DoTj?jbI1fu#eLbp2lR@ADqc2NKvEj)>m*@NatG zO|D!N%>@ljmQ~s|9+@|f zDAAaOu7@1zM99{Z0ExK@UV(R5sQi%2t>W3TFZqAK-40MI(AbCOt-#%_vA1KLhHI++ z6?gyrI<+~!L*3T zASZ+(Ea9MzJgg-P3tSi4lK-@AENHTwhJjmLZwRi2#bf_Y3NQUzt!@I#rf_Hd^OZNx z8ODe)U7eWY`{a9@n}=`vkk(%eB;5Z#zwSv^e0CyA0B&C zo9rsw$m3D5F<~B>x@-57?|t~o|JZzH&*;+3?%vB^GsoV(@0&-euU~nrdiVWL;g?EZ+V}3*6Bk~9g}1-9@3VCMx0gP* z>*pW;+3c>{Hr!wAK5~9?{>VFTwd{9)|N8ln7uP1A`t*-Rc25}~xM%Ml-)I`_>v#X| v!p4H}_x)d)`082uZ1vk$u=C9N$gh?@dgh0Z{As4R{7)Y{UVZuK6YKv3LakBk literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/bun_in_the_oven.png b/src/main/resources/assets/nnow/textures/items/bun_in_the_oven.png new file mode 100644 index 0000000000000000000000000000000000000000..7154f67bea7895e4246e5f7e6fc4185fe3453697 GIT binary patch literal 1918 zcmbVNTWl0n7@iu+rGPeGA`0j@NXn(NbLO(MJ0oi^yDiH>jd$f!oh^66%P&0m)yZ6HR`1$zMO^9EM%!chYK`eg2y-SEA zZ!aT=(m%A=HfLL8ldKqN4^)jf@?_H{Miaz_s;mi>cI1$8)TZeHYVzdg6sf5JYO6N_ zB4!XJwT9gmYT4ZsQ+Bs2l1f!QO>W4_m>`WDNM_S1-IlWfD#t71u{+IBWDerA2dEm? zAh|6PC4+{ANUukv6;|+)KFPz1ydX)HBnMbO1N;oj)2t{9K;}5Ia8cNrr6%O&P<_D` z{t8e@$1!Dw$z(E~4DT_lHinfXi2)qLaWqEIc9-tJEUnwCW*9=qRxHhQG(#s{Mi@6b zoB)ND=3PjeMOxi1gb4?X$wHH1J-~G-2UL|J&g`&KIpeCrpcG0Y-LWy2En>~2;TU$( zxD9o2`4$5>w2?^B#++Kx>7ohSsq4gU6aq3Q+KzRZh-pT)(P1g5t`o~#<$7bvK?_00 zuwsUhnn_f2Mlu-;x`~m&b+Yn>wZ4_CIq#QI-hJ_7d zb^Pr4a4;CPjD(iL3wHCyS~6T06j@2c;yr9mZX_ayb=!fug2JHyh2!JVG*uQ8KH!fd zmG*i$AB}v1NK0`5X}=)&y{eSpy^=7qKV&E!ZWXxu^9MpT6wL9DyadZD0+M{Rpg@-9 z{g@3Zyce^nfE5)^8jm*`L3>EiW1SrKV2!s{nr?olaaaWcL`!h*| zN$*f4c{8?=a5B(BHElR{cTTL+OT847{ zVce#aPYv_$tmW2bHLw{t?uzcP*pBf>v7sX!Q(L%QpY0nxK@cVD!l9a&fBe`RpY``f z%lA(WukG1!wlNe{&|8Pgzn(ZhQClg*pR2wxMD7}TqVCd()7`Ll`wnr>RrBEZ?-Qp% zrgY~o2cEq-Kbz@1xpMUK^~mBZZZ>VExj`R{H3nNq`l=q|6>DV$6q<~;+3JwXZjA+j|~uw z%lk?OPW4U>Yag#3KYp!59e)4NOXt7(k-s$hL;n|G?>+Tn^WOVeuK1?oOl$O~!{hr) zj-K0e|2$ZBR(Q2#re{q(no|N4MAc5&aiy}$0;<^CbV Mbxom>+MPXr13blleEN}v2e5Q*Z0f~bg3QffuS|(?D9{qJgmfbZS%Serk1HA(*zXRB0#Eyfo7=|P&A4p)uNIJDSObI8OItzs;#L2BU=De zkp!SoQ3twY=@!+Ys$i4n;u(y=z@cu4L&tOTJe+Ip7@}3Lymz*#A|ZNmFn-VBqc6rk zGXBRube%BIBc6+OF*bW;FWBZ|i#9H6^tL*6THaA`D%7pcvQXx}ZXlyiAq=KQGD{hc zolWf@uspX$gOC!QtA@o|X!tn56&li@n&<7nt8h*QmuSv+OI+x2*!Rnh)zBhWb4eBx z&!ky@%nQBhnCG+B^o9&FZ3!Z30~v`X5OFN6N)&)FA`vg!wu#Q1^y?|vkQH_-)x*9^ zcd=K~N>RZQwG~Z{9HB?6&?E`yx+wq&lW2h|RuEd?xo?a{>p%h$fbg`1=1&|#v2?|y_W z_C}r!`wDqJB9kQ!F_z*?KDUY6mOq*G>)plt?5_^cCJ7*1rFN z-DsQORuq4n5I6hg^1p8Nt~lwJluKt0GVe}rzJB!A&px?y{!exFO1P6ePR~rjEz5rX z`r@OjuWfI7%bo7~`@h<;p@FH^?jw6fIyxuFZlz^pG}%Fd>4$5>n^%mc!|$J%Tz~rL z#M#8aKYz4W^q%VnX09FE^VK(pZeNyX?uXOx-`3CHd@udw#~Y7q+wxmy@9~8Fi(UGC cXV1NMy5{s3=Y~Js9??zo6$c9E-r05d32A({`Tzg` delta 466 zcmeB_c*#4#f{FFlMk{fq$xoPydChco3 z!&FZf#}JFtXD46eZBXEG+14$3^_aMK8^H`tkR>0Y+3YmnC` z_f299{yl;M$DlhqoI8#`%e}Hmi@`T3u~chccFo$; aC5(Uf&0g7KGS?pHLIzJ)KbLh*2~7Z8=9CBk diff --git a/src/main/resources/assets/nnow/textures/items/diamond_hammer.png b/src/main/resources/assets/nnow/textures/items/diamond_hammer.png deleted file mode 100644 index 7ab48b80bf845d102bbba37a4f2613c08408577b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2434 zcmb_eO^g&p6mDEHBH1ONCIS*^8e=fh(^b{~9fsXuW?{!L%Ve2^#dxr~x_Y+VneMT> zcW0Ih?1G>kj2AV^MTs|w(USxZ2zn)Y)TmL=iyFj)U=U;0>iJ_Z3vP&$^mKLitM7g9 zd+$}%%cb!>L#sEg<~VMsFqWTS_qEBjD#iXcUt7fN_CS5?V8n5cT}ZAK{+Ba5Id0Wn zuRIw~7WY~tsHL$J*fia&)tNQN?HF#>F`1?@Z_|qBXN0StoD+D@$p{D3A}H2#bjlk$ z6w>{N#>?c;G%+1vcqhN3X)%BrjWOS>RsG0nW`q{5#m32NN#I*1@pMMWCJy<@Vu{ZM zA?4MyCK9Nqyl$qUCM%}7oksu~5-=nvi%_!^U?IeJegg9rI<7U5-`(-Wo-)Ez9M>&L zYBU<@hMW$ z!TM20CMKBF#B~X#K@w8S&>=m$`b=1DId_OetF%V_IAXT2XIq~N;vkv|?f~8Ue47I% zZL!$%u_TvTt>+?&M`u|W9YL0~j>>a&DoxNRmq%VgM@?8c4AB7^#ky^ahV3YfnnFZdL%QffQ*~9-(Pb(pm4C}~7bVN$i&)a5 zPG{}HmCmT@?Od9)>M9ydNUOSHhyW^7#Dpnl=qgr;4Rl#`c1TH6F^G1*-VsZaflI0D zh%!`FQKw7*gQ%{kU`nB3Yo?;B%f-S7yRykr0|-lqY%+2t)>%eX3;=aX_h4k}kMcbB6y1T}$cDBa6MDw|hI{WDhJ)QVg2V0mV zD^o@wNlQ{k=)CrpsK{mIzB9iuMH%Q_`n2sm3f#DXLz=Cy>RrxKAl-?7glF&0UWS^Z zst}8|ida+G3S=Xwir8?mt*We^T-La4TK()*)-B1>0SybP-KFCm*>~W{6!t5WZFZ7y z@9`{eeOM}bfHJ(B#)xymx#9cPg7Y`qS?lfAF5TIsDnaHK$ANXE?}_>B8(>eK3RZ}*yq9=`b1;K;{s@go}d=Eapm wocH+GZai@0=acb8Ffg()yWUxQFjZPuffv(%yncALmYk9bqvQDxc0IT74|?(u!~g&Q diff --git a/src/main/resources/assets/nnow/textures/items/clay_dust.png b/src/main/resources/assets/nnow/textures/items/dusts/clay_dust.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/clay_dust.png rename to src/main/resources/assets/nnow/textures/items/dusts/clay_dust.png diff --git a/src/main/resources/assets/nnow/textures/items/dirt_dust.png b/src/main/resources/assets/nnow/textures/items/dusts/dirt_dust.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/dirt_dust.png rename to src/main/resources/assets/nnow/textures/items/dusts/dirt_dust.png diff --git a/src/main/resources/assets/nnow/textures/items/gravel_dust.png b/src/main/resources/assets/nnow/textures/items/dusts/gravel_dust.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/gravel_dust.png rename to src/main/resources/assets/nnow/textures/items/dusts/gravel_dust.png diff --git a/src/main/resources/assets/nnow/textures/items/sand_dust.png b/src/main/resources/assets/nnow/textures/items/dusts/sand_dust.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/sand_dust.png rename to src/main/resources/assets/nnow/textures/items/dusts/sand_dust.png diff --git a/src/main/resources/assets/nnow/textures/items/stone_dust.png b/src/main/resources/assets/nnow/textures/items/dusts/stone_dust.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/stone_dust.png rename to src/main/resources/assets/nnow/textures/items/dusts/stone_dust.png diff --git a/src/main/resources/assets/nnow/textures/items/ender_bag.png b/src/main/resources/assets/nnow/textures/items/ender_bag.png new file mode 100644 index 0000000000000000000000000000000000000000..fc184a6dddb6a50ebff84e735d9b5fc47a2db96b GIT binary patch literal 3003 zcmcImaflpO8K3iHn;yB`8Z?}-*y)6rO7eEzym|BHz3FW)cYD{|X*azlS8^7i_vXDf zcf;-OYYfLv{VbFNNMRmMhjLfYFibw5E1-G8lkADlp;ZD&o_H} z*F-LHDY)$J%)I&D@B4k<_xnEHqcca33=ZraFbrdGdTQdBz83Wl?kMR0;RpV8LSJrf zPJJOYjMBdR*Vle#^ps%?d_10=%jT+g2O_DLxJ*J-YS)|E+Au~&+f6Q(RAz>1A#Rkd zzyIjRmKn>kb;7H{YO|sik_{TS{6Bw!;{+A+iwy+5)62jf}TJBi*-&FriY> zikn%SG|U{4hsnvTY-y$&A=H~&u#L2vCY><5&6~DUf_X@rhSlngP3!e7>ol7@rM-0d zZVQ~wt~8Z>Or^=mmQa(YR3qEB>8!b!WJ$W1T!-7%>uVTFvE{INvQ_J(M+#fjR9$1I z+ScjtYX+5;;#ty~O_JJXp=LHcnw3gk7-rsnB5ufJIsI%-s=G%`@Jy901Q7&~>hCPl zRfB2lfX+3>iHxI_UQDaiV7ifJydl)|MA_1$N^vX$CUD3Y zWWd$B0)%1(sK+5tQZhe+ic!fsy!8HwM4Zf%k?-G7u1ti+*h*;NMvxMOIUu1I0w3jQ zL}EY~gv^bU1F^S>c26tT&BJR~qvounMwCoAJW?D;rd%Ki_CbhA2)qbGFLJ05QD~VT z_^l+hq*YC%&aQj)`gEl-(@LVareCDTj*OerlNI7HLI5f`mMKLLC9OKwT8ry^LD|j5 zLauyGLx(#Rr@G85-CjDb9_-%LVzVRAfQ!5@%9h9lp`_Jaj<-p3Zvkz|6lC8 z$rX#dv7q#*wXF{yPj8~Xel@OX!w*@F?c=fYA-f?p`@dEAf!sG+W=uD8uFS$G zRpUFi?@%ZpRMc|-K{N!|#{zKd65#qYBv4`^B0kb#QH%cy_dEm~ z;V9-K>Jz1U#llhO`6%=OaYGL<4~KvvgaH&t;>d?ekg!)Qie2hJNkAx72=smmc<6*W z#whZU@4HI&jK#UH$1Bv0=qMj}So2~YBOq^8i8&F}6}|Ejh;k|@(L>)8z!eySkaMQh z;UPV+mFEi9E0#o2D5)O#iV_77!xAtIi9Vu47D%&^t@|yp-Q=9n|#0)=^J2^w4SPgWULAFT89R zebwoSvDv9Xab={O3b#=s4W<498 zoyJmuuf6o*Cs%KIc5ZNW^42Nmhka({QDR(v;PHcphcEA68@{)&+Whlh?|-4N_WAj~ zw}1DC!Z&}ejL+@<**Sjmz>@j2EIu-xUAV)ZdEz@q-Z=Y{xlcbOzW#duu# z$Nb*D-9KIZ<;B-t{Zw&uf8qOm7e~%Nc}wNXE3077{I~Rm-@G$_{;`|>^p`i@|I&R2 z9)9q>ceCHV-d`-l?;hGw5XEl~_s=|W;aA4fFS+;ay#4;ihKBlQ+Qs@SI}QyQ;|GT- Ui&v`e<;Uyk$)gj`kIz5+ALN6=bN~PV literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/ender_bag.png.mcmeta b/src/main/resources/assets/nnow/textures/items/ender_bag.png.mcmeta new file mode 100644 index 0000000..a1eac6e --- /dev/null +++ b/src/main/resources/assets/nnow/textures/items/ender_bag.png.mcmeta @@ -0,0 +1,66 @@ +{ + "animation": { + "frametime": 1, + "frames": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 2, + 2, + 2, + 2, + 2, + 1 + ] + } +} diff --git a/src/main/resources/assets/nnow/textures/items/food/bowl_of_weetabix.png b/src/main/resources/assets/nnow/textures/items/food/bowl_of_weetabix.png new file mode 100644 index 0000000000000000000000000000000000000000..6706be0395de2f48f9ab191980926e871745a343 GIT binary patch literal 2006 zcmbVNTWs4@7YvMRg`e5*hOB3a$+uPZJ-!49!Y_e9mfS@ zWZuDJ^P^d9ep*uyGtf`>Ra8Py!XBh6rK0Jol^9dyRmnJ*<`}vP@up+UU|^7*NTunx z=@lse+lwMi@yvzZa+?C8i$LxgiX&SSiXt13zlcO1?vXX&E@M1 zkkF=5O&cp}DV3TgTyJ=mxKR(tifA`GXJamdU2DeC@bD~=*%NqUt8oWI&vLSsRcs_G z-H=Sj<3VB+`mS-qL{{0oyJZhfKo7?l0SJHv5-Uhq5LLsxD#-T$UIm~AOqFR1Jb2{7*2_RNZn)koatrU>alXs0+8wC*$$7 zW9debEV!B7Lv(UDF7b*)#E1B*+*C?Unyv>;4JQ*ZhQudi7)ZrJScf^{B(Gr1%0P^; zIfN9J=S7J}B8o;qw6Q;7X){3;1p8|Zfh>)1T$88dKtzrLo`t$3kZKn-RslJY)esqr z5g-FWXs|u#7^Ej*v6VGYg$N^&06`?Gu)2Z;7DPmeg-DCC0B?$$eN2#lyz1UL zowe#(%jdNLC*SN~*gP!AOY^wFCZTr7Ve<1G&%I0zqD#rdU{=0ayW;x;?YA$%9Xr#n z;zP{a`uuPH+=Yw&*XP#nr81S`L%;avPK|KJ$-Acm6f-LI0orj}MQ(`}BKzmyVqR)Eiw-MZeg1 z_1QDs;K=2}=X1NJj(>S|`P&2A4-Hb2r!Rc9&p)oX+d>@o`Q?G$vx_@VFAVMf+yD6R z(Wzm&lYR!I=$oE@CzEgQUifKU7f4@P-@Vw`Gu`p#Cy!Gb7Pc;ck@ge%lDy}Z(e|^Q iL*F0xW})rOX6m&U4&L|aTkp38CvS3iG;wTbYVjZMK$4;W literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/weetabix.png b/src/main/resources/assets/nnow/textures/items/food/weetabix.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/weetabix.png rename to src/main/resources/assets/nnow/textures/items/food/weetabix.png diff --git a/src/main/resources/assets/nnow/textures/items/golden_spade.png b/src/main/resources/assets/nnow/textures/items/golden_spade.png deleted file mode 100644 index 75fa4dab8fd0d0d31992ab278e9d1e8eb10bc6bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3342 zcmcgvO>Epm6m|fWwj@&CCoVmt3PK=pqC!0&4sd`QP{akPpz^#w?iMA@LV=Zb*Y>{o z-uK@7-kaIiCnt^#?A*Ik5QKs8vFa3j@6O-bx54LAzuuwnwId#TF%^Wz2J?5H@b)`H zg3!M!n4ZaIYR4TGHA>WrTwYpk#9%E5hlZD9%I0|{x_mYW%hJ!+)+90T%F-#lhHG(! z&jn*=5`OZ`#56lI&umW`J}e$ub^xHkGb%1O>S5|Em!&4I1K0UuSrVHj*?d_V$sLL_ zwMnrOC0x`?24V`)Mbj=RhDL1rc~QlRC1XogG^7{~!H%km?Uw}J63=(0sz=+t;I1sq zWm)XV^3u{$X-O+Z$*io{wk=~-R#gNRC|wCNx{Shfe+Qw;QDM&TmOMi(KBc0x9^PN!F5E>H0^T1XflT?Cr@JJF=s6u+C#9+rc7 zb8+lc5>B%ynU11*r^=I^c*RO3uc|E`JQajqw3I%ZJ8ZAvRhsd#q+%5#Y#`N`#-^hw zj%q!J6$j&%X)W>sf2G^hL|B`~wgVc`wR=oKavsg-mc|}){3vNqNLbLIvs{kDSxGF) z;8db|lz?Mkr*%IcuT&zNaNH(HX{bI7{^HUTvOF4 z@Kv5rpJM}N?jdMOl)Lvl>wHia>FEyQnzO;pBOynrJKY;SRouy1{JkT zo$AcRrlxznVi_9tIrlxJDY}kK4l!Cx_Yt9-E0$~6#MFDmqAK+@Tk{cSrjIlm$l25c zrRfx7rue>T_`PCzkX+C52;!E(k!k}kn?TEf?1-w{m=V^^t67CsN#*<3zB!|uu^`vN zO1o+&`AbFp#O7FXD9gufSz`I9;GWce9Bj}jJ!!JNerb*a=zZo#%X=F6*%D3o$SibK zFC$9clz$X1@}w(*m?ji9I-aCu$xot&Sd0@fi$og7^?=blc6l-M+M7v{QE5{@DP6pO zmWXe7K1dV!icgS2paERfqR3RKW-A)AG?#a>+?}Ojbn1?-bVlbt%u>4uY>tMr98L=I z1H_~GpipM(h*RA_)F3)?DP=GzUDePO-@v#~&4%%GZw3E-JZwuHY*G4L9fedj&zr}S zpi2qeYAYy+P2K%F{LR-&PMa6S0%#v z$ANvh*s1^4p4#>wJ?P$?50GZyU5DDvBRDDNm&FksZi+)b520TZIKtmrw^rf!|NeM& zWZGI~zumbr{P5F5YX_bnpI&(7*2}xYi;v%qu739D`l|y%@cZqx{tx$zo%`j3Yo*iY zUO2y-3m1M^`Yx`#rVACV|Bde-dh5sPzHftPcCH_sICit&6ds9(ZVi8O;-|IqPnt7> z$F+l}ckC5zd~^BAuABXXm5=va?fcvqeDl(!f$P5Z<+e+%cA-yPeedgw^!gX8?;e;x ozfZWaeO){^^pS9O+vM3kw(s&Et6z;>%m1;Ak4{vt965dVPcg?gwEzGB diff --git a/src/main/resources/assets/nnow/textures/items/hammers/diamond_hammer.png b/src/main/resources/assets/nnow/textures/items/hammers/diamond_hammer.png new file mode 100644 index 0000000000000000000000000000000000000000..833e9912a7f8e13ea431bdb5f68f5e89775996ab GIT binary patch literal 4011 zcmd5+6G{XiZmDSM?V+w|6&ln_bCVmc5PHgFK|VK6aa( znI5})cjxx$OyYy0kmy?kQINa{5`9d9VuTn$A$dvg&5swKR1hHu$>rZYGre=k?(GsU z;=oMzRQ>D!`Kw?3>su>VA3k;egZDQYjZ@1@omF@~P=4o5!ta@X-4gJ)Z@6?lZ#2H} zYWclq@W%FqM&tC4leP6?z57Tc(|%K^G}g^ge+bfz#`%TOP{=J^Sh3zn1}*y^FaOH6 z64kOF=Uv<#w)JMRw3q2?dso-w-j)oNy>P)gKZ-y>Ul+m}^?QRn8nx_7Zv^k$Z_3nz*PBU%sriUb9-15UF@mv;$U$H1AfrA5wxQKWW!x5#{IsKZn&NGD&tBzx~KbkP~;#>YT4mt zTBP}AdWh2@adl^t;N+%%fJ zSk?RaJjQYmuNN1IIb>})b6Ze)lpG>j&eWpAsGVt1q}f`U_NLfbnP$;yw@a*q))ya7 z1}fdnzf^`XS))6m&@G!{iV2t=gy8Vx7#aOYLXsI`PYXYeQ4lMJ6k!s@9`%tSAvZi!zN;bp5*ZPw0hdI%7h5)jS`Dt32<>f;2Pv*T z4k;fKf$K*J?9V?oNT3>!gc4oj0$c;4gG7V1YHTGL>E3!Lf!yR{Hz3IUnd`UD01NFW zY#RI}C`%4l%_kgnS!_(+ddY=@bIqYv8dHY2&jN%A(@01tc;IuvWsH57tMg7tPoQGV ze241tTx_&93b}-HYO|0xFW`ADJgS)W0IX~`s;O` ztcnXGA;%DsC6j1nPll5NHq!ARJ65~9sR68apqH^&o|{pEBM@^nRjVZi>N%hPJ`6 zKYBb=bFE{aB9{q>f&d7EzyPhel*NJc0w(=~BxAfqRbVsM6OaCDPEGF4mASSBV4(z@+mtgo&!6F zkAEN4MW6aKi--ybM?kGaV-3x_fxEk7@5nkGukHCT-+labs?MZ>^-~pnbte=7vK6$Z|?OcA9!u6@sfG&)ThY&ueWY4 zJ%PV%e)!A9`S#r2J!caZZ*!f=N|l1^3Z=4e)H(x7hXDRdF$>4=O){I z;itFWe)g{?lbbJ}c;R!Y^=j{A^4dR7|K5D|qTl$VdF2~V|Do}O_i5Jn$#d!lZ=Py= r^7QYX7bkDBr||36FXn%A;@-yM_s@8X-)!pgI=y`5YUgK{pM2_l-Et0) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/hammers/emerald_hammer.png b/src/main/resources/assets/nnow/textures/items/hammers/emerald_hammer.png new file mode 100644 index 0000000000000000000000000000000000000000..e86d531e290274d6c6976dfa67afdc7c60e99a6c GIT binary patch literal 4031 zcmd5 zZn}GS$G(slWF8U{7lcm{A(4;};@}%EMF9&Tp;dB;0+(FifW!e%kjMd8{_dG+kIAlg z6&%D!Gu>15*Z=(LtG~X!eEEqJ4}bJw!!S-PEp}Jnd8+z8bR2#^{^lNs$NRFytA$}a z`its2H+*&LykVStK3QEW*LqJzA|152Ok>p=4Kk26jB^)885f(XG-I`%4BOV9fBKST zCbDfk&3d?(b<{?(cs*BFu3ugi*EdBdtqbSPbE60p3{=U@(V#ypqEXwb^+xbs4cnGk zitbclT>mP;M2 zbRVDCf`4smqb#$?ws&@RT02fF&DU)bhM|qAO(_BiR9qXDe1wL@V^a-XRfs&v$|N0{ zl|~+?TV>ke*n>3a-7YJ0uL#=gD`291fLT-b&%CJEVBx>&uIDSJf~=~gb(!Zx`1*fg4= zTv2!Pd4%O4-YhN?eZbmk=ANL`C^qA1W+Gq|?!WYF$!YoB1v39rx(Vc_7`x%k&Ro5B23Y8B z!luDrgt8QX)ndX?m-zbRt)HCVKi5pVp2E~c%y$EXiK`G7Q1HNKoQW9w4wL8Xik?8l znE4LWo^1tBQ z_xIi*o@9)06f>%kj9mh6gdrYi9y11b(y-y)?ma^o7>`9HhzOf9-aGVuqF!w9;ktsh z!M5IcJXA5IVxJ<%*W81K>Re4ld4QjAH3A&!;LRzS=LI zeLIJDe;+kPpZYY5h#CinK&?V!1I-74y9Z`PWdG+WHU8fn zZ{o)*TBv*OXutF5s7Qn+Jc2gvkj4)BLSHJ_ofM7(#IYNqKvC$*1c2J}UBP+1Pb+Qd zf7{qqv|p!T=AJbjg3DX=+T0r9Pjl~7LpU{ZxK;lCxjg|l(mPAti>tx=#anxO7ml?| zr}KfEdmZw*`IFfr#>$JCed>pgEbhH`?#$`4Ctv^SD~8_9@!M0k^hb`L&V8f*(Bh-tpS$sG`qqiLpM2%JbIPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0i8)iK~y+TrBiE50#Oj%KPX#Pe7rt)CaKxol`vqtp2{KR}X3KHiQf;c!n#cuHktT}t+F*-J87XqO$qOrKu z7(wym4EIkBRBCm>mH8k-k)^mji9C$ugp5bh;b{raoi6Gx9n_j_Jhs~M&YU90=NCw2 zvY-(~G_OB^+|HgfwR<1vynmwA?V<7dCL$!=Jk)SmH8DOhi5cH4ymNj`&3NDo%tH$s zF=^y}Br-SaO(B(UtFr&J$19OWtJxfqYZ;J7F^wu}-28qKrRzIzD!LHa?ShcfxhQYg8`ZRB%x-Wq}Vr0;0vD|!4+605?Y~BgX3cdzBmu_6Q;C|C3&7Y^l zB$(2X*`OK0$Z;TtiE+Y>uanIs_~LE&pWS{XZDdpTkLL`VG{YnY&OG4q4a~>QoKpi$6`4gGBdQo$^*A0}GMT}^%*@bZ+&pLQ*7NbP0l+XkK DfX8=8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/ingots/copper_ingot.png b/src/main/resources/assets/nnow/textures/items/ingots/copper_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..959acf2a55ed32e0f50801aa4db8577020e2a2ab GIT binary patch literal 723 zcmV;^0xbQBP)<{97<5HgbW?9;ba!ELWdLwtX>N2bZe?^J zG%heMIczh2P5=M`QAtEWR5(wiQ%g^iQ4qaJs}wLSTq^P?QW|J&q137^4|x`GtK=1YZvF6 zxpVKCIrH5+>f5s${{^+S{6nq0Ur+#4>gQLnjM1il|5EAHs^QaW{7tW^)b~$HnM@{S zHk(zhWwXk&2-Q{?O5_vXTPgBLx*2W7+pB|k zeL0R-(^0&*IDmzjA@P~y*3ovv15U6Ilc;8A3C?u*gp`~aMsjup$?KzdH#dy=OEDom z91r9ESTAa=g{Z42LX)EyyRF;Mva1xT$7_>n)8R%eUK


EvNNnuy>|B7_!u5dyXy zVkbKHV6fhWSc41XF_~hPms2r3zYxXwo&au-c7dwu?Zr~*bek8)nyQg#u0f*3BZ&DO z@*lXbnECGUZrnR{Ncv}g;|F}%!x_@aRu6_6+!)wbg-8ayK0CTSHj&RZ6n|X2(Jj>{ zLw@l|J`v1Tj@CIvZill>l=;gGr5(zbTj0Gj>ydy%s9p98bJ zG_O`aFUeXD*?Pz!z0e0adCN<0WbeN2bZe?^J zG%heMF*7s+TY3Nh0pCePK~y+TrIX!H+F%sM`*&)hi`m7p#H(Fwfe|)!TQ;XIAS@HV z76_wsl#j${)RkHgipDXOU{cEF0JA96;y$jQoxU|hlnaa(zqfr)&htE{Cn*QuPV_9^ z1}?l_?hD6c6wXNj*Xv!E>x}yZJoiR1;ftYkP=lH~#_Kt;%cM(SVF|{(0$%t;9F-a{ zjlXD}wb48^(IU#FI^3RU$Alej4^Ks&r4{#nGLdQggW3Ai;k@~q88m856x1JZz2lh) z=a}ZPC2N$>hCxl|BsQ8CwvbHPmqy0f1rn)UL_X&b2yS69tYGxzA~@#^kCTQ8MXsP; zYq4>yW(FCpuI@9T5HFyRuhJf>NJ|xb+0<-<$8RIdK-W&OovGraZh()e3_-L-`Ryul zS)HCbOw$5>f8BqJSJMQ3T2NTE+$ppiq-4CX@$=7KWg z!C1gHNTv=LYW_PC$s%M)gPhjbZi0LUfsllmg*Ci-pTdxH7Q-$dhMxNEC0d8Ihj?-y zV&WUb4oV0ryU1x2e}PBi~R%cKU&`B+m;JJYybcN07*qoM6N<$f(pP6761SM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/ingots/lead_ingot.png b/src/main/resources/assets/nnow/textures/items/ingots/lead_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb477896bd14b5d6dde83ea2210304aa685f366 GIT binary patch literal 662 zcmV;H0%`q;P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0tZP%K~y+TrBho^Q$Y~k)1EejpJ0Gq==GEq zPN6MrE!83vNr_?t#I)sBBcP$Js3^un9{`O6P4thM@JIsTg@hM?w|Tg^%eNwDQHOA0qC(ii0ElK;9glh#`LKTL4%9RO{(6P zd&oY4lbQQmxigw!x_&Ln%vv2jZinfU(7jXEh<=-^QzZf!H$!iL+G%xoPbps%<35QA zQKSAmzDQ#Z8e3Jhn~zIXZH%$m?7TJ;kR_T#ji%1QhWrQH&pmGz`ViYY`{M86Kl6ha w{?XB~__?(scJ~f={pN2bZe?^J zG%heMHD!e|WdHyHwMj%lR5(wiQ|l{(aTNaj2W!av|4}Y2V!|+Ea~-m^Hk#Pd+{)zx z3Q4{oxg?>8HjS2uFy)pa;e&j9KOLT<-`h+3Kt4S0Iq!MT^E~Hwew$DfKT%;b5s2o>Vw#y7qw(oMLQUJlkF@kuwP3ND z$lhE{m9|nQ9bW|L;Aoo>+F#>ZZDW->2|t=0bvzzOvx}2-_jpRtn?s7;M(F%1^7a0i zLu7t=io8A-!3ZLvq^yAYhy2|1{B}*R@3-{u5~cg6GZq0U9ND0q&Oq+*u$@ z1s5RD-@znbppE?9tqf1QllOq{0?O;#3$ztfqBrBVsgGzp3UWjDY!B!Q_YQPyAsEGs0?plul-)4h46Ur8bUW^wSuDTVa)djUr~F7=(KdEHv7Vo~ZB*Dy7mpQu7ub*x09b}R&OBPj!8^?I$hHkdmP zU$VKa1trSb-w4TRSJS9s>Q|OzGDlr)jK@#j>WsLge!M2DY1@{8X@rC{98-K48&csXB-R%T>$l9@z`mZqiLx-o$3=W!g^zN1&@3}6H{edjMA%SA=3vR=Fy9Z}=X zQf3i-{PvZ}7h_lzCW8Yn+10g0du-}n7?lTMC~gi6B6V`bp~I({Z8~8c6faP|rzd;~ zjuc9Vr|jEELtt3;pCB1Jc!oZE#iFKRA^!Vs{4Kx$31T1Hy*R&X00000NkvXXu0mjf DC4f+; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/ingots/platinum_ingot.png b/src/main/resources/assets/nnow/textures/items/ingots/platinum_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..e1abb464884817802c55bc245ff131f8a11074d2 GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1engNUb#V~B-+vV_%v{ae1-b2#rTIKZ@YBU1|R z!>hhL=jY#JH~gRfCNGVJn~8A_BlC$_Z-j&nZdtNLsafr@f7|Q-HxIVSL>bIyOyij0 zaGm861G7T!35L4@ZWEpz-MW-#v;2NW?S{;@OqNWCZMLCdEIM`H?WLWay|tNzJD4x= zOggYMa^^?zX8z0R8>A*2`w_Y~VQ0Gdc_k*nBo5}o)9Uvm*m($ZG&6Wy-lu+EqE9BC zR@V a8Tb{Zzu&O_&P8CLF?hQAxvXPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0rp8mK~y+TrBX>tTTvLj{~`o6sl&$pm3!=w&K6xQR z7A-E$y&vCuXZY^D3c$UPu=zib#b`9DloXRPnar{q3hl~bYwKf4WN~}E5|5{tB01Wx_}hf!ev>rKZJ3vkyvk^M6tGW zgvIYaVSVaAPQFF<(3^3zclD#CqYLCwOi|?^dX3%FON_jm!neo|Fjb!Ai8uuYN8s-Z z;#GeLoq+*Ci?3VGf!`ICmsU3rS>KWQIbZPgnEXgmZ)g}Vy90Qkxz;zgqNcGK&gwde z&oLAa&Z{ZXeQ0z-YLa_`L*ndd^Gn>)3YR3y&MTC07+-FI_fFO4tv+$56G{5b@C|UB ztenRZS-)-_v4_MYjK=wj?d9S|0{8UvjM(Ecn;*yvO-)U^E5IgWG8#{vJsmokLJ6Pp feUPyE?|`}i1_VLe-&Pmh00000NkvXXu0mjfLM|J= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/ingots/tin_ingot.png b/src/main/resources/assets/nnow/textures/items/ingots/tin_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..5d424b7438020fd7572138bea398ed97a4c33c3b GIT binary patch literal 488 zcmVP)?_j<6?|aKN5+^=kpO*zTa>6dcDLi^L#$# ze!mO53zL4+W;NC+wE4$ z<+AMed+or=X0tj2{M+rOGeHu7_!fr*f`Du`8_DHzIuC|KQc#R67^Kr_1%Zj>bGcmf z@N_zh2_;_0Ey?|P*yuiLcS?XYMx8inkFXUvtF efBzf51Q-A}%rNy(vT45n0000N2bZe?^J zG%heMHD!e|WdHyHhDk(0R5(wiQ(a2}Q4qavnzoA3Plyr|{2(`@Y>kLDGe}MAVQH}* zGIAwBgVN}!Ah06(!PB0JSytGGq=&O}ot<;e%-mHye-HnKz~nqop-@PL7s6^$iz+Rq zaYPRApEq}N1o(5n%nu+Ejj$ljLIUjGDcMeo&+;DN$I^1bOB8mpR4nI7FJ*QIr>1>Kwbniz`C!%!-UHq%C_lX2(s=6d{FtwKQT2-JmdTFhi9uy|R{%@_jKMoV z0o>b{$9x8{)^_1W2%=qCayqxh8GS(H4r~geW%yU>vxiWw~yF_q9PC#SjuV z5D?>unD=qT;=f-j;*0|ogULeX66YC?v(igTjQ)s;B?Mf&*mPU%z$v!t4QI9q38r6|G9}Gm+oq(7&u^od zg*}q){=CfN*tV?TtO3I%hDY9oh0TT@pEu{nOJ+SUX?Q9Zx4)6YWrm`HREmIyp@%Tg z{JA?SdmsL}xi?|o!i~l{4vK6IDh^Es&JGN*!aNOE8X0uv7%ZA7(c616GvV9EzrQ6P zZd6#O#1WRVa9!)e7=al#FEA~0WLP42%4G@j48?hjoeBRNc`Ua6v$0~KYU|u z?plkh8y{R+vvl=&1y$X{2acXSdf?2VPy5%d6kM(7v%{w?b6@dmvF1ICjGRMb|JG09 zabPDPgg&ebxsLQ0ObZ&bpQYW literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/nuggets/bismuth_nugget.png b/src/main/resources/assets/nnow/textures/items/nuggets/bismuth_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..3552d8200e7e03311556605ca2419d1f1d7b41c3 GIT binary patch literal 1280 zcmV+b1^@bqP)Hg1+lHrgWSWcKdPn90sKGrRqvPeo9CG3uKX#J{(IASm?@+di}}l?o-=)F3E6 zwD^Ni=!>T7nL9I?X}YoAW$t|Qo$sD|?zw001?ah|SeB6#0T!CBEf+H4bBB+JJu8re zhoBb*p;u8ID_yBf0ya+zcePvJL&AGs+11_tpRKn>9TgyPA7ZoSs0)aX0r00)%XR^J z`jH<$>RKN5V(7OqK*TS4xZz{h!*f1C3ECFkK$#7nA@pGN!$;%jYv zwjAKwmYb0gKL(K8-kPtb5${A?tlI~wzMrJ6wTdBr=Y%%%EaEMQ&o}4FQ^DA)s*}Z> z!FI&AHCpoWI|RUqx?7s@$8!5^Q=anY%X@i5{QA6kNcMelpE>R6eCYFpmMsVT zrI(b06~u#xf1yS}_UGdMvD``!0~u->P=lA4?YN`hilQ z|3tHka)7T{2CGqwjZfMwx$5irQN_*|e4l)UHmiYuz74Yp1t^#>hrJ3-SOXDcC_o0^ z7T9R1gAN8V6s;5)ieI5-7aQlmJn}lUna#nz!j%5V$X|o`xX!dHWQRV27P1=rj;t2b zW$~+pTw@bIek?ZvKPDL<64`^#UNTAck#RBsB6*5DP4<%UA_FqU$I>2EH_cM;u)Q~SI+rg`Rn{L z_AC5qq~L$#SMj%U$6Cz0vP{G5Y*=%5RT^yu;}-DInZ=349rJPVM6C3K^oO)8y(fJr{l>k`ead~!ea?NsT>_Ci%bnxC;Vy6= zb6>{xYV#Ue-+LB$7`JEXmTRm^AtP)R9u{)KHsMiWGV&)32xCG~*nyU<>-!d;FP=Re z4r3qYr~6#KE>;1F`>_J_P5xC?ROxV(DIHdCO*p$HRQI@7^PwV@Pvuf+ z5K}u-6REM(K@W$srgorh0{i?O)v0c>QtHxU-hBdD(>iYJ4b2sIOVX2K8m~4gmYVA5 zh^QEb$V`rCQ-|7ZS{nuL-t>?3n=-o(6I(7vocj#GzCZEo`!3>+v;dYIfPu#&ZWzzX z2i^rZ^Mu;6+rb@?NPG+6)c5T6zxpzGe*M(x+{AON=PiJ>H#?ob-|uwRK0yDg0B4PV z0id6JRRdfL?*IS*qDe$SR5%f1U>F6AxPl85d5GG`e$ZU{i5CGBMK7|a(E<#p^(*T$vA!%`jog22mxEM56 zFMw2mG=cy~vw#2>1H%h27lXiRz@oWbjQ@qc{*SW=g=ogmh7iDN074qV+H~v;!{WKP qV**`0oIhh?^?wkC3ydRnZ0000HFG?9tSRmw@`DHdtwDY_;W$!WT#7A8r$ zi6(}Yx~6H#DFy~978a?-X_NI>v{Z}@Qw&WFk`i^34UH^xjS@}FbS;xDQgzMDObt>E zj7=<)ED|@@uy``7Sf(1Ln46hd>LwW{C+Q|xnpo&285kMp8YP>gS|%GBCt4(?PM*jq zg6f#fTpTHkM7aj2l?T~plP%f9CbM&S5NB~Q*NyrW2be<`7#OlVT^vI!1e1UK|8LK% zIwMg+dV<~GC-nk;GiyHCpJZz=`I_@@d;ZIZ_5W{Q`+K+jyuci`HP*Zrd5kz(9M>t{ zZ1A*JoaJcZ$<|PC@sW0c_=GpCGqfGp8VvMqcN#Iw|IE3JIU=O*$`T(PHio1LziN2C THFg7SW$bP0l+XkK9hZbc delta 440 zcmca8{!n~FI5V%QuAxbYp@o%!g_W`K

HFG?9tSRmvtwh9-$=M!HEBhH1JM1|~ql z*uYfRDA^=6&CJZy)X2zuvL1_;in+0|rKPEfv95)siMei~g-Nn*k^xXlN~(FXd7^ou zsd@7?JcRqyOivaPY^y~tz4(Zc!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXJ~A~99;!ebkozt zF~q`uY5!TSCI^w$=WlC7YiC^(j7*q0%d4$Wv+=CoE3P}|(o6mx-TmbAe_rio zm2mbCJ7NRgWv!XczGI=v(o|E&8m@WYwO1_)yexB(J2)sROqiwDdR|_@RNil{y>U|x zeYP<>?WHB*TeN1H`c|jrKK+Lle6v$kMSo=Vmed`|30rJCWkc@lvzsPybvVvhcy)R~ lY`BEzi~|ri)w4fh{rvPp=khy~UI0DG;OXk;vd$@?2>{^7f)xM& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/lapis_nugget.png b/src/main/resources/assets/nnow/textures/items/nuggets/lapis_nugget.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/lapis_nugget.png rename to src/main/resources/assets/nnow/textures/items/nuggets/lapis_nugget.png diff --git a/src/main/resources/assets/nnow/textures/items/nuggets/lead_nugget.png b/src/main/resources/assets/nnow/textures/items/nuggets/lead_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..211b4fdec2925da11f4e83f5b4cf458c122633b6 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkEEr|n)}9?IQ$kArAHMND zFaFrdKGx}Jp{2EKnUSe%Vq#`(wmdxl3ndS=oKBhXto{3XZeqLVE z;}g@Bo&Q6xewDP_Q-Aiu-{0YEllC3}f)5Y>X7AZ1{FZf7SG$sxqzGl2Rex`Rgi$hp%a^kFh8M|W()~q@(VS>!p`6|p4 z4lZ^-FX8ct>B{;4u{Lic;%w@Ve)#=dpKa3K13>WM(NFC?+l1e;ZgQ+hxlkX|XwC(+ ZT>GMWzu+U*0H8A%JYD@<);T3K0RT3(PS^kd literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/nuggets/osmium_nugget.png b/src/main/resources/assets/nnow/textures/items/nuggets/osmium_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..15b0d3962b23da83aa957b4a71f9b1bc98430341 GIT binary patch literal 219 zcmV<103`p3P)%T6**U%-l*vNo{hJI~(y&njpj zBOLOZ|8LoM<^Q5}C;q2olM#?bWj+5(8(06|viIWuf^ri4j|{SkoBkJ7lj!#m2mlyf VUp}qX;I;q&002ovPDHLkV1hfTYgYgO literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/nuggets/platinum_nugget.png b/src/main/resources/assets/nnow/textures/items/nuggets/platinum_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..8e11b8cac5c4e1c89d2a39aa1638bd13d81ac099 GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85o4Xn6XD`Cp%EE&C|s(#KJ#Wf|aKyK#IBI$nn4JMv`SZF)hKe zVGNh{JpXm}|8x1hY?r?|HWnPdz$iTB7{j4EP6fXX+$!bS!E-Q^fk)y*mx0f%o$RL$ zvsmylWVU41{eQ?CA|jk%${><4kMko>b^e`0t0h@Dsu)?mt&cidP;j^EQW6u3!^TE^ gHaA8N0|N#IWo~_bMP-FTpovxEK%rJo7sn8b)5!@EtUWta7CoBu@9>S& zVrP?8PF`8DW6A&1W;y@=zx)3G|M~rY{>x9E@kxGqlv<3C+&wuS`+6gTH}^L;JH`gj zW}L3*b7aSh-{0R`Je{$TGj3nSzKw3x^3IzSu3gHV4|EWNr>mdKI;Vst0Ho$%ivR!s literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/nuggets/tin_nugget.png b/src/main/resources/assets/nnow/textures/items/nuggets/tin_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..7de6e83c75cf9e5f8af081bc8ce7c4ea0ce176b6 GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6{5@S9Lo`Is9yH`?c3@yR@b~}x zCN`GfN{-A+zZpF_a)($X?><>&pIsQAAADitm2kS)fq0r;B5V#p&b(3D%w+Dm-Vl{6Bm{ z+%NX%%0AZVX|=_=Y?h*uY-(z0Y+_;4{-^iF9m(Pl)|;F-Oa4yP2?agXLkUT1|Ib%p zo^bH``TG(cpO~(k|Nr&uR*8FiDvp16`q`Xq(%u6=@Zs4}>pk0q-?DCMY@GS6KBm!} b3+M;SaJ4BdY*KPSXE1oW`njxgN@xNA?$}jq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/wooden_nugget.png b/src/main/resources/assets/nnow/textures/items/nuggets/wooden_nugget.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/wooden_nugget.png rename to src/main/resources/assets/nnow/textures/items/nuggets/wooden_nugget.png diff --git a/src/main/resources/assets/nnow/textures/items/nuggets/zinc_nugget.png b/src/main/resources/assets/nnow/textures/items/nuggets/zinc_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..89cdec7fd6515e6ae93f0ab1164388d9e8fe33e4 GIT binary patch literal 1311 zcmV+)1>pLLP)004&%004{)008-u004yL004V}008TC002L<001Ibb!%Rn000CS zX+uL$YePpvZ)|UJQ*dEpWk+RhWpZg_Qb$4n07%D;Rb6NtRTMtEb7vzY&QokOg>Hg1+lHrgWSWcKdPn90mIGrRqvPeo9CG3uKX#J{(IASm?@+di}} zl?o-=)F3E6wD^Ni=!>T7nL9I?X}YoAW$t|Qo$sD|?zw001?agdTb7;_0Tv9`mWo;N zxx+`qo)t*KL(mI@&?_sBm8n)I0h_0VyV|YqA>qBR?CNg+&(>R~jslRl53yNylm*1c z0Ql32WxE((Kl0;8UCYB>4E;6+i1k@e<;ZxftJ! zVLt}e`is<{wx)<)E~>WK&~zFL_a5f|*%tIxINvsW`keXcL--!XwZBrA^Bx{Wyrjs5 zX~d5pzSh=eD*?W3xmgMEV*ttRt@&C8@lM30hJB#s`$^hrs}$mQPN*}_BHn`dyfIgq z3dUYloE+v1wj;i+(z2J|AplO)-13Y+mfLTe(v&|h*QnEc!OJ7!*XPYclJArI%xO;- zLZ2tpTqWQyy(Ay3A|6Ei3)PE~KNt6pW%bUz7Q`&a?{ThCYH8 zvMT(JtQynh@T-Mfa}z&)EH?r_CK(`UvIn2NWRmP7<75Iv@)UWR>?e6-C&=FQvDMg$ zym)S``*|5>q)a!9x^rlELB{@PRG7G?u31?eYz;@2Q}zp*a`}zFV!6^-ZlY|(Gdgvz zob$i(*ZF1aSNPRP!T-pw;&0`SwU~EhnTFZfu;%Wn4BB+YE#RXuixZ1G=HueYuO5v2 zER!?OU+KGevSBO^My!_w`fBA?1x}4bZ2E`vAL-@vd+86;zj1GKpK@PwpL1Vumq6ss za_6{jxC`9J+?TPv+PsF=_nt)_#_d_UD9hlRYbO?Xt8jQj}$!kADJcA#bJ z`o6{Ii)T-R!`O%U={}dQi&a44eyjj(lYdnWRT>;+N{7{(0mnCJf{|p1jFIw&>K^xM zK2)R%seCE}VrpkpFaY;l$R5(v#7zGTB zP#ObxhXnqIG8wk6S&vg4RshnxVb|9GFTQ^GfAaFV|Hy`+112bq6+FCmk3n8Zi6J#D z1;s_k0IvZsASo#cWsv|tHcnqShcYjG`SOL~+_`g59(F*K7sv)6r{i<}C;$Nl1^`{W VE8-etL&N|8002ovPDHLkV1m5?ZdU*R literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/nnow/textures/items/barley.png b/src/main/resources/assets/nnow/textures/items/old/barley.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/barley.png rename to src/main/resources/assets/nnow/textures/items/old/barley.png diff --git a/src/main/resources/assets/nnow/textures/items/barley_seeds.png b/src/main/resources/assets/nnow/textures/items/old/barley_seeds.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/barley_seeds.png rename to src/main/resources/assets/nnow/textures/items/old/barley_seeds.png diff --git a/src/main/resources/assets/nnow/textures/items/pepper.png b/src/main/resources/assets/nnow/textures/items/old/pepper.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/pepper.png rename to src/main/resources/assets/nnow/textures/items/old/pepper.png diff --git a/src/main/resources/assets/nnow/textures/items/pepper_seeds.png b/src/main/resources/assets/nnow/textures/items/old/pepper_seeds.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/pepper_seeds.png rename to src/main/resources/assets/nnow/textures/items/old/pepper_seeds.png diff --git a/src/main/resources/assets/nnow/textures/items/diamond_spade.png b/src/main/resources/assets/nnow/textures/items/spades/diamond_spade.png similarity index 100% rename from src/main/resources/assets/nnow/textures/items/diamond_spade.png rename to src/main/resources/assets/nnow/textures/items/spades/diamond_spade.png diff --git a/src/main/resources/assets/nnow/textures/items/spades/emerald_spade.png b/src/main/resources/assets/nnow/textures/items/spades/emerald_spade.png new file mode 100644 index 0000000000000000000000000000000000000000..7f766456ac242872bb3fc358fa44d87086614d30 GIT binary patch literal 3610 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 r`TEsl{l0CJ<9uxW