From 4c5dea17568c748fe398dfc4d97374143cce93ba Mon Sep 17 00:00:00 2001 From: Jottyfan Date: Sat, 30 Nov 2024 18:50:09 +0100 Subject: [PATCH] upgrade to 1.21.3 --- build.gradle | 4 +- gradle.properties | 10 +- gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 7 +- gradlew.bat | 2 + .../de/jottyfan/quickiemod/QuickieMod.java | 31 ---- .../jottyfan/quickiemod/QuickieModClient.java | 26 ---- .../de/jottyfan/quickiemod/Quickiemod.java | 73 ++++++++++ .../jottyfan/quickiemod/QuickiemodClient.java | 20 +++ ...ator.java => QuickiemodDataGenerator.java} | 10 +- .../jottyfan/quickiemod/api/Neighborhood.java | 84 ----------- .../quickiemod/api/NeighborhoodBean.java | 77 ---------- .../block/AbstractIdentifiedBlock.java | 25 ++++ .../BlockBreakByTool.java} | 19 +-- .../{blocks => block}/BlockDirtSalpeter.java | 16 ++- .../jottyfan/quickiemod/block/BlockDrill.java | 112 +++++++++++++++ .../BlockEmptyLavahoarder.java | 59 ++++---- .../{blocks => block}/BlockItemhoarder.java | 13 +- .../quickiemod/block/BlockLavahoarder.java | 135 ++++++++++++++++++ .../quickiemod/block/BlockMonsterhoarder.java | 89 ++++++++++++ .../block/BlockOreDeepslateSulphor.java | 33 +++++ .../block/BlockOreNetherSulphor.java | 33 +++++ .../quickiemod/block/BlockOreSalpeter.java | 34 +++++ .../BlockOreSandSalpeter.java | 17 ++- .../quickiemod/block/BlockOreSulphor.java | 33 +++++ .../BlockPlant.java} | 31 ++-- .../BlockPowder.java} | 19 ++- .../{blocks => block}/BlockSandSalpeter.java | 17 ++- .../quickiemod/block/BlockSlippery.java | 22 +++ .../BlockStacker.java} | 62 ++++---- .../jottyfan/quickiemod/block/ModBlocks.java | 132 +++++++++++++++++ .../quickiemod/block/StandardBlock.java | 16 +++ .../help/IntProviderHelper.java | 2 +- .../blockentity/BlockEntityTypes.java | 37 ----- .../blockentity/BlockMonsterhoarder.java | 64 --------- .../blockentity/BlockStackerEntity.java | 16 +-- .../blockentity/DrillBlockDownEntity.java | 62 -------- .../blockentity/DrillBlockEastEntity.java | 36 ----- .../blockentity/DrillBlockEntity.java | 96 +++++++++++-- .../blockentity/DrillBlockNorthEntity.java | 36 ----- .../blockentity/DrillBlockSouthEntity.java | 35 ----- .../blockentity/DrillBlockWestEntity.java | 36 ----- .../EmptyLavaHoarderBlockEntity.java | 84 ----------- .../blockentity/ItemHoarderBlockEntity.java | 10 +- .../blockentity/ModBlockentity.java | 31 ++++ .../MonsterHoarderBlockEntity.java | 51 ------- .../quickiemod/blocks/BlockCanolaplant.java | 66 --------- .../quickiemod/blocks/BlockDrillDown.java | 61 -------- .../quickiemod/blocks/BlockDrillEast.java | 61 -------- .../quickiemod/blocks/BlockDrillNorth.java | 61 -------- .../quickiemod/blocks/BlockDrillSouth.java | 61 -------- .../quickiemod/blocks/BlockDrillWest.java | 61 -------- .../quickiemod/blocks/BlockDrillstop.java | 30 ---- .../quickiemod/blocks/BlockKelpstack.java | 38 ----- .../quickiemod/blocks/BlockLavahoarder.java | 81 ----------- .../blocks/BlockMonsterhoarder.java | 64 --------- .../blocks/BlockOreDeepslateSulphor.java | 30 ---- .../blocks/BlockOreNetherSulphor.java | 29 ---- .../quickiemod/blocks/BlockOreSalpeter.java | 30 ---- .../quickiemod/blocks/BlockOreSulphor.java | 30 ---- .../quickiemod/blocks/BlockSalpeter.java | 29 ---- .../quickiemod/blocks/BlockStackerEast.java | 111 -------------- .../quickiemod/blocks/BlockStackerNorth.java | 111 -------------- .../quickiemod/blocks/BlockStackerSouth.java | 111 -------------- .../quickiemod/blocks/BlockStackerUp.java | 111 -------------- .../quickiemod/blocks/BlockStackerWest.java | 111 -------------- .../quickiemod/blocks/BlockSulphor.java | 29 ---- .../quickiemod/blocks/QuickieBlocks.java | 69 --------- .../quickiemod/blocks/help/BlockStacker.java | 25 ---- .../quickiemod/blocks/help/DrillBlock.java | 78 ---------- .../container/BlockStackerScreen.java | 6 +- .../quickiemod/event/BreakBlockCallback.java | 29 ---- .../quickiemod/event/EventBlockBreak.java | 63 ++++---- .../quickiemod/feature/ModFeatures.java | 66 +++++++++ .../quickiemod/identifier/ModIdentifiers.java | 77 ++++++++++ .../quickiemod/init/BlockEntityIdentity.java | 22 --- .../quickiemod/init/FeaturesManager.java | 66 --------- .../quickiemod/init/RegistryManager.java | 102 ------------- .../item/AbstractIdentifiedItem.java | 20 +++ .../{items => item}/HarvestRange.java | 21 ++- .../jottyfan/quickiemod/item/Item64Stack.java | 16 +++ .../de/jottyfan/quickiemod/item/ItemSeed.java | 45 ++++++ .../de/jottyfan/quickiemod/item/ModItems.java | 117 +++++++++++++++ .../item/ModdedItemUsageContext.java | 21 --- .../quickiemod/item/ToolQuickiepowderAxe.java | 30 ++++ .../quickiemod/item/ToolQuickiepowderHoe.java | 24 ++++ .../ToolQuickiepowderPickaxe.java | 20 ++- .../ToolQuickiepowderShovel.java | 15 +- .../ToolQuickiepowderWaterHoe.java | 9 +- .../{items => item}/ToolRangeable.java | 10 +- .../{items => item}/ToolRangeableAxe.java | 8 +- .../{items => item}/ToolRangeableHoe.java | 6 +- .../quickiemod/item/ToolSpeedpowderAxe.java | 30 ++++ .../quickiemod/item/ToolSpeedpowderHoe.java | 24 ++++ .../ToolSpeedpowderPickaxe.java | 16 ++- .../ToolSpeedpowderShears.java | 9 +- .../ToolSpeedpowderShovel.java | 15 +- .../ToolSpeedpowderWaterHoe.java | 9 +- .../quickiemod/itemgroup/ModItemGroup.java | 38 +++++ .../jottyfan/quickiemod/items/ItemCanola.java | 15 -- .../quickiemod/items/ItemCanolabottle.java | 15 -- .../items/ItemCanolabottlestack.java | 15 -- .../quickiemod/items/ItemCanolaseed.java | 36 ----- .../quickiemod/items/ItemCarrotstack.java | 17 --- .../jottyfan/quickiemod/items/ItemCotton.java | 15 -- .../quickiemod/items/ItemCottonseed.java | 36 ----- .../items/ItemOxidizedcopperpowder.java | 15 -- .../quickiemod/items/ItemQuickieingot.java | 15 -- .../quickiemod/items/ItemQuickiepowder.java | 15 -- .../items/ItemRottenFleshStripes.java | 15 -- .../quickiemod/items/ItemSalpeter.java | 15 -- .../quickiemod/items/ItemSpeedingot.java | 15 -- .../quickiemod/items/ItemSpeedpowder.java | 15 -- .../items/ItemSpeedpowdershears.java | 96 ------------- .../jottyfan/quickiemod/items/ItemStub.java | 14 -- .../quickiemod/items/ItemSulphor.java | 41 ------ .../quickiemod/items/QuickieItems.java | 56 -------- .../items/ToolQuickiepowderAxe.java | 26 ---- .../items/ToolQuickiepowderHoe.java | 20 --- .../quickiemod/items/ToolSpeedpowderAxe.java | 26 ---- .../quickiemod/items/ToolSpeedpowderHoe.java | 20 --- .../items/mat/QuickieToolMaterial.java | 64 --------- .../quickiemod/mixin/BlockBreakMixin.java | 33 ----- .../quickiemod/text/PrefixedText.java | 52 ------- .../de/jottyfan/quickiemod/util/ModTags.java | 28 ++++ ...canolaplant.json => blockcanolaplant.json} | 0 ...cottonplant.json => blockcottonplant.json} | 0 .../quickiemod/blockstates/drillstop.json | 7 - .../assets/quickiemod/lang/de_de.json | 5 +- .../assets/quickiemod/lang/en_us.json | 5 +- .../models/block/blockstackerdown.json | 2 +- .../quickiemod/models/block/drillstop.json | 6 - .../quickiemod/models/item/drillstop.json | 10 -- .../quickiemod/models/item/kelpstack.json | 33 +++-- .../textures/block/cottonplant3.png | Bin 5360 -> 5505 bytes .../textures/block/cottonplant4.png | Bin 5847 -> 5775 bytes .../textures/block/cottonplant5.png | Bin 5853 -> 5806 bytes .../textures/block/cottonplant6.png | Bin 6486 -> 6320 bytes .../tags/block/mineable/pickaxe.json | 5 + .../tags/items/enchantable/durability.json | 5 - .../tags/items/enchantable/mining.json | 5 - .../recipes/tools/salpeterblock.json | 21 --- .../blasting_oxidized_copper_powder1.json | 4 +- .../blasting_oxidized_copper_powder2.json | 4 +- .../blasting_oxidized_copper_powder3.json | 7 +- .../blasting_oxidized_copper_powder4.json | 4 +- .../recipe/blasting_quickieingot.json | 4 +- .../blasting_salpeter_from_brain_coral.json | 4 +- .../blasting_salpeter_from_bubble_coral.json | 4 +- .../blasting_salpeter_from_fire_coral.json | 4 +- .../blasting_salpeter_from_horn_coral.json | 4 +- .../blasting_salpeter_from_tube_coral.json | 4 +- .../recipe/blasting_speedingot.json | 4 +- .../recipe/campfire_dried_kelpblock.json | 4 +- .../quickiemod/recipe/campfire_torch.json | 6 +- ...blockquickiepowder_from_quickiepowder.json | 4 +- .../recipe/shaped_blocksalpeter.json | 4 +- ...ped_blockspeedpowder_from_speedpowder.json | 4 +- .../recipe/shaped_blockstacker.json | 11 +- .../recipe/shaped_blocksulphor.json | 4 +- .../recipe/shaped_canolabottlestack.json | 4 +- .../shaped_carrotstack_from_carrots.json | 4 +- .../data/quickiemod/recipe/shaped_drill.json | 11 +- .../quickiemod/recipe/shaped_drillstop.json | 20 --- .../recipe/shaped_emptylavahoarder.json | 15 +- .../shaped_itemhoarder_from_barrel.json | 10 +- .../recipe/shaped_itemhoarder_from_chest.json | 10 +- .../recipe/shaped_kelpstack_from_kelp.json | 4 +- .../recipe/shaped_monsterhoarder.json | 13 +- .../recipe/shaped_quickiepowderaxe.json | 8 +- .../recipe/shaped_quickiepowderhoe.json | 8 +- .../recipe/shaped_quickiepowderpickaxe.json | 8 +- .../recipe/shaped_quickiepowdershovel.json | 8 +- .../recipe/shaped_speedpowder_shears.json | 4 +- .../recipe/shaped_speedpowderaxe.json | 8 +- .../recipe/shaped_speedpowderhoe.json | 8 +- .../recipe/shaped_speedpowderpickaxe.json | 8 +- .../recipe/shaped_speedpowdershovel.json | 8 +- .../recipe/shaped_string_from_cotton.json | 4 +- ...er_from_slimeblockandspeedpowderblock.json | 8 +- ...edpowder_from_salpetersulforcoalblock.json | 11 +- .../recipe/shapeless_blockstackerdown_up.json | 4 +- .../shapeless_blockstackereast_down.json | 4 +- .../shapeless_blockstackernorth_west.json | 4 +- .../shapeless_blockstackersouth_east.json | 4 +- .../shapeless_blockstackerup_north.json | 4 +- .../shapeless_blockstackerwest_south.json | 4 +- .../recipe/shapeless_canolabottle.json | 8 +- .../shapeless_canolabottle_from_stack.json | 4 +- .../shapeless_carrots_from_carrotstack.json | 4 +- ...ll.json => shapeless_drill2drilleast.json} | 4 +- ...on => shapeless_drilleast2drillsouth.json} | 4 +- ...t.json => shapeless_drillnorth2drill.json} | 4 +- ...on => shapeless_drillsouth2drillwest.json} | 4 +- ...on => shapeless_drillwest2drillnorth.json} | 4 +- .../shapeless_glowstone_item_frame.json | 15 -- .../recipe/shapeless_gunpowder.json | 12 +- .../shapeless_quickiepowder_from_block.json | 4 +- ...ickiepowder_from_oxidizedcopperpowder.json | 8 +- ...hapeless_quickiepowder_from_slimeball.json | 8 +- .../shapeless_quickiepowderwaterhoe.json | 8 +- .../recipe/shapeless_salpeter_from_block.json | 4 +- .../recipe/shapeless_speedpowder.json | 8 +- .../shapeless_speedpowder_from_block.json | 4 +- .../recipe/shapeless_speedpowderwaterhoe.json | 8 +- .../recipe/shapeless_string_from_wool.json | 4 +- .../quickiemod/recipe/shapeless_stub.json | 4 +- .../recipe/shapeless_sulphor_from_block.json | 4 +- .../quickiemod/recipe/smelting_salpeter1.json | 15 -- .../quickiemod/recipe/smelting_salpeter2.json | 15 -- .../quickiemod/recipe/smelting_salpeter3.json | 15 -- .../quickiemod/recipe/smelting_salpeter4.json | 15 -- .../quickiemod/recipe/smelting_sulfur1.json | 15 -- .../quickiemod/recipe/smelting_sulfur2.json | 15 -- .../recipe/smoking_dried_kelpblock.json | 4 +- .../smoking_leather_from_flesh_stripes.json | 4 +- .../recipe/stonecutting_flesh_stripes.json | 4 +- src/main/resources/fabric.mod.json | 15 +- src/main/resources/quickiemod.mixins.json | 14 -- 219 files changed, 1848 insertions(+), 3815 deletions(-) delete mode 100644 src/main/java/de/jottyfan/quickiemod/QuickieMod.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/QuickieModClient.java create mode 100644 src/main/java/de/jottyfan/quickiemod/Quickiemod.java create mode 100644 src/main/java/de/jottyfan/quickiemod/QuickiemodClient.java rename src/main/java/de/jottyfan/quickiemod/{QuickieModDataGenerator.java => QuickiemodDataGenerator.java} (52%) delete mode 100644 src/main/java/de/jottyfan/quickiemod/api/Neighborhood.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/api/NeighborhoodBean.java create mode 100644 src/main/java/de/jottyfan/quickiemod/block/AbstractIdentifiedBlock.java rename src/main/java/de/jottyfan/quickiemod/{blocks/BlockSpeedpowder.java => block/BlockBreakByTool.java} (57%) rename src/main/java/de/jottyfan/quickiemod/{blocks => block}/BlockDirtSalpeter.java (67%) create mode 100644 src/main/java/de/jottyfan/quickiemod/block/BlockDrill.java rename src/main/java/de/jottyfan/quickiemod/{blocks => block}/BlockEmptyLavahoarder.java (62%) rename src/main/java/de/jottyfan/quickiemod/{blocks => block}/BlockItemhoarder.java (86%) create mode 100644 src/main/java/de/jottyfan/quickiemod/block/BlockLavahoarder.java create mode 100644 src/main/java/de/jottyfan/quickiemod/block/BlockMonsterhoarder.java create mode 100644 src/main/java/de/jottyfan/quickiemod/block/BlockOreDeepslateSulphor.java create mode 100644 src/main/java/de/jottyfan/quickiemod/block/BlockOreNetherSulphor.java create mode 100644 src/main/java/de/jottyfan/quickiemod/block/BlockOreSalpeter.java rename src/main/java/de/jottyfan/quickiemod/{blocks => block}/BlockOreSandSalpeter.java (51%) create mode 100644 src/main/java/de/jottyfan/quickiemod/block/BlockOreSulphor.java rename src/main/java/de/jottyfan/quickiemod/{blocks/BlockCottonplant.java => block/BlockPlant.java} (71%) rename src/main/java/de/jottyfan/quickiemod/{blocks/BlockQuickiepowder.java => block/BlockPowder.java} (54%) rename src/main/java/de/jottyfan/quickiemod/{blocks => block}/BlockSandSalpeter.java (55%) create mode 100644 src/main/java/de/jottyfan/quickiemod/block/BlockSlippery.java rename src/main/java/de/jottyfan/quickiemod/{blocks/BlockStackerDown.java => block/BlockStacker.java} (72%) create mode 100644 src/main/java/de/jottyfan/quickiemod/block/ModBlocks.java create mode 100644 src/main/java/de/jottyfan/quickiemod/block/StandardBlock.java rename src/main/java/de/jottyfan/quickiemod/{blocks => block}/help/IntProviderHelper.java (93%) delete mode 100644 src/main/java/de/jottyfan/quickiemod/blockentity/BlockEntityTypes.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blockentity/BlockMonsterhoarder.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockDownEntity.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockEastEntity.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockNorthEntity.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockSouthEntity.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockWestEntity.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blockentity/EmptyLavaHoarderBlockEntity.java create mode 100644 src/main/java/de/jottyfan/quickiemod/blockentity/ModBlockentity.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blockentity/MonsterHoarderBlockEntity.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockCanolaplant.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillDown.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillEast.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillNorth.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillSouth.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillWest.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillstop.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockKelpstack.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockLavahoarder.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockMonsterhoarder.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockOreDeepslateSulphor.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockOreNetherSulphor.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockOreSalpeter.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockOreSulphor.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockSalpeter.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerEast.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerNorth.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerSouth.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerUp.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerWest.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/BlockSulphor.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/QuickieBlocks.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/help/BlockStacker.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/blocks/help/DrillBlock.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/event/BreakBlockCallback.java create mode 100644 src/main/java/de/jottyfan/quickiemod/feature/ModFeatures.java create mode 100644 src/main/java/de/jottyfan/quickiemod/identifier/ModIdentifiers.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/init/BlockEntityIdentity.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/init/FeaturesManager.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/init/RegistryManager.java create mode 100644 src/main/java/de/jottyfan/quickiemod/item/AbstractIdentifiedItem.java rename src/main/java/de/jottyfan/quickiemod/{items => item}/HarvestRange.java (86%) create mode 100644 src/main/java/de/jottyfan/quickiemod/item/Item64Stack.java create mode 100644 src/main/java/de/jottyfan/quickiemod/item/ItemSeed.java create mode 100644 src/main/java/de/jottyfan/quickiemod/item/ModItems.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/item/ModdedItemUsageContext.java create mode 100644 src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderAxe.java create mode 100644 src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderHoe.java rename src/main/java/de/jottyfan/quickiemod/{items => item}/ToolQuickiepowderPickaxe.java (62%) rename src/main/java/de/jottyfan/quickiemod/{items => item}/ToolQuickiepowderShovel.java (82%) rename src/main/java/de/jottyfan/quickiemod/{items => item}/ToolQuickiepowderWaterHoe.java (84%) rename src/main/java/de/jottyfan/quickiemod/{items => item}/ToolRangeable.java (81%) rename src/main/java/de/jottyfan/quickiemod/{items => item}/ToolRangeableAxe.java (83%) rename src/main/java/de/jottyfan/quickiemod/{items => item}/ToolRangeableHoe.java (93%) create mode 100644 src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderAxe.java create mode 100644 src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderHoe.java rename src/main/java/de/jottyfan/quickiemod/{items => item}/ToolSpeedpowderPickaxe.java (66%) rename src/main/java/de/jottyfan/quickiemod/{items => item}/ToolSpeedpowderShears.java (91%) rename src/main/java/de/jottyfan/quickiemod/{items => item}/ToolSpeedpowderShovel.java (81%) rename src/main/java/de/jottyfan/quickiemod/{items => item}/ToolSpeedpowderWaterHoe.java (84%) create mode 100644 src/main/java/de/jottyfan/quickiemod/itemgroup/ModItemGroup.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemCanola.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemCanolabottle.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemCanolabottlestack.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemCanolaseed.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemCarrotstack.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemCotton.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemCottonseed.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemOxidizedcopperpowder.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemQuickieingot.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemQuickiepowder.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemRottenFleshStripes.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemSalpeter.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemSpeedingot.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemSpeedpowder.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemSpeedpowdershears.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemStub.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ItemSulphor.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/QuickieItems.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderAxe.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderHoe.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderAxe.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderHoe.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/items/mat/QuickieToolMaterial.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/mixin/BlockBreakMixin.java delete mode 100644 src/main/java/de/jottyfan/quickiemod/text/PrefixedText.java create mode 100644 src/main/java/de/jottyfan/quickiemod/util/ModTags.java rename src/main/resources/assets/quickiemod/blockstates/{canolaplant.json => blockcanolaplant.json} (100%) rename src/main/resources/assets/quickiemod/blockstates/{cottonplant.json => blockcottonplant.json} (100%) delete mode 100644 src/main/resources/assets/quickiemod/blockstates/drillstop.json delete mode 100644 src/main/resources/assets/quickiemod/models/block/drillstop.json delete mode 100644 src/main/resources/assets/quickiemod/models/item/drillstop.json delete mode 100644 src/main/resources/data/minecraft/tags/items/enchantable/durability.json delete mode 100644 src/main/resources/data/minecraft/tags/items/enchantable/mining.json delete mode 100644 src/main/resources/data/quickiemod/advancements/recipes/tools/salpeterblock.json delete mode 100644 src/main/resources/data/quickiemod/recipe/shaped_drillstop.json rename src/main/resources/data/quickiemod/recipe/{shapeless_drilleast_fromdrill.json => shapeless_drill2drilleast.json} (76%) rename src/main/resources/data/quickiemod/recipe/{shapeless_drillsouth_fromdrilleast.json => shapeless_drilleast2drillsouth.json} (74%) rename src/main/resources/data/quickiemod/recipe/{shapeless_drillnorth_fromdrillwest.json => shapeless_drillnorth2drill.json} (73%) rename src/main/resources/data/quickiemod/recipe/{shapeless_drillwest_fromdrillsouth.json => shapeless_drillsouth2drillwest.json} (74%) rename src/main/resources/data/quickiemod/recipe/{shapeless_drill_fromdrillnorth.json => shapeless_drillwest2drillnorth.json} (74%) delete mode 100644 src/main/resources/data/quickiemod/recipe/shapeless_glowstone_item_frame.json delete mode 100644 src/main/resources/data/quickiemod/recipe/smelting_salpeter1.json delete mode 100644 src/main/resources/data/quickiemod/recipe/smelting_salpeter2.json delete mode 100644 src/main/resources/data/quickiemod/recipe/smelting_salpeter3.json delete mode 100644 src/main/resources/data/quickiemod/recipe/smelting_salpeter4.json delete mode 100644 src/main/resources/data/quickiemod/recipe/smelting_sulfur1.json delete mode 100644 src/main/resources/data/quickiemod/recipe/smelting_sulfur2.json delete mode 100644 src/main/resources/quickiemod.mixins.json diff --git a/build.gradle b/build.gradle index 4131d38..f84f114 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.6-SNAPSHOT' + id 'fabric-loom' version '1.8-SNAPSHOT' id 'maven-publish' } @@ -30,7 +30,7 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - + } processResources { diff --git a/gradle.properties b/gradle.properties index 17eb926..9c3a176 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,14 +4,14 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.21.1 -yarn_mappings=1.21.1+build.3 -loader_version=0.15.11 +minecraft_version=1.21.3 +yarn_mappings=1.21.3+build.2 +loader_version=0.16.9 # Mod Properties -mod_version=1.21.1.0 +mod_version=1.21.3.1 maven_group=de.jottyfan.quickiemod archives_base_name=quickiemod # Dependencies -fabric_version=0.102.1+1.21.1 +fabric_version=0.108.0+1.21.3 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b82aa23..df97d72 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 1aa94a4..f5feea6 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -84,7 +86,8 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum diff --git a/gradlew.bat b/gradlew.bat index 7101f8e..9b42019 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## diff --git a/src/main/java/de/jottyfan/quickiemod/QuickieMod.java b/src/main/java/de/jottyfan/quickiemod/QuickieMod.java deleted file mode 100644 index 0b45dda..0000000 --- a/src/main/java/de/jottyfan/quickiemod/QuickieMod.java +++ /dev/null @@ -1,31 +0,0 @@ -package de.jottyfan.quickiemod; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import de.jottyfan.quickiemod.init.RegistryManager; -import net.fabricmc.api.ModInitializer; - -/** - * - * @author jotty - * - */ -public class QuickieMod implements ModInitializer { - public static final String MODID = "quickiemod"; - - public static final Logger LOGGER = LoggerFactory.getLogger(MODID); - - @Override - public void onInitialize() { - LOGGER.info("loading {}", MODID); - - RegistryManager.registerBlockEntityTypes(); - RegistryManager.registerScreenHandlerTypes(); - RegistryManager.registerItems(); - RegistryManager.registerEvents(); - RegistryManager.registerBlocks(); - RegistryManager.registerFeatures(); - RegistryManager.registerItemGroup(); - } -} \ No newline at end of file diff --git a/src/main/java/de/jottyfan/quickiemod/QuickieModClient.java b/src/main/java/de/jottyfan/quickiemod/QuickieModClient.java deleted file mode 100644 index 95dd0e5..0000000 --- a/src/main/java/de/jottyfan/quickiemod/QuickieModClient.java +++ /dev/null @@ -1,26 +0,0 @@ -package de.jottyfan.quickiemod; - -import de.jottyfan.quickiemod.blocks.QuickieBlocks; -import de.jottyfan.quickiemod.container.BlockStackerScreen; -import de.jottyfan.quickiemod.container.ScreenHandlerTypes; -import net.fabricmc.api.ClientModInitializer; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; -import net.minecraft.client.gui.screen.ingame.HandledScreens; -import net.minecraft.client.render.RenderLayer; - -/** - * - * @author jotty - * - */ -@Environment(EnvType.CLIENT) -public class QuickieModClient implements ClientModInitializer { - @Override - public void onInitializeClient() { -// HandledScreens.register(ScreenHandlerTypes.BLOCKSTACKER_SCREEN_HANDLER, BlockStackerScreen::new); - BlockRenderLayerMap.INSTANCE.putBlock(QuickieBlocks.COTTONPLANT.getBlock(), RenderLayer.getCutout()); - BlockRenderLayerMap.INSTANCE.putBlock(QuickieBlocks.CANOLAPLANT.getBlock(), RenderLayer.getCutout()); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/Quickiemod.java b/src/main/java/de/jottyfan/quickiemod/Quickiemod.java new file mode 100644 index 0000000..c719053 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/Quickiemod.java @@ -0,0 +1,73 @@ +package de.jottyfan.quickiemod; + +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import de.jottyfan.quickiemod.block.ModBlocks; +import de.jottyfan.quickiemod.blockentity.ModBlockentity; +import de.jottyfan.quickiemod.event.EventBlockBreak; +import de.jottyfan.quickiemod.feature.ModFeatures; +import de.jottyfan.quickiemod.item.ModItems; +import de.jottyfan.quickiemod.itemgroup.ModItemGroup; +import net.fabricmc.api.ModInitializer; +import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents; +import net.fabricmc.fabric.api.loot.v3.LootTableEvents; +import net.fabricmc.fabric.api.registry.CompostingChanceRegistry; +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.Items; +import net.minecraft.loot.LootPool; +import net.minecraft.loot.condition.SurvivesExplosionLootCondition; +import net.minecraft.loot.entry.ItemEntry; + +/** + * + * @author jotty + * + */ +public class Quickiemod implements ModInitializer { + public static final String MOD_ID = "quickiemod"; + public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); + + private void registerComposterItems() { + CompostingChanceRegistry.INSTANCE.add(ModItems.ITEM_COTTONSEED, 0.5f); + CompostingChanceRegistry.INSTANCE.add(ModItems.ITEM_COTTON, 0.75f); + CompostingChanceRegistry.INSTANCE.add(ModItems.ITEM_CANOLASEED, 0.5f); + CompostingChanceRegistry.INSTANCE.add(ModItems.ITEM_CANOLA, 0.75f); + } + + private void registerLootTableChanges() { + LootTableEvents.MODIFY.register((key, tableBuilder, source, registries) -> { + if (source.isBuiltin()) { + if ("minecraft:blocks/short_grass".equals(key.getValue().toString())) { + tableBuilder.pool(LootPool.builder() + .with(ItemEntry.builder(ModItems.ITEM_COTTONSEED).weight(1)) + .with(ItemEntry.builder(Items.AIR).weight(4)) + .conditionally(SurvivesExplosionLootCondition.builder())); + } else if ("minecraft:blocks/tall_grass".equals(key.getValue().toString())) { + tableBuilder.pool(LootPool.builder() + .with(ItemEntry.builder(ModItems.ITEM_CANOLASEED).weight(1)) + .with(ItemEntry.builder(Items.AIR).weight(7)) + .conditionally(SurvivesExplosionLootCondition.builder())); + } + } + }); + } + + @Override + public void onInitialize() { + ModBlockentity.registerModBlockentities(); + List items = ModItems.registerModItems(); + List blocks = ModBlocks.registerModBlocks(); + ModFeatures.registerFeatures(); + registerComposterItems(); + registerLootTableChanges(); + ModItemGroup.registerItemGroup(items, blocks); + PlayerBlockBreakEvents.AFTER.register((world, player, pos, state, blockEntity) -> { + Block oldBlock = state.getBlock(); + new EventBlockBreak().doBreakBlock(world, pos, state, player, oldBlock); + }); + } +} \ No newline at end of file diff --git a/src/main/java/de/jottyfan/quickiemod/QuickiemodClient.java b/src/main/java/de/jottyfan/quickiemod/QuickiemodClient.java new file mode 100644 index 0000000..6ceb67f --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/QuickiemodClient.java @@ -0,0 +1,20 @@ +package de.jottyfan.quickiemod; + +import de.jottyfan.quickiemod.block.ModBlocks; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; +import net.minecraft.client.render.RenderLayer; + +/** + * + * @author jotty + * + */ +public class QuickiemodClient implements ClientModInitializer { + + @Override + public void onInitializeClient() { + BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.BLOCK_COTTONPLANT, RenderLayer.getCutout()); + BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.BLOCK_CANOLAPLANT, RenderLayer.getCutout()); + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/QuickieModDataGenerator.java b/src/main/java/de/jottyfan/quickiemod/QuickiemodDataGenerator.java similarity index 52% rename from src/main/java/de/jottyfan/quickiemod/QuickieModDataGenerator.java rename to src/main/java/de/jottyfan/quickiemod/QuickiemodDataGenerator.java index 395d3db..8ae8c88 100644 --- a/src/main/java/de/jottyfan/quickiemod/QuickieModDataGenerator.java +++ b/src/main/java/de/jottyfan/quickiemod/QuickiemodDataGenerator.java @@ -1,8 +1,5 @@ package de.jottyfan.quickiemod; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; @@ -11,13 +8,10 @@ import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; * @author jotty * */ -public class QuickieModDataGenerator implements DataGeneratorEntrypoint { - private static final Logger LOGGER = LoggerFactory.getLogger(QuickieMod.MODID); - +public class QuickiemodDataGenerator implements DataGeneratorEntrypoint { @Override public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) { - // TODO: implement - LOGGER.debug("initializing data generator"); + } } diff --git a/src/main/java/de/jottyfan/quickiemod/api/Neighborhood.java b/src/main/java/de/jottyfan/quickiemod/api/Neighborhood.java deleted file mode 100644 index eea245a..0000000 --- a/src/main/java/de/jottyfan/quickiemod/api/Neighborhood.java +++ /dev/null @@ -1,84 +0,0 @@ -package de.jottyfan.quickiemod.api; - -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; -import java.util.function.BiFunction; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class Neighborhood { - - /** - * find the same blocks that is next to the current position pos - * - * @param world the world to look for the blocks - * @param pos the starting position - * @param seekLimit the limit of seek operations - * @param checkLambda check functionality - * @return a set of found block positions - */ - public static final Set findEqualBlock(World world, BlockPos pos, int seekLimit, - BiFunction checkLambda) { - Set found = new HashSet<>(); - found.add(new NeighborhoodBean(pos, true)); - - while (pos != null && found.size() < seekLimit) { - findNewNeihgbor(world, pos.east(), found, checkLambda); - findNewNeihgbor(world, pos.south(), found, checkLambda); - findNewNeihgbor(world, pos.west(), found, checkLambda); - findNewNeihgbor(world, pos.north(), found, checkLambda); - pos = findNextUncheckedField(found); - } - - Set finals = new HashSet<>(); - for (NeighborhoodBean bean : found) { - finals.add(bean.getPos()); - } - return finals; - } - - private static final BlockPos findNextUncheckedField(Set found) { - Iterator i = found.iterator(); - while (i.hasNext()) { - NeighborhoodBean bean = i.next(); - if (!bean.isChecked()) { - bean.setChecked(true); - return bean.getPos(); - } - } - return null; - } - - /** - * find new neighbor at pos - * - * @param world the world - * @param pos the position - * @param found the set with all already found positions - * @return true or false - */ - private static final boolean findNewNeihgbor(World world, BlockPos pos, Set found, - BiFunction checkLambda) { - NeighborhoodBean bean = new NeighborhoodBean(pos); - if (found.contains(bean) || found.contains(bean.over()) || found.contains(bean.below())) { - return false; - } else if (checkLambda.apply(world, pos).booleanValue()) { - found.add(bean); - return true; - } else if (checkLambda.apply(world, pos.up()).booleanValue()) { - found.add(new NeighborhoodBean(pos.up())); - return true; - } else if (checkLambda.apply(world, pos.down()).booleanValue()) { - found.add(new NeighborhoodBean(pos.down())); - return true; - } - return false; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/api/NeighborhoodBean.java b/src/main/java/de/jottyfan/quickiemod/api/NeighborhoodBean.java deleted file mode 100644 index 0acf23a..0000000 --- a/src/main/java/de/jottyfan/quickiemod/api/NeighborhoodBean.java +++ /dev/null @@ -1,77 +0,0 @@ -package de.jottyfan.quickiemod.api; - -import java.util.Objects; - -import net.minecraft.util.math.BlockPos; - -/** - * - * @author jotty - * - */ -public class NeighborhoodBean { - private final BlockPos pos; - private boolean checked; - - public NeighborhoodBean(BlockPos pos, boolean checked) { - super(); - this.pos = pos; - this.checked = checked; - } - - public NeighborhoodBean(BlockPos pos) { - super(); - this.pos = pos; - this.checked = false; - } - - public NeighborhoodBean over() { - return new NeighborhoodBean(pos.up(), checked); - } - - public NeighborhoodBean below() { - return new NeighborhoodBean(pos.down(), checked); - } - - @Override - public int hashCode() { - return Objects.hash(pos); - } - - @Override - public boolean equals(Object obj) { - Boolean result = null; - if (this == obj) { - result = true; - } else if (obj == null) { - result = false; - } else if (getClass() != obj.getClass()) { - result = false; - } else { - NeighborhoodBean other = (NeighborhoodBean) obj; - result = Objects.equals(pos, other.pos); - } - return result; - } - - /** - * @return the checked - */ - public boolean isChecked() { - return checked; - } - - /** - * @param checked the checked to set - */ - public void setChecked(boolean checked) { - this.checked = checked; - } - - /** - * @return the pos - */ - public BlockPos getPos() { - return pos; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/block/AbstractIdentifiedBlock.java b/src/main/java/de/jottyfan/quickiemod/block/AbstractIdentifiedBlock.java new file mode 100644 index 0000000..fa1e77d --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/block/AbstractIdentifiedBlock.java @@ -0,0 +1,25 @@ +package de.jottyfan.quickiemod.block; + +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public abstract class AbstractIdentifiedBlock extends Block { + + public AbstractIdentifiedBlock(Identifier identifier) { + super(AbstractBlock.Settings.create().registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); + } + + public AbstractIdentifiedBlock(Identifier identifier, float strength, float hardness) { + super(AbstractBlock.Settings.create().strength(strength).hardness(hardness).requiresTool() + .registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); + } + +} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockSpeedpowder.java b/src/main/java/de/jottyfan/quickiemod/block/BlockBreakByTool.java similarity index 57% rename from src/main/java/de/jottyfan/quickiemod/blocks/BlockSpeedpowder.java rename to src/main/java/de/jottyfan/quickiemod/block/BlockBreakByTool.java index 4b5a5e7..3cf71e8 100644 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockSpeedpowder.java +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockBreakByTool.java @@ -1,16 +1,15 @@ -package de.jottyfan.quickiemod.blocks; +package de.jottyfan.quickiemod.block; import java.util.Arrays; import java.util.List; import com.mojang.serialization.MapCodec; -import de.jottyfan.quickiemod.items.QuickieItems; -import net.minecraft.block.AbstractBlock; import net.minecraft.block.BlockState; import net.minecraft.block.FallingBlock; import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; +import net.minecraft.loot.context.LootWorldContext.Builder; +import net.minecraft.util.Identifier; import net.minecraft.world.explosion.Explosion; /** @@ -18,15 +17,19 @@ import net.minecraft.world.explosion.Explosion; * @author jotty * */ -public class BlockSpeedpowder extends FallingBlock { +public class BlockBreakByTool extends AbstractIdentifiedBlock { - public BlockSpeedpowder() { - super(AbstractBlock.Settings.create().luminance(state -> 12)); + private final ItemStack[] drops; + + public BlockBreakByTool(Identifier identifier, float strength, float hardness, ItemStack[] drops) { + super(identifier, strength, hardness); + + this.drops = drops; } @Override public List getDroppedStacks(BlockState state, Builder builder) { - return Arrays.asList(new ItemStack[] { new ItemStack(QuickieItems.SPEEDPOWDER.getItem(), 9) }); + return Arrays.asList(drops); } @Override diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockDirtSalpeter.java b/src/main/java/de/jottyfan/quickiemod/block/BlockDirtSalpeter.java similarity index 67% rename from src/main/java/de/jottyfan/quickiemod/blocks/BlockDirtSalpeter.java rename to src/main/java/de/jottyfan/quickiemod/block/BlockDirtSalpeter.java index 51c91f8..131fe61 100644 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockDirtSalpeter.java +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockDirtSalpeter.java @@ -1,4 +1,4 @@ -package de.jottyfan.quickiemod.blocks; +package de.jottyfan.quickiemod.block; import java.util.Arrays; import java.util.List; @@ -6,14 +6,17 @@ import java.util.Random; import com.mojang.serialization.MapCodec; -import de.jottyfan.quickiemod.items.QuickieItems; +import de.jottyfan.quickiemod.item.ModItems; import net.minecraft.block.AbstractBlock; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.FallingBlock; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; -import net.minecraft.loot.context.LootContextParameterSet.Builder; +import net.minecraft.loot.context.LootWorldContext.Builder; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; /** * @@ -22,8 +25,8 @@ import net.minecraft.loot.context.LootContextParameterSet.Builder; */ public class BlockDirtSalpeter extends FallingBlock { - public BlockDirtSalpeter() { - super(AbstractBlock.Settings.create().hardness(3.1f)); + public BlockDirtSalpeter(Identifier identifier) { + super(AbstractBlock.Settings.create().hardness(3.1f).registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); } @Override @@ -31,7 +34,7 @@ public class BlockDirtSalpeter extends FallingBlock { Integer count = (Double.valueOf(new Random().nextDouble() * 10).intValue() / 4) + 1; boolean spawnBoneMeal = new Random().nextDouble() > 0.5f; ItemStack boneMealStack = new ItemStack(Items.BONE_MEAL); - ItemStack salpeterStack = new ItemStack(QuickieItems.SALPETER.getItem(), count); + ItemStack salpeterStack = new ItemStack(ModItems.ITEM_SALPETER, count); ItemStack dirtStack = new ItemStack(Blocks.DIRT); ItemStack[] spawnies = spawnBoneMeal ? new ItemStack[] { boneMealStack, salpeterStack, dirtStack } : new ItemStack[] { salpeterStack, dirtStack }; @@ -40,7 +43,6 @@ public class BlockDirtSalpeter extends FallingBlock { @Override protected MapCodec getCodec() { - // TODO Auto-generated method stub return null; } } diff --git a/src/main/java/de/jottyfan/quickiemod/block/BlockDrill.java b/src/main/java/de/jottyfan/quickiemod/block/BlockDrill.java new file mode 100644 index 0000000..14335bd --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockDrill.java @@ -0,0 +1,112 @@ +package de.jottyfan.quickiemod.block; + +import java.util.HashMap; +import java.util.Map; + +import com.mojang.serialization.MapCodec; + +import de.jottyfan.quickiemod.blockentity.DrillBlockEntity; +import de.jottyfan.quickiemod.item.ModItems; +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.block.BlockEntityProvider; +import net.minecraft.block.BlockState; +import net.minecraft.block.FallingBlock; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.block.entity.BlockEntityTicker; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.entity.ItemEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.state.StateManager.Builder; +import net.minecraft.state.property.EnumProperty; +import net.minecraft.state.property.IntProperty; +import net.minecraft.text.Text; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Identifier; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.World; + +/** + * + * @author jotty + * + */ +public class BlockDrill extends FallingBlock implements BlockEntityProvider { + private static final Integer MAX_FUEL = 255; + public static final IntProperty FUEL = IntProperty.of("fuel", 0, MAX_FUEL); + public static final EnumProperty DIRECTION = EnumProperty.of("direction", Direction.class, Direction.values()); + + public BlockDrill(Identifier identifier, Direction direction) { + super(AbstractBlock.Settings.create().hardness(2.5f).registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); + setDefaultState(getDefaultState().with(FUEL, 0).with(DIRECTION, direction)); + } + + @Override + public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) { + return new DrillBlockEntity(pos, blockState); + } + + @Override + public BlockEntityTicker getTicker(World world, BlockState state, + BlockEntityType type) { + return (world1, pos, state1, be) -> DrillBlockEntity.tick(world1, pos, state1, be); + } + + @Override + protected MapCodec getCodec() { + // TODO Auto-generated method stub + return null; + } + + @Override + public BlockState onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) { + Integer fuelLeft = state.get(FUEL); + world.spawnEntity( + new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ModItems.ITEM_CANOLABOTTLE, fuelLeft))); + return super.onBreak(world, pos, state, player); + } + + @Override + protected void appendProperties(Builder builder) { + builder.add(FUEL).add(DIRECTION); + } + + @Override + protected ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) { + Map loadings = new HashMap<>(); + loadings.put(ModItems.ITEM_CANOLABOTTLE, 8); + loadings.put(ModItems.ITEM_CANOLABOTTLESTACK, 72); + ItemStack stack = player.getStackInHand(player.getActiveHand()); + Item item = stack.getItem(); + if (stack.isEmpty() || !loadings.containsKey(item)) { + if (world.isClient()) { + player.sendMessage(Text.translatable("msg.drill.fuelinfo", state.get(FUEL)), false); + } + } else { + Integer fuelWeight = loadings.get(item); + if (fuelWeight != null) { + Integer load = MAX_FUEL - state.get(FUEL); + if (load < fuelWeight) { + fuelWeight = load; + } + world.setBlockState(pos, state.with(FUEL, state.get(FUEL) + fuelWeight)); + if (item.equals(ModItems.ITEM_CANOLABOTTLE)) { + world.spawnEntity( + new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.GLASS_BOTTLE, 1))); + } else if (item.equals(ModItems.ITEM_CANOLABOTTLESTACK)) { + world.spawnEntity( + new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.GLASS_BOTTLE, 9))); + } + stack.decrement(1); + } + } + return ActionResult.PASS; + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockEmptyLavahoarder.java b/src/main/java/de/jottyfan/quickiemod/block/BlockEmptyLavahoarder.java similarity index 62% rename from src/main/java/de/jottyfan/quickiemod/blocks/BlockEmptyLavahoarder.java rename to src/main/java/de/jottyfan/quickiemod/block/BlockEmptyLavahoarder.java index 669debe..c347668 100644 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockEmptyLavahoarder.java +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockEmptyLavahoarder.java @@ -1,4 +1,4 @@ -package de.jottyfan.quickiemod.blocks; +package de.jottyfan.quickiemod.block; import java.util.ArrayList; import java.util.HashSet; @@ -6,50 +6,57 @@ import java.util.List; import java.util.Random; import java.util.Set; -import de.jottyfan.quickiemod.blockentity.EmptyLavaHoarderBlockEntity; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; -import net.minecraft.block.BlockEntityProvider; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityTicker; -import net.minecraft.block.entity.BlockEntityType; import net.minecraft.entity.ExperienceOrbEntity; import net.minecraft.entity.LivingEntity; import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; +import net.minecraft.loot.context.LootWorldContext.Builder; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.tick.OrderedTick; /** * * @author jotty * */ -public class BlockEmptyLavahoarder extends Block implements BlockEntityProvider { +public class BlockEmptyLavahoarder extends Block { - public BlockEmptyLavahoarder() { - super(AbstractBlock.Settings.create().hardness(2.5f)); - } - - @Override - public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) { - return new EmptyLavaHoarderBlockEntity(pos, blockState); - } - - @Override - public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type){ - return (world1, pos, state1, be) -> EmptyLavaHoarderBlockEntity.tick(world1, pos, state1, be); + public BlockEmptyLavahoarder(Identifier identifier) { + super(AbstractBlock.Settings.create().hardness(2.5f).registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); } @Override public List getDroppedStacks(BlockState state, Builder builder) { List list = new ArrayList<>(); - list.add(new ItemStack(QuickieBlocks.EMPTYLAVAHOARDER.getBlock())); + list.add(new ItemStack(ModBlocks.BLOCK_EMPTYLAVAHOARDER)); return list; } + @Override + protected void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, + net.minecraft.util.math.random.Random random) { + boolean found = BlockLavahoarder.suckLava(world, pos.north()); + found = found || BlockLavahoarder.suckLava(world, pos.south()); + found = found || BlockLavahoarder.suckLava(world, pos.east()); + found = found || BlockLavahoarder.suckLava(world, pos.west()); + found = found || BlockLavahoarder.suckLava(world, pos.up()); + found = found || BlockLavahoarder.suckLava(world, pos.down()); + if (found) { + world.setBlockState(pos, ModBlocks.BLOCK_LAVAHOARDER.getDefaultState()); + world.getBlockTickScheduler().scheduleTick(OrderedTick.create(ModBlocks.BLOCK_LAVAHOARDER, pos)); + } else { + world.getBlockTickScheduler().scheduleTick(OrderedTick.create(this, pos)); + } + } + private static final String stringOf(BlockPos pos) { StringBuilder buf = new StringBuilder(); buf.append(pos.getX()).append(":"); @@ -106,7 +113,8 @@ public class BlockEmptyLavahoarder extends Block implements BlockEntityProvider world.setBlockState(blockPosOf(p), Blocks.AIR.getDefaultState()); } if (amount > 0) { - world.setBlockState(pos, QuickieBlocks.LAVAHOARDER.getBlock().getDefaultState()); + world.setBlockState(pos, ModBlocks.BLOCK_LAVAHOARDER.getDefaultState()); + world.getBlockTickScheduler().scheduleTick(OrderedTick.create(ModBlocks.BLOCK_LAVAHOARDER, pos)); int count = 0; Random random = new Random(); for (int i = 0; i < amount; i++) { @@ -116,9 +124,12 @@ public class BlockEmptyLavahoarder extends Block implements BlockEntityProvider } BlockPos up = pos.up(); if (count > 0) { - EmptyLavaHoarderBlockEntity.spawnRandomItems(world, up, count); - world.spawnEntity(new ExperienceOrbEntity(world, (double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, count)); + BlockLavahoarder.spawnRandomItems(world, up, count); + world.spawnEntity(new ExperienceOrbEntity(world, (double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, + (double) pos.getZ() + 0.5D, count)); } + } else { + world.getBlockTickScheduler().scheduleTick(OrderedTick.create(this, pos)); } } } diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockItemhoarder.java b/src/main/java/de/jottyfan/quickiemod/block/BlockItemhoarder.java similarity index 86% rename from src/main/java/de/jottyfan/quickiemod/blocks/BlockItemhoarder.java rename to src/main/java/de/jottyfan/quickiemod/block/BlockItemhoarder.java index 1091546..7e88b4e 100644 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockItemhoarder.java +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockItemhoarder.java @@ -1,4 +1,4 @@ -package de.jottyfan.quickiemod.blocks; +package de.jottyfan.quickiemod.block; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -16,11 +16,14 @@ import net.minecraft.block.entity.BlockEntityTicker; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; +import net.minecraft.loot.context.LootWorldContext.Builder; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.text.Style; import net.minecraft.text.Text; import net.minecraft.util.ActionResult; import net.minecraft.util.Formatting; +import net.minecraft.util.Identifier; import net.minecraft.util.ItemScatterer; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; @@ -33,8 +36,8 @@ import net.minecraft.world.World; */ public class BlockItemhoarder extends Block implements BlockEntityProvider { - public BlockItemhoarder() { - super(AbstractBlock.Settings.create().hardness(2.5f)); + public BlockItemhoarder(Identifier identifier) { + super(AbstractBlock.Settings.create().hardness(2.5f).registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); } @Override @@ -56,7 +59,7 @@ public class BlockItemhoarder extends Block implements BlockEntityProvider { @Override public List getDroppedStacks(BlockState state, Builder builder) { List list = new ArrayList<>(); - list.add(new ItemStack(QuickieBlocks.ITEMHOARDER.getBlock())); + list.add(new ItemStack(ModBlocks.BLOCK_ITEMHOARDER)); return list; } diff --git a/src/main/java/de/jottyfan/quickiemod/block/BlockLavahoarder.java b/src/main/java/de/jottyfan/quickiemod/block/BlockLavahoarder.java new file mode 100644 index 0000000..3829846 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockLavahoarder.java @@ -0,0 +1,135 @@ +package de.jottyfan.quickiemod.block; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import de.jottyfan.quickiemod.item.ModItems; +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.entity.ItemEntity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.loot.context.LootWorldContext.Builder; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.Identifier; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.tick.OrderedTick; + +/** + * + * @author jotty + * + */ +public class BlockLavahoarder extends Block { + + public BlockLavahoarder(Identifier identifier) { + super(AbstractBlock.Settings.create().hardness(2.5f).luminance(state -> 15) + .registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); + } + + @Override + public List getDroppedStacks(BlockState state, Builder builder) { + List list = new ArrayList<>(); + list.add(new ItemStack(ModBlocks.BLOCK_LAVAHOARDER)); + return list; + } + + public static final void spawnRandomItems(World world, BlockPos pos, Integer count) { + Integer which = new Random().nextInt(10); + if (which < 1) { + world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.DIAMOND, new Random().nextInt(count + 2)))); + } else if (which < 2) { + world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.EMERALD, new Random().nextInt(count + 1)))); + } else if (which < 3) { + world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.RAW_GOLD, new Random().nextInt(count)))); + } else if (which < 4) { + world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.RAW_IRON, new Random().nextInt(count + 1)))); + } else if (which < 5) { + world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), + new ItemStack(Items.RAW_COPPER, new Random().nextInt(count + 2)))); + } else if (which < 6) { + world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.OBSIDIAN))); + } else if (which < 7) { + world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LAPIS_LAZULI))); + } else if (which < 8) { + world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(ModItems.ITEM_SULFOR))); + } + } + + /** + * sucks the lava that touches the block + * + * @param world the world + * @param pos the pos + * @return true if lava was found + */ + public static final boolean suckLava(World world, BlockPos pos) { + if (world == null) { + return false; + } else if (Blocks.LAVA.equals(world.getBlockState(pos).getBlock())) { + world.setBlockState(pos, Blocks.AIR.getDefaultState()); + BlockPos up = pos.up(); + Random random = new Random(); + if (random.nextFloat() > 0.9f) { + spawnRandomItems(world, up, 2); + } + return true; + } + return false; + } + + @Override + protected void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, + net.minecraft.util.math.random.Random random) { + suckLava(world, pos.north()); + suckLava(world, pos.south()); + suckLava(world, pos.east()); + suckLava(world, pos.west()); + suckLava(world, pos.up()); + suckLava(world, pos.down()); + world.getBlockTickScheduler().scheduleTick(OrderedTick.create(this, pos)); + } + + @Override + protected ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) { + if (!world.isClient) { + Hand hand = player.getActiveHand(); + ItemStack handStack = player.getStackInHand(hand); + if (handStack != null && Items.BUCKET.equals(handStack.getItem())) { + Integer amount = handStack.getCount(); + ItemStack lavaBucketStack = new ItemStack(Items.LAVA_BUCKET, 1); + ItemStack emptyBucketStack = new ItemStack(Items.BUCKET, amount - 1); + if (emptyBucketStack.getCount() < 1) { + player.setStackInHand(hand, lavaBucketStack); + } else { + player.setStackInHand(hand, emptyBucketStack); + world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), lavaBucketStack)); + } + spawnRandomItems(world, pos, 2); + world.setBlockState(pos, ModBlocks.BLOCK_EMPTYLAVAHOARDER.getDefaultState()); + world.getBlockTickScheduler().scheduleTick(OrderedTick.create(ModBlocks.BLOCK_EMPTYLAVAHOARDER, pos)); + } + } + return ActionResult.SUCCESS; // forbid to empty the just filled lava bucket + } + + @Override + public void onPlaced(World world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack itemStack) { + world.getBlockTickScheduler().scheduleTick(OrderedTick.create(this, pos)); + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/block/BlockMonsterhoarder.java b/src/main/java/de/jottyfan/quickiemod/block/BlockMonsterhoarder.java new file mode 100644 index 0000000..5e7d4a1 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockMonsterhoarder.java @@ -0,0 +1,89 @@ +package de.jottyfan.quickiemod.block; + +import java.util.List; + +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.mob.HostileEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; +import net.minecraft.state.StateManager.Builder; +import net.minecraft.state.property.IntProperty; +import net.minecraft.text.Text; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Identifier; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Box; +import net.minecraft.util.math.random.Random; +import net.minecraft.world.World; +import net.minecraft.world.tick.OrderedTick; + +/** + * + * @author jotty + * + */ +public class BlockMonsterhoarder extends Block { + + private static final IntProperty SUCKRADIUS = IntProperty.of("suckradius", 1, 15); + + public BlockMonsterhoarder(Identifier identifier) { + super(AbstractBlock.Settings.create().hardness(2.5f).luminance(state -> state.get(BlockMonsterhoarder.SUCKRADIUS)) + .registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); + setDefaultState(getDefaultState().with(SUCKRADIUS, 8)); + } + + @Override + protected void appendProperties(Builder builder) { + builder.add(SUCKRADIUS); + super.appendProperties(builder); + } + + @Override + protected ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) { + if (!world.isClient()) { + world.setBlockState(pos, state.cycle(SUCKRADIUS)); + } else { + player.sendMessage(Text.translatable("msg.monsterhoarder.size", state.get(SUCKRADIUS)), false); + } + return ActionResult.SUCCESS; + } + + @Override + protected void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, Random random) { + if (!world.isClient) { + Box box = new Box(pos).expand(Double.valueOf(state.get(SUCKRADIUS))); + List entities = world.getOtherEntities(null, box); + for (Entity entity : entities) { + if (entity instanceof HostileEntity hostile) { + if (hostile.isFireImmune()) { + if (world instanceof ServerWorld serverWorld) { + hostile.kill(serverWorld); + } + } else { + hostile.setOnFireFor(90); + } + } + } + } + world.getBlockTickScheduler().scheduleTick(OrderedTick.create(this, pos)); + } + + @Override + public void onPlaced(World world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack itemStack) { + if (!world.isClient) { + world.getBlockTickScheduler().scheduleTick(OrderedTick.create(this, pos)); + world.playSound(null, pos, SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, SoundCategory.PLAYERS, 1f, 1f); + } + super.onPlaced(world, pos, state, placer, itemStack); + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/block/BlockOreDeepslateSulphor.java b/src/main/java/de/jottyfan/quickiemod/block/BlockOreDeepslateSulphor.java new file mode 100644 index 0000000..4c3063a --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockOreDeepslateSulphor.java @@ -0,0 +1,33 @@ +package de.jottyfan.quickiemod.block; + +import java.util.Arrays; +import java.util.List; + +import de.jottyfan.quickiemod.block.help.IntProviderHelper; +import de.jottyfan.quickiemod.item.ModItems; +import net.minecraft.block.BlockState; +import net.minecraft.block.ExperienceDroppingBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootWorldContext.Builder; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class BlockOreDeepslateSulphor extends ExperienceDroppingBlock { + + public BlockOreDeepslateSulphor(Identifier identifier) { + super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(1.9f).sounds(BlockSoundGroup.SOUL_SAND) + .requiresTool().registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); + } + + @Override + public List getDroppedStacks(BlockState state, Builder builder) { + return Arrays.asList(new ItemStack[] { new ItemStack(ModItems.ITEM_SULFOR, 4) }); + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/block/BlockOreNetherSulphor.java b/src/main/java/de/jottyfan/quickiemod/block/BlockOreNetherSulphor.java new file mode 100644 index 0000000..6bdf663 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockOreNetherSulphor.java @@ -0,0 +1,33 @@ +package de.jottyfan.quickiemod.block; + +import java.util.Arrays; +import java.util.List; + +import de.jottyfan.quickiemod.block.help.IntProviderHelper; +import de.jottyfan.quickiemod.item.ModItems; +import net.minecraft.block.BlockState; +import net.minecraft.block.ExperienceDroppingBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootWorldContext.Builder; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class BlockOreNetherSulphor extends ExperienceDroppingBlock { + + public BlockOreNetherSulphor(Identifier identifier) { + super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(2.1f).sounds(BlockSoundGroup.SOUL_SAND) + .requiresTool().registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); + } + + @Override + public List getDroppedStacks(BlockState state, Builder builder) { + return Arrays.asList(new ItemStack[] { new ItemStack(ModItems.ITEM_SULFOR) }); + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/block/BlockOreSalpeter.java b/src/main/java/de/jottyfan/quickiemod/block/BlockOreSalpeter.java new file mode 100644 index 0000000..aec1a06 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockOreSalpeter.java @@ -0,0 +1,34 @@ +package de.jottyfan.quickiemod.block; + +import java.util.Arrays; +import java.util.List; + +import de.jottyfan.quickiemod.block.help.IntProviderHelper; +import de.jottyfan.quickiemod.item.ModItems; +import net.minecraft.block.BlockState; +import net.minecraft.block.ExperienceDroppingBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootWorldContext.Builder; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.random.Random; + +/** + * + * @author jotty + * + */ +public class BlockOreSalpeter extends ExperienceDroppingBlock { + + public BlockOreSalpeter(Identifier identifier) { + super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(3.1f).sounds(BlockSoundGroup.SOUL_SAND) + .requiresTool().registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); + } + + @Override + public List getDroppedStacks(BlockState state, Builder builder) { + return Arrays.asList(new ItemStack[] { new ItemStack(ModItems.ITEM_SALPETER, 2 + Random.create().nextInt(3)) }); + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockOreSandSalpeter.java b/src/main/java/de/jottyfan/quickiemod/block/BlockOreSandSalpeter.java similarity index 51% rename from src/main/java/de/jottyfan/quickiemod/blocks/BlockOreSandSalpeter.java rename to src/main/java/de/jottyfan/quickiemod/block/BlockOreSandSalpeter.java index fe9432b..368ba80 100644 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockOreSandSalpeter.java +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockOreSandSalpeter.java @@ -1,16 +1,19 @@ -package de.jottyfan.quickiemod.blocks; +package de.jottyfan.quickiemod.block; import java.util.Arrays; import java.util.List; -import de.jottyfan.quickiemod.blocks.help.IntProviderHelper; -import de.jottyfan.quickiemod.items.QuickieItems; +import de.jottyfan.quickiemod.block.help.IntProviderHelper; +import de.jottyfan.quickiemod.item.ModItems; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.ExperienceDroppingBlock; import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; +import net.minecraft.loot.context.LootWorldContext.Builder; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.Identifier; import net.minecraft.util.math.random.Random; /** @@ -20,12 +23,12 @@ import net.minecraft.util.math.random.Random; */ public class BlockOreSandSalpeter extends ExperienceDroppingBlock { - public BlockOreSandSalpeter() { - super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(2.9f).sounds(BlockSoundGroup.SOUL_SAND).requiresTool()); + public BlockOreSandSalpeter(Identifier identifier) { + super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(2.9f).sounds(BlockSoundGroup.SOUL_SAND).requiresTool().registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); } @Override public List getDroppedStacks(BlockState state, Builder builder) { - return Arrays.asList(new ItemStack[] { new ItemStack(QuickieItems.SALPETER.getItem(), 7 + Random.create().nextInt(4)), new ItemStack(Blocks.SAND) }); + return Arrays.asList(new ItemStack[] { new ItemStack(ModItems.ITEM_SALPETER, 7 + Random.create().nextInt(4)), new ItemStack(Blocks.SAND) }); } } diff --git a/src/main/java/de/jottyfan/quickiemod/block/BlockOreSulphor.java b/src/main/java/de/jottyfan/quickiemod/block/BlockOreSulphor.java new file mode 100644 index 0000000..3b81fd7 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockOreSulphor.java @@ -0,0 +1,33 @@ +package de.jottyfan.quickiemod.block; + +import java.util.Arrays; +import java.util.List; + +import de.jottyfan.quickiemod.block.help.IntProviderHelper; +import de.jottyfan.quickiemod.item.ModItems; +import net.minecraft.block.BlockState; +import net.minecraft.block.ExperienceDroppingBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootWorldContext.Builder; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class BlockOreSulphor extends ExperienceDroppingBlock { + + public BlockOreSulphor(Identifier identifier) { + super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(1.9f).sounds(BlockSoundGroup.SOUL_SAND) + .requiresTool().registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); + } + + @Override + public List getDroppedStacks(BlockState state, Builder builder) { + return Arrays.asList(new ItemStack[] { new ItemStack(ModItems.ITEM_SULFOR) }); + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockCottonplant.java b/src/main/java/de/jottyfan/quickiemod/block/BlockPlant.java similarity index 71% rename from src/main/java/de/jottyfan/quickiemod/blocks/BlockCottonplant.java rename to src/main/java/de/jottyfan/quickiemod/block/BlockPlant.java index fe82b81..f662662 100644 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockCottonplant.java +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockPlant.java @@ -1,28 +1,41 @@ -package de.jottyfan.quickiemod.blocks; +package de.jottyfan.quickiemod.block; import java.util.List; import java.util.Random; -import de.jottyfan.quickiemod.items.QuickieItems; import net.minecraft.block.AbstractBlock; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.CropBlock; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; +import net.minecraft.loot.context.LootWorldContext.Builder; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.util.ActionResult; +import net.minecraft.util.Identifier; import net.minecraft.util.ItemScatterer; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -public class BlockCottonplant extends CropBlock { +/** + * + * @author jotty + * + */ +public class BlockPlant extends CropBlock { - public BlockCottonplant() { - super(AbstractBlock.Settings.copy(Blocks.WHEAT)); + private Item seed; + private Item fruit; + + public BlockPlant(Identifier identifier, Item seed, Item fruit) { + super(AbstractBlock.Settings.copy(Blocks.WHEAT).registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); + this.seed = seed; + this.fruit = fruit; } @Override @@ -31,7 +44,7 @@ public class BlockCottonplant extends CropBlock { list.add(new ItemStack(getSeedsItem())); // the one from the seed if (isMature(state)) { list.add(new ItemStack(getSeedsItem(), new Random().nextInt(2))); - list.add(new ItemStack(QuickieItems.COTTON.getItem(), new Random().nextFloat() > 0.9f ? 2 : 1)); + list.add(new ItemStack(fruit, new Random().nextFloat() > 0.9f ? 2 : 1)); } return list; } @@ -52,7 +65,7 @@ public class BlockCottonplant extends CropBlock { @Override protected ItemConvertible getSeedsItem() { - return QuickieItems.COTTONSEED.getItem(); + return seed; } @Override @@ -63,4 +76,4 @@ public class BlockCottonplant extends CropBlock { } return ActionResult.PASS; } -} \ No newline at end of file +} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockQuickiepowder.java b/src/main/java/de/jottyfan/quickiemod/block/BlockPowder.java similarity index 54% rename from src/main/java/de/jottyfan/quickiemod/blocks/BlockQuickiepowder.java rename to src/main/java/de/jottyfan/quickiemod/block/BlockPowder.java index 43a169a..f981d8f 100644 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockQuickiepowder.java +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockPowder.java @@ -1,16 +1,18 @@ -package de.jottyfan.quickiemod.blocks; +package de.jottyfan.quickiemod.block; import java.util.Arrays; import java.util.List; import com.mojang.serialization.MapCodec; -import de.jottyfan.quickiemod.items.QuickieItems; import net.minecraft.block.AbstractBlock; import net.minecraft.block.BlockState; import net.minecraft.block.FallingBlock; import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; +import net.minecraft.loot.context.LootWorldContext.Builder; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; import net.minecraft.world.explosion.Explosion; /** @@ -18,15 +20,18 @@ import net.minecraft.world.explosion.Explosion; * @author jotty * */ -public class BlockQuickiepowder extends FallingBlock { +public class BlockPowder extends FallingBlock { - public BlockQuickiepowder() { - super(AbstractBlock.Settings.create().luminance(state -> 12)); + private final ItemStack[] drops; + + public BlockPowder(Identifier identifier, ItemStack[] drops) { + super(AbstractBlock.Settings.create().luminance(state -> 12).registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); + this.drops = drops; } @Override public List getDroppedStacks(BlockState state, Builder builder) { - return Arrays.asList(new ItemStack[] { new ItemStack(QuickieItems.QUICKIEPOWDER.getItem(), 9) }); + return Arrays.asList(drops); } @Override diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockSandSalpeter.java b/src/main/java/de/jottyfan/quickiemod/block/BlockSandSalpeter.java similarity index 55% rename from src/main/java/de/jottyfan/quickiemod/blocks/BlockSandSalpeter.java rename to src/main/java/de/jottyfan/quickiemod/block/BlockSandSalpeter.java index 50bc957..ab9637b 100644 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockSandSalpeter.java +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockSandSalpeter.java @@ -1,17 +1,20 @@ -package de.jottyfan.quickiemod.blocks; +package de.jottyfan.quickiemod.block; import java.util.Arrays; import java.util.List; import com.mojang.serialization.MapCodec; -import de.jottyfan.quickiemod.items.QuickieItems; +import de.jottyfan.quickiemod.item.ModItems; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.FallingBlock; import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; +import net.minecraft.loot.context.LootWorldContext.Builder; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.Identifier; import net.minecraft.util.math.random.Random; /** @@ -21,13 +24,15 @@ import net.minecraft.util.math.random.Random; */ public class BlockSandSalpeter extends FallingBlock { - public BlockSandSalpeter() { - super(Settings.create().strength(2.5f).hardness(3.1f).sounds(BlockSoundGroup.SOUL_SAND).requiresTool()); + public BlockSandSalpeter(Identifier identifier) { + super(Settings.create().strength(2.5f).hardness(3.1f).sounds(BlockSoundGroup.SOUL_SAND).requiresTool() + .registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); } @Override public List getDroppedStacks(BlockState state, Builder builder) { - return Arrays.asList(new ItemStack[] { new ItemStack(QuickieItems.SALPETER.getItem(), 3 + Random.create().nextInt(2)), new ItemStack(Blocks.SAND) }); + return Arrays.asList(new ItemStack[] { new ItemStack(ModItems.ITEM_SALPETER, 3 + Random.create().nextInt(2)), + new ItemStack(Blocks.SAND) }); } @Override diff --git a/src/main/java/de/jottyfan/quickiemod/block/BlockSlippery.java b/src/main/java/de/jottyfan/quickiemod/block/BlockSlippery.java new file mode 100644 index 0000000..23d6243 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockSlippery.java @@ -0,0 +1,22 @@ +package de.jottyfan.quickiemod.block; + +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class BlockSlippery extends Block { + + public BlockSlippery(Identifier identifier, float hardness, float slipperiness, BlockSoundGroup soundGroup) { + super(AbstractBlock.Settings.create().hardness(hardness).slipperiness(slipperiness).breakInstantly() + .sounds(soundGroup).registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); + } + +} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerDown.java b/src/main/java/de/jottyfan/quickiemod/block/BlockStacker.java similarity index 72% rename from src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerDown.java rename to src/main/java/de/jottyfan/quickiemod/block/BlockStacker.java index e306b03..a17dfc6 100644 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerDown.java +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockStacker.java @@ -1,13 +1,11 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.List; +package de.jottyfan.quickiemod.block; import com.mojang.serialization.MapCodec; -import de.jottyfan.quickiemod.blockentity.BlockEntityTypes; import de.jottyfan.quickiemod.blockentity.BlockStackerEntity; -import de.jottyfan.quickiemod.blocks.help.BlockStacker; +import de.jottyfan.quickiemod.blockentity.ModBlockentity; import net.minecraft.block.AbstractBlock; +import net.minecraft.block.BlockEntityProvider; import net.minecraft.block.BlockRenderType; import net.minecraft.block.BlockState; import net.minecraft.block.BlockWithEntity; @@ -15,11 +13,11 @@ import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.BlockEntityTicker; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.screen.NamedScreenHandlerFactory; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.screen.ScreenHandler; import net.minecraft.util.ActionResult; +import net.minecraft.util.Identifier; import net.minecraft.util.ItemScatterer; import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; @@ -31,20 +29,38 @@ import net.minecraft.world.World; * @author jotty * */ -public class BlockStackerDown extends BlockWithEntity implements BlockStacker { +public class BlockStacker extends BlockWithEntity implements BlockEntityProvider { - public BlockStackerDown() { - super(AbstractBlock.Settings.create().hardness(2.5f)); + private final Direction source; + private final Direction dest; + + public BlockStacker(Identifier identifier, Direction source, Direction dest) { + super(AbstractBlock.Settings.create().hardness(2.5f).registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); + this.source = source; + this.dest = dest; } @Override + public BlockRenderType getRenderType(BlockState state) { + return BlockRenderType.MODEL; + } + + /** + * define the source offset + * + * @return the direction of the source offset (1 block beside) + */ public Direction getSourceOffset() { - return Direction.UP; + return source; } - @Override + /** + * define the dest offset + * + * @return the direction of the dest offset (1 block beside) + */ public Direction getDestOffset() { - return Direction.DOWN; + return dest; } @Override @@ -53,19 +69,15 @@ public class BlockStackerDown extends BlockWithEntity implements BlockStacker { } @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.MODEL; - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - return List.of(new ItemStack(QuickieBlocks.BLOCKSTACKERDOWN.getBlock())); + protected MapCodec getCodec() { + // TODO Auto-generated method stub + return null; } @Override public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type) { - return validateTicker(type, BlockEntityTypes.BLOCKSTACKER_ENTITY, + return validateTicker(type, ModBlockentity.BLOCKSTACKER_BLOCKENTITY, (world1, pos, state1, be) -> BlockStackerEntity.tick(world1, pos, state1, be)); } @@ -102,10 +114,4 @@ public class BlockStackerDown extends BlockWithEntity implements BlockStacker { public int getComparatorOutput(BlockState state, World world, BlockPos pos) { return ScreenHandler.calculateComparatorOutput(world.getBlockEntity(pos)); } - - @Override - protected MapCodec getCodec() { - // TODO Auto-generated method stub - return null; - } } diff --git a/src/main/java/de/jottyfan/quickiemod/block/ModBlocks.java b/src/main/java/de/jottyfan/quickiemod/block/ModBlocks.java new file mode 100644 index 0000000..dd00aa1 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/block/ModBlocks.java @@ -0,0 +1,132 @@ +package de.jottyfan.quickiemod.block; + +import java.util.ArrayList; +import java.util.List; + +import de.jottyfan.quickiemod.Quickiemod; +import de.jottyfan.quickiemod.identifier.ModIdentifiers; +import de.jottyfan.quickiemod.item.ModItems; +import net.minecraft.block.Block; +import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.Direction; + +/** + * + * @author jotty + * + */ +public class ModBlocks { + + public static final Block BLOCK_QUICKIEPOWDER = registerBlock(ModIdentifiers.BLOCK_QUICKIEPOWDER, new BlockPowder( + ModIdentifiers.BLOCK_QUICKIEPOWDER, new ItemStack[] { new ItemStack(ModItems.ITEM_QUICKIEPOWDER, 9) })); + public static final Block BLOCK_SPEEDPOWDER = registerBlock(ModIdentifiers.BLOCK_SPEEDPOWDER, new BlockPowder( + ModIdentifiers.BLOCK_SPEEDPOWDER, new ItemStack[] { new ItemStack(ModItems.ITEM_SPEEDPOWDER, 9) })); + public static final Block BLOCK_SALPETER = registerBlock(ModIdentifiers.BLOCK_SALPETER, new BlockBreakByTool( + ModIdentifiers.BLOCK_SALPETER, 1.5f, 1.5f, new ItemStack[] { new ItemStack(ModItems.ITEM_SALPETER, 9) })); + public static final Block BLOCK_SULFOR = registerBlock(ModIdentifiers.BLOCK_SULFOR, new BlockBreakByTool( + ModIdentifiers.BLOCK_SULFOR, 1.5f, 1.5f, new ItemStack[] { new ItemStack(ModItems.ITEM_SULFOR, 9) })); + public static final Block BLOCK_MONSTERHOARDER = registerBlock(ModIdentifiers.BLOCK_MONSTERHOARDER, + new BlockMonsterhoarder(ModIdentifiers.BLOCK_MONSTERHOARDER)); + public static final Block BLOCK_LAVAHOARDER = registerBlock(ModIdentifiers.BLOCK_LAVAHOARDER, + new BlockLavahoarder(ModIdentifiers.BLOCK_LAVAHOARDER)); + public static final Block BLOCK_EMPTYLAVAHOARDER = registerBlock(ModIdentifiers.BLOCK_EMPTYLAVAHOARDER, + new BlockEmptyLavahoarder(ModIdentifiers.BLOCK_EMPTYLAVAHOARDER)); + public static final Block BLOCK_ITEMHOARDER = registerBlock(ModIdentifiers.BLOCK_ITEMHOARDER, + new BlockItemhoarder(ModIdentifiers.BLOCK_ITEMHOARDER)); + public static final Block BLOCK_DIRTSALPETER = registerBlock(ModIdentifiers.BLOCK_DIRTSALPETER, + new BlockDirtSalpeter(ModIdentifiers.BLOCK_DIRTSALPETER)); + public static final Block BLOCK_OREDEEPSLATESULFOR = registerBlock(ModIdentifiers.BLOCK_OREDEEPSLATESULFOR, + new BlockOreDeepslateSulphor(ModIdentifiers.BLOCK_OREDEEPSLATESULFOR)); + public static final Block BLOCK_ORENETHERSULFOR = registerBlock(ModIdentifiers.BLOCK_ORENETHERSULFOR, + new BlockOreNetherSulphor(ModIdentifiers.BLOCK_ORENETHERSULFOR)); + public static final Block BLOCK_ORESALPETER = registerBlock(ModIdentifiers.BLOCK_ORESALPETER, + new BlockOreSalpeter(ModIdentifiers.BLOCK_ORESALPETER)); + public static final Block BLOCK_ORESANDSALPETER = registerBlock(ModIdentifiers.BLOCK_ORESANDSALPETER, + new BlockOreSandSalpeter(ModIdentifiers.BLOCK_ORESANDSALPETER)); + public static final Block BLOCK_ORESULFOR = registerBlock(ModIdentifiers.BLOCK_ORESULFOR, + new BlockOreSulphor(ModIdentifiers.BLOCK_ORESULFOR)); + public static final Block BLOCK_SANDSALPETER = registerBlock(ModIdentifiers.BLOCK_SANDSALPETER, + new BlockSandSalpeter(ModIdentifiers.BLOCK_SANDSALPETER)); + public static final Block BLOCK_KELPSTACK = registerBlock(ModIdentifiers.BLOCK_KELPSTACK, + new BlockSlippery(ModIdentifiers.BLOCK_KELPSTACK, 0.1f, 1.0f, BlockSoundGroup.WET_GRASS)); + public static final Block BLOCK_COTTONPLANT = registerBlock(ModIdentifiers.BLOCK_COTTONPLANT, + new BlockPlant(ModIdentifiers.BLOCK_COTTONPLANT, ModItems.ITEM_COTTONSEED, ModItems.ITEM_COTTON), false); + public static final Block BLOCK_CANOLAPLANT = registerBlock(ModIdentifiers.BLOCK_CANOLAPLANT, + new BlockPlant(ModIdentifiers.BLOCK_CANOLAPLANT, ModItems.ITEM_CANOLASEED, ModItems.ITEM_CANOLA), false); + public static final Block BLOCK_DRILL_DOWN = registerBlock(ModIdentifiers.BLOCK_DRILLDOWN, + new BlockDrill(ModIdentifiers.BLOCK_DRILLDOWN, Direction.DOWN)); + public static final Block BLOCK_DRILL_EAST = registerBlock(ModIdentifiers.BLOCK_DRILLEAST, + new BlockDrill(ModIdentifiers.BLOCK_DRILLEAST, Direction.EAST)); + public static final Block BLOCK_DRILL_SOUTH = registerBlock(ModIdentifiers.BLOCK_DRILLSOUTH, + new BlockDrill(ModIdentifiers.BLOCK_DRILLSOUTH, Direction.SOUTH)); + public static final Block BLOCK_DRILL_WEST = registerBlock(ModIdentifiers.BLOCK_DRILLWEST, + new BlockDrill(ModIdentifiers.BLOCK_DRILLWEST, Direction.WEST)); + public static final Block BLOCK_DRILL_NORTH = registerBlock(ModIdentifiers.BLOCK_DRILLNORTH, + new BlockDrill(ModIdentifiers.BLOCK_DRILLNORTH, Direction.NORTH)); + public static final Block BLOCK_STACKER_DOWN = registerBlock(ModIdentifiers.BLOCK_STACKERDOWN, + new BlockStacker(ModIdentifiers.BLOCK_STACKERDOWN, Direction.UP, Direction.DOWN)); + public static final Block BLOCK_STACKER_EAST = registerBlock(ModIdentifiers.BLOCK_STACKEREAST, + new BlockStacker(ModIdentifiers.BLOCK_STACKEREAST, Direction.WEST, Direction.EAST)); + public static final Block BLOCK_STACKER_SOUTH = registerBlock(ModIdentifiers.BLOCK_STACKERSOUTH, + new BlockStacker(ModIdentifiers.BLOCK_STACKERSOUTH, Direction.NORTH, Direction.SOUTH)); + public static final Block BLOCK_STACKER_WEST = registerBlock(ModIdentifiers.BLOCK_STACKERWEST, + new BlockStacker(ModIdentifiers.BLOCK_STACKERWEST, Direction.EAST, Direction.WEST)); + public static final Block BLOCK_STACKER_NORTH = registerBlock(ModIdentifiers.BLOCK_STACKERNORTH, + new BlockStacker(ModIdentifiers.BLOCK_STACKERNORTH, Direction.SOUTH, Direction.NORTH)); + public static final Block BLOCK_STACKER_UP = registerBlock(ModIdentifiers.BLOCK_STACKERUP, + new BlockStacker(ModIdentifiers.BLOCK_STACKERUP, Direction.DOWN, Direction.UP)); + + private static final Block registerBlock(Identifier identifier, Block block) { + return registerBlock(identifier, block, true); + } + + private static final Block registerBlock(Identifier identifier, Block block, boolean registerAsItem) { + if (registerAsItem) { + Registry.register(Registries.ITEM, identifier, new BlockItem(block, new Item.Settings() + .registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier)).useBlockPrefixedTranslationKey())); + } + return Registry.register(Registries.BLOCK, identifier, block); + } + + public static final List registerModBlocks() { + Quickiemod.LOGGER.info(String.format("registering blocks for %s", Quickiemod.MOD_ID)); + + List blocks = new ArrayList<>(); + blocks.add(BLOCK_QUICKIEPOWDER); + blocks.add(BLOCK_SPEEDPOWDER); + blocks.add(BLOCK_SALPETER); + blocks.add(BLOCK_SULFOR); + blocks.add(BLOCK_MONSTERHOARDER); + blocks.add(BLOCK_EMPTYLAVAHOARDER); + blocks.add(BLOCK_LAVAHOARDER); + blocks.add(BLOCK_ITEMHOARDER); + blocks.add(BLOCK_DIRTSALPETER); + blocks.add(BLOCK_OREDEEPSLATESULFOR); + blocks.add(BLOCK_ORENETHERSULFOR); + blocks.add(BLOCK_ORESALPETER); + blocks.add(BLOCK_ORESANDSALPETER); + blocks.add(BLOCK_ORESULFOR); + blocks.add(BLOCK_SANDSALPETER); + blocks.add(BLOCK_KELPSTACK); + blocks.add(BLOCK_DRILL_DOWN); + blocks.add(BLOCK_DRILL_EAST); + blocks.add(BLOCK_DRILL_SOUTH); + blocks.add(BLOCK_DRILL_WEST); + blocks.add(BLOCK_DRILL_NORTH); + blocks.add(BLOCK_STACKER_DOWN); + blocks.add(BLOCK_STACKER_EAST); + blocks.add(BLOCK_STACKER_SOUTH); + blocks.add(BLOCK_STACKER_WEST); + blocks.add(BLOCK_STACKER_NORTH); + blocks.add(BLOCK_STACKER_UP); + return blocks; + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/block/StandardBlock.java b/src/main/java/de/jottyfan/quickiemod/block/StandardBlock.java new file mode 100644 index 0000000..a3fe187 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/block/StandardBlock.java @@ -0,0 +1,16 @@ +package de.jottyfan.quickiemod.block; + +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class StandardBlock extends AbstractIdentifiedBlock { + + public StandardBlock(Identifier identifier) { + super(identifier); + } + +} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/help/IntProviderHelper.java b/src/main/java/de/jottyfan/quickiemod/block/help/IntProviderHelper.java similarity index 93% rename from src/main/java/de/jottyfan/quickiemod/blocks/help/IntProviderHelper.java rename to src/main/java/de/jottyfan/quickiemod/block/help/IntProviderHelper.java index c73f186..56abe99 100644 --- a/src/main/java/de/jottyfan/quickiemod/blocks/help/IntProviderHelper.java +++ b/src/main/java/de/jottyfan/quickiemod/block/help/IntProviderHelper.java @@ -1,4 +1,4 @@ -package de.jottyfan.quickiemod.blocks.help; +package de.jottyfan.quickiemod.block.help; import net.minecraft.util.math.intprovider.IntProvider; import net.minecraft.util.math.intprovider.IntProviderType; diff --git a/src/main/java/de/jottyfan/quickiemod/blockentity/BlockEntityTypes.java b/src/main/java/de/jottyfan/quickiemod/blockentity/BlockEntityTypes.java deleted file mode 100644 index 9f1da77..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blockentity/BlockEntityTypes.java +++ /dev/null @@ -1,37 +0,0 @@ -package de.jottyfan.quickiemod.blockentity; - -import de.jottyfan.quickiemod.blocks.QuickieBlocks; -import de.jottyfan.quickiemod.init.BlockEntityIdentity; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.registry.Registries; -import net.minecraft.registry.Registry; - -/** - * - * @author jotty - * - */ -public class BlockEntityTypes { - public static final BlockEntityType EMPTYLAVAHOARDER = Registry.register(Registries.BLOCK_ENTITY_TYPE, - BlockEntityIdentity.EMPTYLAVALHOARDER, BlockEntityType.Builder - .create(EmptyLavaHoarderBlockEntity::new, QuickieBlocks.EMPTYLAVAHOARDER.getBlock(), QuickieBlocks.LAVAHOARDER.getBlock()).build(null)); - public static final BlockEntityType ITEMHOARDER = Registry.register(Registries.BLOCK_ENTITY_TYPE, BlockEntityIdentity.ITEMHOARDER, - BlockEntityType.Builder.create(ItemHoarderBlockEntity::new, QuickieBlocks.ITEMHOARDER.getBlock()).build(null)); - public static final BlockEntityType MONSTERHOARDER = Registry.register(Registries.BLOCK_ENTITY_TYPE, - BlockEntityIdentity.MONSTERHOARDER, BlockEntityType.Builder.create(MonsterHoarderBlockEntity::new, QuickieBlocks.MONSTERHOARDER.getBlock()).build(null)); - public static final BlockEntityType DRILL_DOWN = Registry.register(Registries.BLOCK_ENTITY_TYPE, BlockEntityIdentity.DRILL_DOWN, - BlockEntityType.Builder.create(DrillBlockDownEntity::new, QuickieBlocks.DRILL_DOWN.getBlock()).build(null)); - public static final BlockEntityType DRILL_EAST = Registry.register(Registries.BLOCK_ENTITY_TYPE, BlockEntityIdentity.DRILL_EAST, - BlockEntityType.Builder.create(DrillBlockEastEntity::new, QuickieBlocks.DRILL_EAST.getBlock()).build(null)); - public static final BlockEntityType DRILL_SOUTH = Registry.register(Registries.BLOCK_ENTITY_TYPE, BlockEntityIdentity.DRILL_SOUTH, - BlockEntityType.Builder.create(DrillBlockSouthEntity::new, QuickieBlocks.DRILL_SOUTH.getBlock()).build(null)); - public static final BlockEntityType DRILL_WEST = Registry.register(Registries.BLOCK_ENTITY_TYPE, BlockEntityIdentity.DRILL_WEST, - BlockEntityType.Builder.create(DrillBlockWestEntity::new, QuickieBlocks.DRILL_WEST.getBlock()).build(null)); - public static final BlockEntityType DRILL_NORTH = Registry.register(Registries.BLOCK_ENTITY_TYPE, BlockEntityIdentity.DRILL_NORTH, - BlockEntityType.Builder.create(DrillBlockNorthEntity::new, QuickieBlocks.DRILL_NORTH.getBlock()).build(null)); - public static final BlockEntityType BLOCKSTACKER_ENTITY = Registry.register(Registries.BLOCK_ENTITY_TYPE, - BlockEntityIdentity.BLOCKSTACKERUP, - BlockEntityType.Builder.create(BlockStackerEntity::new, QuickieBlocks.BLOCKSTACKERUP.getBlock(), QuickieBlocks.BLOCKSTACKERDOWN.getBlock(), - QuickieBlocks.BLOCKSTACKEREAST.getBlock(), QuickieBlocks.BLOCKSTACKERWEST.getBlock(), QuickieBlocks.BLOCKSTACKERNORTH.getBlock(), - QuickieBlocks.BLOCKSTACKERSOUTH.getBlock()).build(null)); -} diff --git a/src/main/java/de/jottyfan/quickiemod/blockentity/BlockMonsterhoarder.java b/src/main/java/de/jottyfan/quickiemod/blockentity/BlockMonsterhoarder.java deleted file mode 100644 index 0c6572a..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blockentity/BlockMonsterhoarder.java +++ /dev/null @@ -1,64 +0,0 @@ -package de.jottyfan.quickiemod.blockentity; - -import java.util.ArrayList; -import java.util.List; - -import de.jottyfan.quickiemod.blocks.QuickieBlocks; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockEntityProvider; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityTicker; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.sound.SoundCategory; -import net.minecraft.sound.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class BlockMonsterhoarder extends Block implements BlockEntityProvider { - - - public BlockMonsterhoarder() { - super(AbstractBlock.Settings.create().hardness(2.5f).luminance(state -> 15)); - } - - @Override - public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) { - return new MonsterHoarderBlockEntity(pos, blockState); - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.MODEL; - } - - @Override - public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type){ - return (world1, pos, state1, be) -> MonsterHoarderBlockEntity.tick(world1, pos, state1, be); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - List list = new ArrayList<>(); - list.add(new ItemStack(QuickieBlocks.MONSTERHOARDER.getBlock())); - return list; - } - - @Override - public void onPlaced(World world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack itemStack) { - if (!world.isClient) { - world.playSound(null, pos, SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, SoundCategory.PLAYERS, 1f, 1f); - } - super.onPlaced(world, pos, state, placer, itemStack); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blockentity/BlockStackerEntity.java b/src/main/java/de/jottyfan/quickiemod/blockentity/BlockStackerEntity.java index 09d380b..e08f396 100644 --- a/src/main/java/de/jottyfan/quickiemod/blockentity/BlockStackerEntity.java +++ b/src/main/java/de/jottyfan/quickiemod/blockentity/BlockStackerEntity.java @@ -3,11 +3,8 @@ package de.jottyfan.quickiemod.blockentity; import java.util.ArrayList; import java.util.List; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import de.jottyfan.quickiemod.QuickieMod; -import de.jottyfan.quickiemod.blocks.help.BlockStacker; +import de.jottyfan.quickiemod.Quickiemod; +import de.jottyfan.quickiemod.block.BlockStacker; import de.jottyfan.quickiemod.container.BlockStackerScreenHandler; import de.jottyfan.quickiemod.container.ImplementedInventory; import net.minecraft.block.BlockState; @@ -34,12 +31,11 @@ import net.minecraft.world.World; * */ public class BlockStackerEntity extends BlockEntity implements NamedScreenHandlerFactory, ImplementedInventory { - private static final Logger LOGGER = LoggerFactory.getLogger(QuickieMod.MODID); private final DefaultedList inventory = DefaultedList.ofSize(BlockStackerScreenHandler.SLOTSIZE, ItemStack.EMPTY); public BlockStackerEntity(BlockPos blockPos, BlockState blockState) { - super(BlockEntityTypes.BLOCKSTACKER_ENTITY, blockPos, blockState); + super(ModBlockentity.BLOCKSTACKER_BLOCKENTITY, blockPos, blockState); } @Override @@ -165,7 +161,7 @@ public class BlockStackerEntity extends BlockEntity implements NamedScreenHandle Integer candidates = source.getStack(sourceSlot).getCount(); Integer travellers = candidates > free ? free : candidates; if (travellers > 0) { - LOGGER.debug("transfer {}/{} of {} from slot {} to slot {} on top of {} ones", travellers, candidates, + Quickiemod.LOGGER.debug("transfer {}/{} of {} from slot {} to slot {} on top of {} ones", travellers, candidates, source.getStack(sourceSlot).getItem().toString(), sourceSlot, destSlot, occupied); source.getStack(sourceSlot).decrement(travellers); if (source.getStack(sourceSlot).getCount() < 1) { @@ -177,7 +173,7 @@ public class BlockStackerEntity extends BlockEntity implements NamedScreenHandle } else { Integer destFreeSlot = findItemStackPos(dest, true); if (destFreeSlot != null) { - LOGGER.debug("transfer all of {} from slot {} to slot {}", source.getStack(sourceSlot).getItem().toString(), + Quickiemod.LOGGER.debug("transfer all of {} from slot {} to slot {}", source.getStack(sourceSlot).getItem().toString(), sourceSlot, destSlot); dest.setStack(destFreeSlot, source.removeStack(sourceSlot)); result = true; @@ -236,7 +232,7 @@ public class BlockStackerEntity extends BlockEntity implements NamedScreenHandle private static final Integer findItemStackPos(LootableContainerBlockEntity lcbe, List filterItems, Boolean whitelist) { if (whitelist == null) { whitelist = true; - LOGGER.error("whitelist is null"); + Quickiemod.LOGGER.error("whitelist is null"); } if (filterItems == null || filterItems.size() < 1) { if (whitelist) { diff --git a/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockDownEntity.java b/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockDownEntity.java deleted file mode 100644 index 0af0101..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockDownEntity.java +++ /dev/null @@ -1,62 +0,0 @@ -package de.jottyfan.quickiemod.blockentity; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.BlockState; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class DrillBlockDownEntity extends DrillBlockEntity { - - private static final Integer MAXDRILLSTEP = 20; - - public DrillBlockDownEntity(BlockPos pos, BlockState state) { - super(BlockEntityTypes.DRILL_DOWN, pos, state, MAXDRILLSTEP); - } - - public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) { - if (be instanceof DrillBlockDownEntity) { - DrillBlockDownEntity dbe = (DrillBlockDownEntity) be; - DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, generateBlockPos(pos)); - } - } - - public static final List generateBlockPos(BlockPos pos) { - List list = new ArrayList<>(); - Integer tracesMod = pos.getY() % 8; - tracesMod = tracesMod < 0 ? tracesMod * -1 : tracesMod; // lower that 0 makes it negative - if (tracesMod != 0) { - list.add(pos.north()); - } - if (tracesMod != 1) { - list.add(pos.north().west()); - } - if (tracesMod != 2) { - list.add(pos.west()); - } - if (tracesMod != 3) { - list.add(pos.south().west()); - } - if (tracesMod != 4) { - list.add(pos.south()); - } - if (tracesMod != 5) { - list.add(pos.south().east()); - } - if (tracesMod != 6) { - list.add(pos.east()); - } - if (tracesMod != 7) { - list.add(pos.north().east()); - } - list.add(pos.down()); // must be last position - return list; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockEastEntity.java b/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockEastEntity.java deleted file mode 100644 index 2d1fa31..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockEastEntity.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.jottyfan.quickiemod.blockentity; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.BlockState; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class DrillBlockEastEntity extends DrillBlockEntity { - - private static final Integer MAXDRILLSTEP = 24; - - public DrillBlockEastEntity(BlockPos pos, BlockState state) { - super(BlockEntityTypes.DRILL_EAST, pos, state, MAXDRILLSTEP); - } - - public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) { - if (be instanceof DrillBlockEastEntity) { - DrillBlockEastEntity dbe = (DrillBlockEastEntity) be; - List list = new ArrayList<>(); - list.add(pos.east()); - list.add(pos.east().up()); - list.add(pos.east().up().up()); - list.add(pos.east().up().up().up()); - list.add(pos.east().down()); // must be last position - DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, list); - } - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockEntity.java b/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockEntity.java index df6d2fb..29e5563 100644 --- a/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockEntity.java +++ b/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockEntity.java @@ -1,23 +1,94 @@ package de.jottyfan.quickiemod.blockentity; +import java.util.ArrayList; import java.util.List; -import de.jottyfan.quickiemod.blocks.QuickieBlocks; -import de.jottyfan.quickiemod.blocks.help.DrillBlock; +import de.jottyfan.quickiemod.block.BlockDrill; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityType; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; import net.minecraft.world.World; -public abstract class DrillBlockEntity extends BlockEntity { +/** + * + * @author jotty + * + */ +public class DrillBlockEntity extends BlockEntity { + + private static final Integer MAXDRILLSTEP = 20; + private Integer drillstep; private final Integer maxDrillStep; - public DrillBlockEntity(BlockEntityType type, BlockPos pos, BlockState state, Integer maxDrillStep) { - super(type, pos, state); - this.maxDrillStep = maxDrillStep; + public DrillBlockEntity(BlockPos pos, BlockState state) { + super(ModBlockentity.DRILL_BLOCKENTITY, pos, state); + this.maxDrillStep = MAXDRILLSTEP; + } + + public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) { + if (be instanceof DrillBlockEntity dbe) { + Direction dir = state.get(BlockDrill.DIRECTION); + List list = new ArrayList<>(); + if (Direction.DOWN.equals(dir)) { + list = downFrom(pos); + } else if (Direction.EAST.equals(dir)) { + list = directedFrom(pos.east()); + } else if (Direction.SOUTH.equals(dir)) { + list = directedFrom(pos.south()); + } else if (Direction.WEST.equals(dir)) { + list = directedFrom(pos.west()); + } else if (Direction.NORTH.equals(dir)) { + list = directedFrom(pos.north()); + } + DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, list); + } + } + + public static final List directedFrom(BlockPos pos) { +// Quickiemod.LOGGER.info("directed"); + List list = new ArrayList<>(); + list.add(pos); + list.add(pos.up()); + list.add(pos.up().up()); + list.add(pos.up().up().up()); + list.add(pos.down()); // must be last position + return list; + } + + public static final List downFrom(BlockPos pos) { +// Quickiemod.LOGGER.info("down"); + List list = new ArrayList<>(); + Integer tracesMod = pos.getY() % 8; + tracesMod = tracesMod < 0 ? tracesMod * -1 : tracesMod; // lower that 0 makes it negative + if (tracesMod != 0) { + list.add(pos.north()); + } + if (tracesMod != 1) { + list.add(pos.north().west()); + } + if (tracesMod != 2) { + list.add(pos.west()); + } + if (tracesMod != 3) { + list.add(pos.south().west()); + } + if (tracesMod != 4) { + list.add(pos.south()); + } + if (tracesMod != 5) { + list.add(pos.south().east()); + } + if (tracesMod != 6) { + list.add(pos.east()); + } + if (tracesMod != 7) { + list.add(pos.north().east()); + } + list.add(pos.down()); // must be last position + return list; } protected static final void moveBlockWithEntity(BlockPos from, BlockPos to, World world) { @@ -25,9 +96,8 @@ public abstract class DrillBlockEntity extends BlockEntity { BlockState bs = world.getBlockState(from); if (be != null) { world.setBlockState(from, Blocks.AIR.getDefaultState()); - Integer newFuel = bs.get(DrillBlock.FUEL) - 1; - world.setBlockState(to, bs.with(DrillBlock.FUEL, newFuel)); - world.addBlockEntity(be); + Integer newFuel = bs.get(BlockDrill.FUEL) - 1; + world.setBlockState(to, bs.with(BlockDrill.FUEL, newFuel)); world.removeBlockEntity(from); } } @@ -35,11 +105,11 @@ public abstract class DrillBlockEntity extends BlockEntity { protected static final Boolean drill(BlockPos pos, List toList, World world) { Boolean lastSuccess = false; for (BlockPos to : toList) { - if (!world.getBlockState(to).isOf(Blocks.BEDROCK) && !world.getBlockState(to).isOf(QuickieBlocks.DRILLSTOP.getBlock())) { + if (!world.getBlockState(to).isOf(Blocks.BEDROCK)) { world.breakBlock(to, true); lastSuccess = pos.down() != to; // no need for the falling one } else { - lastSuccess = false; // in case that the last one is a bedrock or a drillstop + lastSuccess = false; // in case that the last one is a bedrock } } return lastSuccess; @@ -47,7 +117,7 @@ public abstract class DrillBlockEntity extends BlockEntity { public static void tick(World world, BlockPos pos, BlockState state, DrillBlockEntity be, Integer maxDrillStep, List drillPosition) { - if (state.get(DrillBlock.FUEL) > 0) { + if (state.get(BlockDrill.FUEL) > 0) { if (be.getDrillstep() < 1) { be.setDrillstep(maxDrillStep); if (drill(pos, drillPosition, world)) { diff --git a/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockNorthEntity.java b/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockNorthEntity.java deleted file mode 100644 index fa11e24..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockNorthEntity.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.jottyfan.quickiemod.blockentity; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.BlockState; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class DrillBlockNorthEntity extends DrillBlockEntity { - - private static final Integer MAXDRILLSTEP = 24; - - public DrillBlockNorthEntity(BlockPos pos, BlockState state) { - super(BlockEntityTypes.DRILL_NORTH, pos, state, MAXDRILLSTEP); - } - - public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) { - if (be instanceof DrillBlockNorthEntity) { - DrillBlockNorthEntity dbe = (DrillBlockNorthEntity) be; - List list = new ArrayList<>(); - list.add(pos.north()); - list.add(pos.north().up()); - list.add(pos.north().up().up()); - list.add(pos.north().up().up().up()); - list.add(pos.north().down()); // must be last position - DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, list); - } - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockSouthEntity.java b/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockSouthEntity.java deleted file mode 100644 index 1be1bb9..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockSouthEntity.java +++ /dev/null @@ -1,35 +0,0 @@ -package de.jottyfan.quickiemod.blockentity; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.BlockState; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class DrillBlockSouthEntity extends DrillBlockEntity { - private static final Integer MAXDRILLSTEP = 24; - - public DrillBlockSouthEntity(BlockPos pos, BlockState state) { - super(BlockEntityTypes.DRILL_SOUTH, pos, state, MAXDRILLSTEP); - } - - public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) { - if (be instanceof DrillBlockSouthEntity) { - DrillBlockSouthEntity dbe = (DrillBlockSouthEntity) be; - List list = new ArrayList<>(); - list.add(pos.south()); - list.add(pos.south().up()); - list.add(pos.south().up().up()); - list.add(pos.south().up().up().up()); - list.add(pos.south().down()); // must be last position - DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, list); - } - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockWestEntity.java b/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockWestEntity.java deleted file mode 100644 index c894240..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blockentity/DrillBlockWestEntity.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.jottyfan.quickiemod.blockentity; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.BlockState; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class DrillBlockWestEntity extends DrillBlockEntity { - - private static final Integer MAXDRILLSTEP = 24; - - public DrillBlockWestEntity(BlockPos pos, BlockState state) { - super(BlockEntityTypes.DRILL_WEST, pos, state, MAXDRILLSTEP); - } - - public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) { - if (be instanceof DrillBlockWestEntity) { - DrillBlockWestEntity dbe = (DrillBlockWestEntity) be; - List list = new ArrayList<>(); - list.add(pos.west()); - list.add(pos.west().up()); - list.add(pos.west().up().up()); - list.add(pos.west().up().up().up()); - list.add(pos.west().down()); // must be last position - DrillBlockEntity.tick(world, pos, state, dbe, MAXDRILLSTEP, list); - } - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blockentity/EmptyLavaHoarderBlockEntity.java b/src/main/java/de/jottyfan/quickiemod/blockentity/EmptyLavaHoarderBlockEntity.java deleted file mode 100644 index 468889c..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blockentity/EmptyLavaHoarderBlockEntity.java +++ /dev/null @@ -1,84 +0,0 @@ -package de.jottyfan.quickiemod.blockentity; - -import java.util.Random; - -import de.jottyfan.quickiemod.blocks.QuickieBlocks; -import de.jottyfan.quickiemod.items.QuickieItems; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.entity.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class EmptyLavaHoarderBlockEntity extends BlockEntity { - - public EmptyLavaHoarderBlockEntity(BlockPos pos, BlockState state) { - super(BlockEntityTypes.EMPTYLAVAHOARDER, pos, state); - } - - public static final void spawnRandomItems(World world, BlockPos pos, Integer count) { - Integer which = new Random().nextInt(10); - if (which < 1) { - world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.DIAMOND, new Random().nextInt(count + 2)))); - } else if (which < 2) { - world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.EMERALD, new Random().nextInt(count + 1)))); - } else if (which < 3) { - world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.RAW_GOLD, new Random().nextInt(count)))); - } else if (which < 4) { - world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.RAW_IRON, new Random().nextInt(count + 1)))); - } else if (which < 5) { - world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.RAW_COPPER, new Random().nextInt(count + 2)))); - } else if (which < 6) { - world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.OBSIDIAN))); - } else if (which < 7) { - world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LAPIS_LAZULI))); - } else if (which < 8) { - world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(QuickieItems.SULPHOR.getItem()))); - } - } - - /** - * sucks the lava that touches the block - * - * @param world the world - * @param pos the pos - * @return true if lava was found - */ - private boolean suckLava(World world, BlockPos pos) { - if (world == null) { - return false; - } else if (Blocks.LAVA.equals(world.getBlockState(pos).getBlock())) { - world.setBlockState(pos, Blocks.AIR.getDefaultState()); - BlockPos up = pos.up(); - Random random = new Random(); - if (random.nextFloat() > 0.9f) { - spawnRandomItems(world, up, 2); - } - return true; - } - return false; - } - - public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) { - if (be instanceof EmptyLavaHoarderBlockEntity) { - EmptyLavaHoarderBlockEntity elhbe = (EmptyLavaHoarderBlockEntity) be; - boolean found = elhbe.suckLava(world, pos.north()); - found = found || elhbe.suckLava(world, pos.south()); - found = found || elhbe.suckLava(world, pos.east()); - found = found || elhbe.suckLava(world, pos.west()); - found = found || elhbe.suckLava(world, pos.up()); - found = found || elhbe.suckLava(world, pos.down()); - if (found) { - world.setBlockState(pos, QuickieBlocks.LAVAHOARDER.getBlock().getDefaultState()); - } - } - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blockentity/ItemHoarderBlockEntity.java b/src/main/java/de/jottyfan/quickiemod/blockentity/ItemHoarderBlockEntity.java index a14665c..6376f66 100644 --- a/src/main/java/de/jottyfan/quickiemod/blockentity/ItemHoarderBlockEntity.java +++ b/src/main/java/de/jottyfan/quickiemod/blockentity/ItemHoarderBlockEntity.java @@ -3,7 +3,6 @@ package de.jottyfan.quickiemod.blockentity; import java.util.ArrayList; import java.util.List; -import de.jottyfan.quickiemod.text.PrefixedText; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.LootableContainerBlockEntity; @@ -30,13 +29,15 @@ import net.minecraft.world.World; * */ public class ItemHoarderBlockEntity extends LootableContainerBlockEntity { + + private DefaultedList stacks; private float suckradius; public ItemHoarderBlockEntity(BlockPos pos, BlockState state) { - super(BlockEntityTypes.ITEMHOARDER, pos, state); + super(ModBlockentity.ITEM_HOARDER_BLOCKENTITY, pos, state); stacks = DefaultedList.ofSize(54, ItemStack.EMPTY); - setSuckradius(4f); // TODO: make it level up - able and start with 2 + setSuckradius(4f); } // TODO: see https://fabricmc.net/wiki/tutorial:containers for a real chest @@ -136,8 +137,7 @@ public class ItemHoarderBlockEntity extends LootableContainerBlockEntity { for (ItemStack stack : stacks) { Item item = stack.getItem(); if (item != Items.AIR) { - Text text = PrefixedText.instance(String.format("%dx ", stack.getCount()).concat("%s"), - Text.translatable(stack.getTranslationKey())); + Text text = Text.of(String.format("%dx %s", stack.getCount(), Text.translatable(stack.getItem().getTranslationKey()))); list.add(text); } } diff --git a/src/main/java/de/jottyfan/quickiemod/blockentity/ModBlockentity.java b/src/main/java/de/jottyfan/quickiemod/blockentity/ModBlockentity.java new file mode 100644 index 0000000..7617111 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/blockentity/ModBlockentity.java @@ -0,0 +1,31 @@ +package de.jottyfan.quickiemod.blockentity; + +import de.jottyfan.quickiemod.block.ModBlocks; +import de.jottyfan.quickiemod.identifier.ModIdentifiers; +import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; + +/** + * + * @author jotty + * + */ +public class ModBlockentity { + public static final BlockEntityType ITEM_HOARDER_BLOCKENTITY = Registry.register( + Registries.BLOCK_ENTITY_TYPE, ModIdentifiers.BLOCKENTITY_ITEMHOARDER, + FabricBlockEntityTypeBuilder.create(ItemHoarderBlockEntity::new, ModBlocks.BLOCK_ITEMHOARDER).build()); + public static final BlockEntityType DRILL_BLOCKENTITY = Registry.register( + Registries.BLOCK_ENTITY_TYPE, ModIdentifiers.BLOCKENTITY_DRILL, + FabricBlockEntityTypeBuilder.create(DrillBlockEntity::new, ModBlocks.BLOCK_DRILL_DOWN, ModBlocks.BLOCK_DRILL_EAST, + ModBlocks.BLOCK_DRILL_SOUTH, ModBlocks.BLOCK_DRILL_WEST, ModBlocks.BLOCK_DRILL_NORTH).build()); + public static final BlockEntityType BLOCKSTACKER_BLOCKENTITY = Registry.register( + Registries.BLOCK_ENTITY_TYPE, ModIdentifiers.BLOCKENTITY_BLOCKSTACKER, + FabricBlockEntityTypeBuilder.create(BlockStackerEntity::new, ModBlocks.BLOCK_STACKER_DOWN, + ModBlocks.BLOCK_STACKER_EAST, ModBlocks.BLOCK_STACKER_SOUTH, ModBlocks.BLOCK_STACKER_WEST, + ModBlocks.BLOCK_STACKER_NORTH, ModBlocks.BLOCK_STACKER_UP).build()); + + public static final void registerModBlockentities() { + }; +} diff --git a/src/main/java/de/jottyfan/quickiemod/blockentity/MonsterHoarderBlockEntity.java b/src/main/java/de/jottyfan/quickiemod/blockentity/MonsterHoarderBlockEntity.java deleted file mode 100644 index 9cf34b6..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blockentity/MonsterHoarderBlockEntity.java +++ /dev/null @@ -1,51 +0,0 @@ -package de.jottyfan.quickiemod.blockentity; - -import java.util.List; - -import net.minecraft.block.BlockState; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.entity.Entity; -import net.minecraft.entity.mob.HostileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Box; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class MonsterHoarderBlockEntity extends BlockEntity { - - private float suckradius; - - public MonsterHoarderBlockEntity(BlockPos pos, BlockState state) { - super(BlockEntityTypes.MONSTERHOARDER, pos, state); - setSuckradius(8f); // TODO: make it level up - able and start with 2 - } - - public static void tick(World world, BlockPos pos, BlockState state, BlockEntity be) { - if (be instanceof MonsterHoarderBlockEntity) { - MonsterHoarderBlockEntity mhbe = (MonsterHoarderBlockEntity) be; - Box box = new Box(pos).expand(mhbe.getSuckradius()); - List entities = world.getOtherEntities(null, box); - for (Entity entity : entities) { - if (entity instanceof HostileEntity) { - if (entity.isFireImmune()) { - entity.kill(); - } else { - entity.setOnFireFor(90); - } - } - } - } - } - - public float getSuckradius() { - return suckradius; - } - - public void setSuckradius(float suckradius) { - this.suckradius = suckradius; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockCanolaplant.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockCanolaplant.java deleted file mode 100644 index 9def8ee..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockCanolaplant.java +++ /dev/null @@ -1,66 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.List; -import java.util.Random; - -import de.jottyfan.quickiemod.items.QuickieItems; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.CropBlock; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.util.ActionResult; -import net.minecraft.util.ItemScatterer; -import net.minecraft.util.collection.DefaultedList; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public class BlockCanolaplant extends CropBlock { - - public BlockCanolaplant() { - super(AbstractBlock.Settings.copy(Blocks.WHEAT)); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - DefaultedList list = DefaultedList.of(); - list.add(new ItemStack(getSeedsItem())); // the one from the seed - if (isMature(state)) { - list.add(new ItemStack(getSeedsItem(), new Random().nextInt(2))); - list.add(new ItemStack(QuickieItems.CANOLA.getItem(), new Random().nextFloat() > 0.9f ? 2 : 1)); - } - return list; - } - - private void spawnHarvested(World world, BlockPos pos, BlockState state) { - DefaultedList list = DefaultedList.of(); - getDroppedStacks(state, null).forEach(itemStack -> { - list.add(itemStack); - }); - ItemScatterer.spawn(world, pos, list); - } - - @Override - public BlockState onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) { - spawnHarvested(world, pos, state); - return super.onBreak(world, pos, state, player); - } - - @Override - protected ItemConvertible getSeedsItem() { - return QuickieItems.CANOLASEED.getItem(); - } - - @Override - protected ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) { - if (!world.isClient && isMature(state)) { - spawnHarvested(world, pos, state); - world.setBlockState(pos, state.with(AGE, 0)); - } - return ActionResult.PASS; - } -} \ No newline at end of file diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillDown.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillDown.java deleted file mode 100644 index 765f6be..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillDown.java +++ /dev/null @@ -1,61 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.ArrayList; -import java.util.List; - -import com.mojang.serialization.MapCodec; - -import de.jottyfan.quickiemod.blockentity.DrillBlockDownEntity; -import de.jottyfan.quickiemod.blocks.help.DrillBlock; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.BlockEntityProvider; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.FallingBlock; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityTicker; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class BlockDrillDown extends DrillBlock implements BlockEntityProvider { - - public BlockDrillDown() { - super(AbstractBlock.Settings.create().hardness(2.5f)); - } - - @Override - public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) { - return new DrillBlockDownEntity(pos, blockState); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - List list = new ArrayList<>(); - list.add(new ItemStack(QuickieBlocks.DRILL_DOWN.getBlock())); - return list; - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.MODEL; - } - - @Override - public BlockEntityTicker getTicker(World world, BlockState state, - BlockEntityType type) { - return (world1, pos, state1, be) -> DrillBlockDownEntity.tick(world1, pos, state1, be); - } - - @Override - protected MapCodec getCodec() { - return null; // TODO: what to return here? - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillEast.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillEast.java deleted file mode 100644 index faafa38..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillEast.java +++ /dev/null @@ -1,61 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.ArrayList; -import java.util.List; - -import com.mojang.serialization.MapCodec; - -import de.jottyfan.quickiemod.blockentity.DrillBlockEastEntity; -import de.jottyfan.quickiemod.blocks.help.DrillBlock; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.BlockEntityProvider; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.FallingBlock; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityTicker; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class BlockDrillEast extends DrillBlock implements BlockEntityProvider { - - public BlockDrillEast() { - super(AbstractBlock.Settings.create().hardness(2.5f)); - } - - @Override - public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) { - return new DrillBlockEastEntity(pos, blockState); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - List list = new ArrayList<>(); - list.add(new ItemStack(QuickieBlocks.DRILL_EAST.getBlock())); - return list; - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.MODEL; - } - - @Override - public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type){ - return (world1, pos, state1, be) -> DrillBlockEastEntity.tick(world1, pos, state1, be); - } - - @Override - protected MapCodec getCodec() { - // TODO Auto-generated method stub - return null; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillNorth.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillNorth.java deleted file mode 100644 index b226876..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillNorth.java +++ /dev/null @@ -1,61 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.ArrayList; -import java.util.List; - -import com.mojang.serialization.MapCodec; - -import de.jottyfan.quickiemod.blockentity.DrillBlockNorthEntity; -import de.jottyfan.quickiemod.blocks.help.DrillBlock; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.BlockEntityProvider; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.FallingBlock; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityTicker; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class BlockDrillNorth extends DrillBlock implements BlockEntityProvider { - - public BlockDrillNorth() { - super(AbstractBlock.Settings.create().hardness(2.5f)); - } - - @Override - public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) { - return new DrillBlockNorthEntity(pos, blockState); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - List list = new ArrayList<>(); - list.add(new ItemStack(QuickieBlocks.DRILL_NORTH.getBlock())); - return list; - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.MODEL; - } - - @Override - public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type){ - return (world1, pos, state1, be) -> DrillBlockNorthEntity.tick(world1, pos, state1, be); - } - - @Override - protected MapCodec getCodec() { - // TODO Auto-generated method stub - return null; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillSouth.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillSouth.java deleted file mode 100644 index 92b73bb..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillSouth.java +++ /dev/null @@ -1,61 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.ArrayList; -import java.util.List; - -import com.mojang.serialization.MapCodec; - -import de.jottyfan.quickiemod.blockentity.DrillBlockSouthEntity; -import de.jottyfan.quickiemod.blocks.help.DrillBlock; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.BlockEntityProvider; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.FallingBlock; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityTicker; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class BlockDrillSouth extends DrillBlock implements BlockEntityProvider { - - public BlockDrillSouth() { - super(AbstractBlock.Settings.create().hardness(2.5f)); - } - - @Override - public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) { - return new DrillBlockSouthEntity(pos, blockState); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - List list = new ArrayList<>(); - list.add(new ItemStack(QuickieBlocks.DRILL_SOUTH.getBlock())); - return list; - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.MODEL; - } - - @Override - public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type){ - return (world1, pos, state1, be) -> DrillBlockSouthEntity.tick(world1, pos, state1, be); - } - - @Override - protected MapCodec getCodec() { - // TODO Auto-generated method stub - return null; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillWest.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillWest.java deleted file mode 100644 index d602e9a..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillWest.java +++ /dev/null @@ -1,61 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.ArrayList; -import java.util.List; - -import com.mojang.serialization.MapCodec; - -import de.jottyfan.quickiemod.blockentity.DrillBlockWestEntity; -import de.jottyfan.quickiemod.blocks.help.DrillBlock; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.BlockEntityProvider; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.FallingBlock; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityTicker; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class BlockDrillWest extends DrillBlock implements BlockEntityProvider { - - public BlockDrillWest() { - super(AbstractBlock.Settings.create().hardness(2.5f)); - } - - @Override - public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) { - return new DrillBlockWestEntity(pos, blockState); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - List list = new ArrayList<>(); - list.add(new ItemStack(QuickieBlocks.DRILL_WEST.getBlock())); - return list; - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.MODEL; - } - - @Override - public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type){ - return (world1, pos, state1, be) -> DrillBlockWestEntity.tick(world1, pos, state1, be); - } - - @Override - protected MapCodec getCodec() { - // TODO Auto-generated method stub - return null; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillstop.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillstop.java deleted file mode 100644 index f5fc456..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockDrillstop.java +++ /dev/null @@ -1,30 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; - - -/** - * - * @author jotty - * - */ -public class BlockDrillstop extends Block { - - public BlockDrillstop() { - super(AbstractBlock.Settings.create().hardness(2.5f)); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - List list = new ArrayList<>(); - list.add(new ItemStack(QuickieBlocks.DRILLSTOP.getBlock())); - return list; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockKelpstack.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockKelpstack.java deleted file mode 100644 index 8d84f20..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockKelpstack.java +++ /dev/null @@ -1,38 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.Arrays; -import java.util.List; - -import com.mojang.serialization.MapCodec; - -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.BlockState; -import net.minecraft.block.FallingBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.sound.BlockSoundGroup; - -/** - * - * @author jotty - * - */ -public class BlockKelpstack extends FallingBlock { - - public BlockKelpstack() { - super(AbstractBlock.Settings.create().hardness(0.1f).slipperiness(1.0f) - .breakInstantly().sounds(BlockSoundGroup.WET_GRASS)); - } - - @Override - public List getDroppedStacks(BlockState blockState, Builder builder) { - return Arrays.asList(new ItemStack[] { new ItemStack(Items.KELP, 9) }); - } - - @Override - protected MapCodec getCodec() { - // TODO Auto-generated method stub - return null; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockLavahoarder.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockLavahoarder.java deleted file mode 100644 index a7b3291..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockLavahoarder.java +++ /dev/null @@ -1,81 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.ArrayList; -import java.util.List; - -import de.jottyfan.quickiemod.blockentity.EmptyLavaHoarderBlockEntity; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockEntityProvider; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityTicker; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.entity.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class BlockLavahoarder extends Block implements BlockEntityProvider { - - public BlockLavahoarder() { - super(AbstractBlock.Settings.create().hardness(2.5f).luminance(state -> 15)); - } - - @Override - public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) { - return new EmptyLavaHoarderBlockEntity(pos, blockState); - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.MODEL; - } - - @Override - public BlockEntityTicker getTicker(World world, BlockState state, - BlockEntityType type) { - return (world1, pos, state1, be) -> EmptyLavaHoarderBlockEntity.tick(world1, pos, state1, be); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - List list = new ArrayList<>(); - list.add(new ItemStack(QuickieBlocks.LAVAHOARDER.getBlock())); - return list; - } - - @Override - protected ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) { - if (!world.isClient) { - Hand hand = player.getActiveHand(); - ItemStack handStack = player.getStackInHand(hand); - if (handStack != null && Items.BUCKET.equals(handStack.getItem())) { - Integer amount = handStack.getCount(); - ItemStack lavaBucketStack = new ItemStack(Items.LAVA_BUCKET, 1); - ItemStack emptyBucketStack = new ItemStack(Items.BUCKET, amount - 1); - if (emptyBucketStack.getCount() < 1) { - player.setStackInHand(hand, lavaBucketStack); - } else { - player.setStackInHand(hand, emptyBucketStack); - world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), lavaBucketStack)); - } - EmptyLavaHoarderBlockEntity.spawnRandomItems(world, pos, 2); - world.setBlockState(pos, QuickieBlocks.EMPTYLAVAHOARDER.getBlock().getDefaultState()); - } - } - return ActionResult.SUCCESS; // forbid to empty the just filled lava bucket - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockMonsterhoarder.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockMonsterhoarder.java deleted file mode 100644 index f635838..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockMonsterhoarder.java +++ /dev/null @@ -1,64 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.ArrayList; -import java.util.List; - -import de.jottyfan.quickiemod.blockentity.MonsterHoarderBlockEntity; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockEntityProvider; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityTicker; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.sound.SoundCategory; -import net.minecraft.sound.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class BlockMonsterhoarder extends Block implements BlockEntityProvider { - - - public BlockMonsterhoarder() { - super(AbstractBlock.Settings.create().hardness(2.5f).luminance(state -> 15)); - } - - @Override - public BlockEntity createBlockEntity(BlockPos pos, BlockState blockState) { - return new MonsterHoarderBlockEntity(pos, blockState); - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.MODEL; - } - - @Override - public BlockEntityTicker getTicker(World world, BlockState state, BlockEntityType type){ - return (world1, pos, state1, be) -> MonsterHoarderBlockEntity.tick(world1, pos, state1, be); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - List list = new ArrayList<>(); - list.add(new ItemStack(QuickieBlocks.MONSTERHOARDER.getBlock())); - return list; - } - - @Override - public void onPlaced(World world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack itemStack) { - if (!world.isClient) { - world.playSound(null, pos, SoundEvents.UI_TOAST_CHALLENGE_COMPLETE, SoundCategory.PLAYERS, 1f, 1f); - } - super.onPlaced(world, pos, state, placer, itemStack); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockOreDeepslateSulphor.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockOreDeepslateSulphor.java deleted file mode 100644 index 77bf6cd..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockOreDeepslateSulphor.java +++ /dev/null @@ -1,30 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.Arrays; -import java.util.List; - -import de.jottyfan.quickiemod.blocks.help.IntProviderHelper; -import de.jottyfan.quickiemod.items.QuickieItems; -import net.minecraft.block.BlockState; -import net.minecraft.block.ExperienceDroppingBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.sound.BlockSoundGroup; - - -/** - * - * @author jotty - * - */ -public class BlockOreDeepslateSulphor extends ExperienceDroppingBlock { - - public BlockOreDeepslateSulphor() { - super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(1.9f).sounds(BlockSoundGroup.SOUL_SAND).requiresTool()); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - return Arrays.asList(new ItemStack[] { new ItemStack(QuickieItems.SULPHOR.getItem(), 4) }); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockOreNetherSulphor.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockOreNetherSulphor.java deleted file mode 100644 index 8a5da41..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockOreNetherSulphor.java +++ /dev/null @@ -1,29 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.Arrays; -import java.util.List; - -import de.jottyfan.quickiemod.blocks.help.IntProviderHelper; -import de.jottyfan.quickiemod.items.QuickieItems; -import net.minecraft.block.BlockState; -import net.minecraft.block.ExperienceDroppingBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.sound.BlockSoundGroup; - -/** - * - * @author jotty - * - */ -public class BlockOreNetherSulphor extends ExperienceDroppingBlock { - - public BlockOreNetherSulphor() { - super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(2.1f).sounds(BlockSoundGroup.SOUL_SAND).requiresTool()); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - return Arrays.asList(new ItemStack[] { new ItemStack(QuickieItems.SULPHOR.getItem()) }); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockOreSalpeter.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockOreSalpeter.java deleted file mode 100644 index ff5f183..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockOreSalpeter.java +++ /dev/null @@ -1,30 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.Arrays; -import java.util.List; - -import de.jottyfan.quickiemod.blocks.help.IntProviderHelper; -import de.jottyfan.quickiemod.items.QuickieItems; -import net.minecraft.block.BlockState; -import net.minecraft.block.ExperienceDroppingBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.sound.BlockSoundGroup; -import net.minecraft.util.math.random.Random; - -/** - * - * @author jotty - * - */ -public class BlockOreSalpeter extends ExperienceDroppingBlock { - - public BlockOreSalpeter() { - super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(3.1f).sounds(BlockSoundGroup.SOUL_SAND).requiresTool()); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - return Arrays.asList(new ItemStack[] { new ItemStack(QuickieItems.SALPETER.getItem(), 2 + Random.create().nextInt(3)) }); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockOreSulphor.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockOreSulphor.java deleted file mode 100644 index b6c8930..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockOreSulphor.java +++ /dev/null @@ -1,30 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.Arrays; -import java.util.List; - -import de.jottyfan.quickiemod.blocks.help.IntProviderHelper; -import de.jottyfan.quickiemod.items.QuickieItems; -import net.minecraft.block.BlockState; -import net.minecraft.block.ExperienceDroppingBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.sound.BlockSoundGroup; - - -/** - * - * @author jotty - * - */ -public class BlockOreSulphor extends ExperienceDroppingBlock { - - public BlockOreSulphor() { - super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(1.9f).sounds(BlockSoundGroup.SOUL_SAND).requiresTool()); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - return Arrays.asList(new ItemStack[] { new ItemStack(QuickieItems.SULPHOR.getItem()) }); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockSalpeter.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockSalpeter.java deleted file mode 100644 index daf245d..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockSalpeter.java +++ /dev/null @@ -1,29 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.Arrays; -import java.util.List; - -import de.jottyfan.quickiemod.blocks.help.IntProviderHelper; -import de.jottyfan.quickiemod.items.QuickieItems; -import net.minecraft.block.BlockState; -import net.minecraft.block.ExperienceDroppingBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.sound.BlockSoundGroup; - -/** - * - * @author jotty - * - */ -public class BlockSalpeter extends ExperienceDroppingBlock { - - public BlockSalpeter() { - super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(0.5f).sounds(BlockSoundGroup.SOUL_SAND).requiresTool()); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - return Arrays.asList(new ItemStack[] { new ItemStack(QuickieItems.SALPETER.getItem(), 9) }); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerEast.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerEast.java deleted file mode 100644 index 605726c..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerEast.java +++ /dev/null @@ -1,111 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.List; - -import com.mojang.serialization.MapCodec; - -import de.jottyfan.quickiemod.blockentity.BlockEntityTypes; -import de.jottyfan.quickiemod.blockentity.BlockStackerEntity; -import de.jottyfan.quickiemod.blocks.help.BlockStacker; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.BlockWithEntity; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityTicker; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.screen.NamedScreenHandlerFactory; -import net.minecraft.screen.ScreenHandler; -import net.minecraft.util.ActionResult; -import net.minecraft.util.ItemScatterer; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class BlockStackerEast extends BlockWithEntity implements BlockStacker { - - public BlockStackerEast() { - super(AbstractBlock.Settings.create().hardness(2.5f)); - } - - @Override - public Direction getSourceOffset() { - return Direction.WEST; - } - - @Override - public Direction getDestOffset() { - return Direction.EAST; - } - - @Override - public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { - return new BlockStackerEntity(pos, state); - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.MODEL; - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - return List.of(new ItemStack(QuickieBlocks.BLOCKSTACKEREAST.getBlock())); - } - - @Override - public BlockEntityTicker getTicker(World world, BlockState state, - BlockEntityType type) { - return validateTicker(type, BlockEntityTypes.BLOCKSTACKER_ENTITY, - (world1, pos, state1, be) -> BlockStackerEntity.tick(world1, pos, state1, be)); - } - - @Override - protected ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) { - if (!world.isClient) { - NamedScreenHandlerFactory screenHandlerFactory = state.createScreenHandlerFactory(world, pos); - if (screenHandlerFactory != null) { - player.openHandledScreen(screenHandlerFactory); - } - } - return ActionResult.SUCCESS; - } - - @Override - public void onStateReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean moved) { - if (state.getBlock() != newState.getBlock()) { - BlockEntity blockEntity = world.getBlockEntity(pos); - if (blockEntity instanceof BlockStackerEntity) { - ItemScatterer.spawn(world, pos, (BlockStackerEntity) blockEntity); - // update comparators - world.updateComparators(pos, this); - } - super.onStateReplaced(state, world, pos, newState, moved); - } - } - - @Override - public boolean hasComparatorOutput(BlockState state) { - return true; - } - - @Override - public int getComparatorOutput(BlockState state, World world, BlockPos pos) { - return ScreenHandler.calculateComparatorOutput(world.getBlockEntity(pos)); - } - - @Override - protected MapCodec getCodec() { - // TODO Auto-generated method stub - return null; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerNorth.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerNorth.java deleted file mode 100644 index c34cda7..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerNorth.java +++ /dev/null @@ -1,111 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.List; - -import com.mojang.serialization.MapCodec; - -import de.jottyfan.quickiemod.blockentity.BlockEntityTypes; -import de.jottyfan.quickiemod.blockentity.BlockStackerEntity; -import de.jottyfan.quickiemod.blocks.help.BlockStacker; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.BlockWithEntity; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityTicker; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.screen.NamedScreenHandlerFactory; -import net.minecraft.screen.ScreenHandler; -import net.minecraft.util.ActionResult; -import net.minecraft.util.ItemScatterer; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class BlockStackerNorth extends BlockWithEntity implements BlockStacker { - - public BlockStackerNorth() { - super(AbstractBlock.Settings.create().hardness(2.5f)); - } - - @Override - public Direction getSourceOffset() { - return Direction.SOUTH; - } - - @Override - public Direction getDestOffset() { - return Direction.NORTH; - } - - @Override - public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { - return new BlockStackerEntity(pos, state); - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.MODEL; - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - return List.of(new ItemStack(QuickieBlocks.BLOCKSTACKERNORTH.getBlock())); - } - - @Override - public BlockEntityTicker getTicker(World world, BlockState state, - BlockEntityType type) { - return validateTicker(type, BlockEntityTypes.BLOCKSTACKER_ENTITY, - (world1, pos, state1, be) -> BlockStackerEntity.tick(world1, pos, state1, be)); - } - - @Override - protected ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) { - if (!world.isClient) { - NamedScreenHandlerFactory screenHandlerFactory = state.createScreenHandlerFactory(world, pos); - if (screenHandlerFactory != null) { - player.openHandledScreen(screenHandlerFactory); - } - } - return ActionResult.SUCCESS; - } - - @Override - public void onStateReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean moved) { - if (state.getBlock() != newState.getBlock()) { - BlockEntity blockEntity = world.getBlockEntity(pos); - if (blockEntity instanceof BlockStackerEntity) { - ItemScatterer.spawn(world, pos, (BlockStackerEntity) blockEntity); - // update comparators - world.updateComparators(pos, this); - } - super.onStateReplaced(state, world, pos, newState, moved); - } - } - - @Override - public boolean hasComparatorOutput(BlockState state) { - return true; - } - - @Override - public int getComparatorOutput(BlockState state, World world, BlockPos pos) { - return ScreenHandler.calculateComparatorOutput(world.getBlockEntity(pos)); - } - - @Override - protected MapCodec getCodec() { - // TODO Auto-generated method stub - return null; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerSouth.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerSouth.java deleted file mode 100644 index afbb7b2..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerSouth.java +++ /dev/null @@ -1,111 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.List; - -import com.mojang.serialization.MapCodec; - -import de.jottyfan.quickiemod.blockentity.BlockEntityTypes; -import de.jottyfan.quickiemod.blockentity.BlockStackerEntity; -import de.jottyfan.quickiemod.blocks.help.BlockStacker; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.BlockWithEntity; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityTicker; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.screen.NamedScreenHandlerFactory; -import net.minecraft.screen.ScreenHandler; -import net.minecraft.util.ActionResult; -import net.minecraft.util.ItemScatterer; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class BlockStackerSouth extends BlockWithEntity implements BlockStacker { - - public BlockStackerSouth() { - super(AbstractBlock.Settings.create().hardness(2.5f)); - } - - @Override - public Direction getSourceOffset() { - return Direction.NORTH; - } - - @Override - public Direction getDestOffset() { - return Direction.SOUTH; - } - - @Override - public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { - return new BlockStackerEntity(pos, state); - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.MODEL; - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - return List.of(new ItemStack(QuickieBlocks.BLOCKSTACKERSOUTH.getBlock())); - } - - @Override - public BlockEntityTicker getTicker(World world, BlockState state, - BlockEntityType type) { - return validateTicker(type, BlockEntityTypes.BLOCKSTACKER_ENTITY, - (world1, pos, state1, be) -> BlockStackerEntity.tick(world1, pos, state1, be)); - } - - @Override - protected ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) { - if (!world.isClient) { - NamedScreenHandlerFactory screenHandlerFactory = state.createScreenHandlerFactory(world, pos); - if (screenHandlerFactory != null) { - player.openHandledScreen(screenHandlerFactory); - } - } - return ActionResult.SUCCESS; - } - - @Override - public void onStateReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean moved) { - if (state.getBlock() != newState.getBlock()) { - BlockEntity blockEntity = world.getBlockEntity(pos); - if (blockEntity instanceof BlockStackerEntity) { - ItemScatterer.spawn(world, pos, (BlockStackerEntity) blockEntity); - // update comparators - world.updateComparators(pos, this); - } - super.onStateReplaced(state, world, pos, newState, moved); - } - } - - @Override - public boolean hasComparatorOutput(BlockState state) { - return true; - } - - @Override - public int getComparatorOutput(BlockState state, World world, BlockPos pos) { - return ScreenHandler.calculateComparatorOutput(world.getBlockEntity(pos)); - } - - @Override - protected MapCodec getCodec() { - // TODO Auto-generated method stub - return null; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerUp.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerUp.java deleted file mode 100644 index 67d13e8..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerUp.java +++ /dev/null @@ -1,111 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.List; - -import com.mojang.serialization.MapCodec; - -import de.jottyfan.quickiemod.blockentity.BlockEntityTypes; -import de.jottyfan.quickiemod.blockentity.BlockStackerEntity; -import de.jottyfan.quickiemod.blocks.help.BlockStacker; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.BlockWithEntity; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityTicker; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.screen.NamedScreenHandlerFactory; -import net.minecraft.screen.ScreenHandler; -import net.minecraft.util.ActionResult; -import net.minecraft.util.ItemScatterer; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class BlockStackerUp extends BlockWithEntity implements BlockStacker { - - public BlockStackerUp() { - super(AbstractBlock.Settings.create().hardness(2.5f)); - } - - @Override - public Direction getSourceOffset() { - return Direction.DOWN; - } - - @Override - public Direction getDestOffset() { - return Direction.UP; - } - - @Override - public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { - return new BlockStackerEntity(pos, state); - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.MODEL; - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - return List.of(new ItemStack(QuickieBlocks.BLOCKSTACKERUP.getBlock())); - } - - @Override - public BlockEntityTicker getTicker(World world, BlockState state, - BlockEntityType type) { - return validateTicker(type, BlockEntityTypes.BLOCKSTACKER_ENTITY, - (world1, pos, state1, be) -> BlockStackerEntity.tick(world1, pos, state1, be)); - } - - @Override - protected ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) { - if (!world.isClient) { - NamedScreenHandlerFactory screenHandlerFactory = state.createScreenHandlerFactory(world, pos); - if (screenHandlerFactory != null) { - player.openHandledScreen(screenHandlerFactory); - } - } - return ActionResult.SUCCESS; - } - - @Override - public void onStateReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean moved) { - if (state.getBlock() != newState.getBlock()) { - BlockEntity blockEntity = world.getBlockEntity(pos); - if (blockEntity instanceof BlockStackerEntity) { - ItemScatterer.spawn(world, pos, (BlockStackerEntity) blockEntity); - // update comparators - world.updateComparators(pos, this); - } - super.onStateReplaced(state, world, pos, newState, moved); - } - } - - @Override - public boolean hasComparatorOutput(BlockState state) { - return true; - } - - @Override - public int getComparatorOutput(BlockState state, World world, BlockPos pos) { - return ScreenHandler.calculateComparatorOutput(world.getBlockEntity(pos)); - } - - @Override - protected MapCodec getCodec() { - // TODO Auto-generated method stub - return null; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerWest.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerWest.java deleted file mode 100644 index f970db8..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockStackerWest.java +++ /dev/null @@ -1,111 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.List; - -import com.mojang.serialization.MapCodec; - -import de.jottyfan.quickiemod.blockentity.BlockEntityTypes; -import de.jottyfan.quickiemod.blockentity.BlockStackerEntity; -import de.jottyfan.quickiemod.blocks.help.BlockStacker; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.BlockWithEntity; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityTicker; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.screen.NamedScreenHandlerFactory; -import net.minecraft.screen.ScreenHandler; -import net.minecraft.util.ActionResult; -import net.minecraft.util.ItemScatterer; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class BlockStackerWest extends BlockWithEntity implements BlockStacker { - - public BlockStackerWest() { - super(AbstractBlock.Settings.create().hardness(2.5f)); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - return List.of(new ItemStack(QuickieBlocks.BLOCKSTACKERWEST.getBlock())); - } - - @Override - public Direction getSourceOffset() { - return Direction.EAST; - } - - @Override - public Direction getDestOffset() { - return Direction.WEST; - } - - @Override - public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { - return new BlockStackerEntity(pos, state); - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.MODEL; - } - - @Override - public BlockEntityTicker getTicker(World world, BlockState state, - BlockEntityType type) { - return validateTicker(type, BlockEntityTypes.BLOCKSTACKER_ENTITY, - (world1, pos, state1, be) -> BlockStackerEntity.tick(world1, pos, state1, be)); - } - - @Override - protected ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) { - if (!world.isClient) { - NamedScreenHandlerFactory screenHandlerFactory = state.createScreenHandlerFactory(world, pos); - if (screenHandlerFactory != null) { - player.openHandledScreen(screenHandlerFactory); - } - } - return ActionResult.SUCCESS; - } - - @Override - public void onStateReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean moved) { - if (state.getBlock() != newState.getBlock()) { - BlockEntity blockEntity = world.getBlockEntity(pos); - if (blockEntity instanceof BlockStackerEntity) { - ItemScatterer.spawn(world, pos, (BlockStackerEntity) blockEntity); - // update comparators - world.updateComparators(pos, this); - } - super.onStateReplaced(state, world, pos, newState, moved); - } - } - - @Override - public boolean hasComparatorOutput(BlockState state) { - return true; - } - - @Override - public int getComparatorOutput(BlockState state, World world, BlockPos pos) { - return ScreenHandler.calculateComparatorOutput(world.getBlockEntity(pos)); - } - - @Override - protected MapCodec getCodec() { - // TODO Auto-generated method stub - return null; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/BlockSulphor.java b/src/main/java/de/jottyfan/quickiemod/blocks/BlockSulphor.java deleted file mode 100644 index cfe8dd0..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/BlockSulphor.java +++ /dev/null @@ -1,29 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import java.util.Arrays; -import java.util.List; - -import de.jottyfan.quickiemod.blocks.help.IntProviderHelper; -import de.jottyfan.quickiemod.items.QuickieItems; -import net.minecraft.block.BlockState; -import net.minecraft.block.ExperienceDroppingBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContextParameterSet.Builder; -import net.minecraft.sound.BlockSoundGroup; - -/** - * - * @author jotty - * - */ -public class BlockSulphor extends ExperienceDroppingBlock { - - public BlockSulphor() { - super(IntProviderHelper.of(0, 2), Settings.create().strength(2.5f).hardness(0.5f).sounds(BlockSoundGroup.SOUL_SAND).requiresTool()); - } - - @Override - public List getDroppedStacks(BlockState state, Builder builder) { - return Arrays.asList(new ItemStack[] { new ItemStack(QuickieItems.SULPHOR.getItem(), 9) }); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/QuickieBlocks.java b/src/main/java/de/jottyfan/quickiemod/blocks/QuickieBlocks.java deleted file mode 100644 index 9e34c6a..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/QuickieBlocks.java +++ /dev/null @@ -1,69 +0,0 @@ -package de.jottyfan.quickiemod.blocks; - -import net.minecraft.block.Block; - -/** - * - * @author jotty - * - */ -public enum QuickieBlocks { - // @formatter:off - BLOCKSTACKERUP(new BlockStackerUp(), "blockstackerup"), - BLOCKSTACKERDOWN(new BlockStackerDown(), "blockstackerdown"), - BLOCKSTACKEREAST(new BlockStackerEast(), "blockstackereast"), - BLOCKSTACKERWEST(new BlockStackerWest(), "blockstackerwest"), - BLOCKSTACKERNORTH(new BlockStackerNorth(), "blockstackernorth"), - BLOCKSTACKERSOUTH(new BlockStackerSouth(), "blockstackersouth"), - DRILL_DOWN(new BlockDrillDown(), "drill"), - DRILL_EAST(new BlockDrillEast(), "drilleast"), - DRILL_SOUTH(new BlockDrillSouth(), "drillsouth"), - DRILL_WEST(new BlockDrillWest(), "drillwest"), - DRILL_NORTH(new BlockDrillNorth(), "drillnorth"), - DRILLSTOP(new BlockDrillstop(), "drillstop"), - MONSTERHOARDER(new BlockMonsterhoarder(), "monsterhoarder"), - ITEMHOARDER(new BlockItemhoarder(), "itemhoarder"), - LAVAHOARDER(new BlockLavahoarder(), "lavahoarder", false), - EMPTYLAVAHOARDER(new BlockEmptyLavahoarder(), "emptylavahoarder"), - KELPSTACK(new BlockKelpstack(), "kelpstack"), - COTTONPLANT(new BlockCottonplant(), "cottonplant", false), - CANOLAPLANT(new BlockCanolaplant(), "canolaplant", false), - DIRTSALPETER(new BlockDirtSalpeter(), "dirtsalpeter"), - ORE_NETHER_SULPHOR(new BlockOreNetherSulphor(), "orenethersulphor"), - ORE_SALPETER(new BlockOreSalpeter(), "oresalpeter"), - ORE_SAND_SALPETER(new BlockSandSalpeter(), "oresandsalpeter"), - ORE_SULPHOR(new BlockOreSulphor(), "oresulphor"), - ORE_DEEPSLATESULPHOR(new BlockOreDeepslateSulphor(), "oredeepslatesulphor"), - SANDSALPETER(new BlockSandSalpeter(), "sandsalpeter"), - BLOCKSULPHOR(new BlockSulphor(), "blocksulphor"), - BLOCKSALPETER(new BlockSalpeter(), "blocksalpeter"), - BLOCKSPEEDPOWDER(new BlockSpeedpowder(), "blockspeedpowder"), - BLOCKQUICKIEPOWDER(new BlockQuickiepowder(), "blockquickiepowder"); - // @formatter:on - - private final Block block; - private final String name; - private final Boolean add2BlockPanel; - - private QuickieBlocks(Block block, String name) { - this(block, name, true); - } - - private QuickieBlocks(Block block, String name, Boolean add2BlockPanel) { - this.block = block; - this.name = name; - this.add2BlockPanel = add2BlockPanel; - } - - public final Block getBlock() { - return block; - } - - public final String getName() { - return name; - } - - public final Boolean getAdd2BlockPanel() { - return add2BlockPanel; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/help/BlockStacker.java b/src/main/java/de/jottyfan/quickiemod/blocks/help/BlockStacker.java deleted file mode 100644 index 582ea1c..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/help/BlockStacker.java +++ /dev/null @@ -1,25 +0,0 @@ -package de.jottyfan.quickiemod.blocks.help; - -import net.minecraft.block.BlockEntityProvider; -import net.minecraft.util.math.Direction; - -/** - * - * @author jotty - * - */ -public interface BlockStacker extends BlockEntityProvider { - /** - * define the source offset - * - * @return the direction of the source offset (1 block beside) - */ - public Direction getSourceOffset(); - - /** - * define the dest offset - * - * @return the direction of the dest offset (1 block beside) - */ - public Direction getDestOffset(); -} diff --git a/src/main/java/de/jottyfan/quickiemod/blocks/help/DrillBlock.java b/src/main/java/de/jottyfan/quickiemod/blocks/help/DrillBlock.java deleted file mode 100644 index 9b5123d..0000000 --- a/src/main/java/de/jottyfan/quickiemod/blocks/help/DrillBlock.java +++ /dev/null @@ -1,78 +0,0 @@ -package de.jottyfan.quickiemod.blocks.help; - -import java.util.HashMap; -import java.util.Map; - -import de.jottyfan.quickiemod.items.QuickieItems; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.FallingBlock; -import net.minecraft.entity.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.state.property.IntProperty; -import net.minecraft.text.Text; -import net.minecraft.util.ActionResult; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public abstract class DrillBlock extends FallingBlock { - private static final Integer MAX_FUEL = 255; - public static final IntProperty FUEL = IntProperty.of("fuel", 0, MAX_FUEL); - - public DrillBlock(Settings settings) { - super(settings); - setDefaultState(getDefaultState().with(FUEL, 0)); - } - - @Override - public BlockState onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) { - Integer fuelLeft = state.get(FUEL); - world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(QuickieItems.CANOLABOTTLE.getItem(), fuelLeft))); - return super.onBreak(world, pos, state, player); - } - - @Override - protected void appendProperties(net.minecraft.state.StateManager.Builder builder) { - builder.add(FUEL); - } - - @Override - protected ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, BlockHitResult hit) { - Map loadings = new HashMap<>(); - loadings.put(QuickieItems.CANOLABOTTLE.getItem(), 8); - loadings.put(QuickieItems.CANOLABOTTLESTACK.getItem(), 72); - ItemStack stack = player.getStackInHand(player.getActiveHand()); - Item item = stack.getItem(); - if (stack.isEmpty() || !loadings.containsKey(item) ) { - if (world.isClient()) { - player.sendMessage(Text.translatable("msg.drill.fuelinfo", state.get(FUEL))); - } - } else { - Integer fuelWeight = loadings.get(item); - if (fuelWeight != null) { - Integer load = MAX_FUEL - state.get(FUEL); - if (load < fuelWeight) { -// Integer numberOfTooMuchLoad = fuelWeight - load; - fuelWeight = load; - } - world.setBlockState(pos, state.with(FUEL, state.get(FUEL) + fuelWeight)); - if (item.equals(QuickieItems.CANOLABOTTLE.getItem())) { - world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.GLASS_BOTTLE, 1))); - } else if (item.equals(QuickieItems.CANOLABOTTLESTACK.getItem())) { - world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.GLASS_BOTTLE, 9))); - } - stack.decrement(1); - } - } - return ActionResult.PASS; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/container/BlockStackerScreen.java b/src/main/java/de/jottyfan/quickiemod/container/BlockStackerScreen.java index d860c97..98a9f35 100644 --- a/src/main/java/de/jottyfan/quickiemod/container/BlockStackerScreen.java +++ b/src/main/java/de/jottyfan/quickiemod/container/BlockStackerScreen.java @@ -1,6 +1,6 @@ package de.jottyfan.quickiemod.container; -import de.jottyfan.quickiemod.QuickieMod; +import de.jottyfan.quickiemod.Quickiemod; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; @@ -18,7 +18,7 @@ import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class BlockStackerScreen extends HandledScreen implements ScreenHandlerProvider { - private final static Identifier TEXTURE = Identifier.of(QuickieMod.MODID, "textures/gui/blockstacker.png"); + private final static Identifier TEXTURE = Identifier.of(Quickiemod.MOD_ID, "textures/gui/blockstacker.png"); private final Integer containerHeight = 222; private final Integer containerWidth = 176; @@ -39,6 +39,6 @@ public class BlockStackerScreen extends HandledScreen int guiX = (this.width - this.containerWidth) / 2; int guiY = (this.height - this.containerHeight) / 2; super.renderInGameBackground(context); - context.drawTexture(TEXTURE, guiX, guiY, 0, 0, containerWidth, containerHeight); +// context.drawTexture(TEXTURE, guiX, guiY, 0f, 0f, containerWidth, containerHeight, 0, 0); } } diff --git a/src/main/java/de/jottyfan/quickiemod/event/BreakBlockCallback.java b/src/main/java/de/jottyfan/quickiemod/event/BreakBlockCallback.java deleted file mode 100644 index b1ab672..0000000 --- a/src/main/java/de/jottyfan/quickiemod/event/BreakBlockCallback.java +++ /dev/null @@ -1,29 +0,0 @@ -package de.jottyfan.quickiemod.event; - -import net.fabricmc.fabric.api.event.Event; -import net.fabricmc.fabric.api.event.EventFactory; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.ActionResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public interface BreakBlockCallback { - Event EVENT = EventFactory.createArrayBacked(BreakBlockCallback.class, - (listeners) -> (world, blockPos, blockState, playerEntity) -> { - for (BreakBlockCallback listener : listeners) { - ActionResult result = listener.injectBlockBreakCallback(world, blockPos, blockState, playerEntity); - if (result != ActionResult.PASS) { - return result; - } - } - return ActionResult.PASS; - }); - - ActionResult injectBlockBreakCallback(World world, BlockPos blockPos, BlockState blockState, PlayerEntity playerEntity); -} diff --git a/src/main/java/de/jottyfan/quickiemod/event/EventBlockBreak.java b/src/main/java/de/jottyfan/quickiemod/event/EventBlockBreak.java index 19620bf..e0de73e 100644 --- a/src/main/java/de/jottyfan/quickiemod/event/EventBlockBreak.java +++ b/src/main/java/de/jottyfan/quickiemod/event/EventBlockBreak.java @@ -3,13 +3,10 @@ package de.jottyfan.quickiemod.event; import java.util.ArrayList; import java.util.List; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import de.jottyfan.quickiemod.QuickieMod; -import de.jottyfan.quickiemod.items.HarvestRange; -import de.jottyfan.quickiemod.items.QuickieItems; -import de.jottyfan.quickiemod.items.ToolRangeable; +import de.jottyfan.quickiemod.item.HarvestRange; +import de.jottyfan.quickiemod.item.ModItems; +import de.jottyfan.quickiemod.item.ToolRangeable; +import de.jottyfan.quickiemod.item.ToolSpeedpowderAxe; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -27,20 +24,21 @@ import net.minecraft.world.World; * */ public class EventBlockBreak { - private static final Logger LOGGER = LogManager.getLogger(QuickieMod.MODID); - private enum BlockBreakDirection { UPWARDS, ALL; } - public void doBreakBlock(World world, BlockPos blockPos, BlockState blockState, PlayerEntity playerEntity) { + public void doBreakBlock(World world, BlockPos blockPos, BlockState blockState, PlayerEntity playerEntity, Block oldBlock) { ItemStack mainHandItemStack = playerEntity.getEquippedStack(EquipmentSlot.MAINHAND); if (mainHandItemStack != null) { Item item = mainHandItemStack.getItem(); if (item instanceof ToolRangeable) { ToolRangeable tool = (ToolRangeable) item; - Block block = blockState.getBlock(); - int handled = handleRangeableTools(tool, mainHandItemStack, world, block, blockPos, playerEntity); + if (!world.getBlockState(blockPos).getBlock().equals(oldBlock)) { + // recreate old block to make it breakable; otherwise, the recursive algorithm stops directly + world.setBlockState(blockPos, oldBlock.getDefaultState()); + } + int handled = handleRangeableTools(tool, mainHandItemStack, world, oldBlock, blockPos, playerEntity); if (handled >= 255) { // reward for using rangeable tool very successful world.spawnEntity( @@ -65,32 +63,30 @@ public class EventBlockBreak { BlockPos pos, PlayerEntity player) { List validBlocks = tool.getBlockList(currentBlock); HarvestRange range = tool.getRange(itemStack); - - LOGGER.debug("current tool: {}", tool); - - if (QuickieItems.SPEEDPOWDERAXE.getItem().equals(tool)) { - return breakBlockRecursive(new ArrayList<>(), world, validBlocks, pos, tool, range, BlockBreakDirection.UPWARDS, + List visitedBlocks = new ArrayList<>(); + if (tool instanceof ToolSpeedpowderAxe) { + return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.UPWARDS, player, true); - } else if (QuickieItems.SPEEDPOWDERPICKAXE.getItem().equals(tool)) { - return breakBlockRecursive(new ArrayList<>(), world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, + } else if (ModItems.TOOL_SPEEDPOWDERPICKAXE.getName().equals(tool.getName())) { + return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, player, false); - } else if (QuickieItems.SPEEDPOWDERSHOVEL.getItem().equals(tool)) { - return breakBlockRecursive(new ArrayList<>(), world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, + } else if (ModItems.TOOL_SPEEDPOWDERSHOVEL.getName().equals(tool.getName())) { + return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, player, false); - } else if (QuickieItems.SPEEDPOWDERHOE.getItem().equals(tool)) { - return breakBlockRecursive(new ArrayList<>(), world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, + } else if (ModItems.TOOL_SPEEDPOWDERHOE.getName().equals(tool.getName())) { + return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, player, false); - } else if (QuickieItems.QUICKIEPOWDERAXE.getItem().equals(tool)) { - return breakBlockRecursive(new ArrayList<>(), world, validBlocks, pos, tool, range, BlockBreakDirection.UPWARDS, + } else if (ModItems.TOOL_QUICKIEPOWDERAXE.getName().equals(tool.getName())) { + return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.UPWARDS, player, true); - } else if (QuickieItems.QUICKIEPOWDERPICKAXE.getItem().equals(tool)) { - return breakBlockRecursive(new ArrayList<>(), world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, + } else if (ModItems.TOOL_QUICKIEPOWDERPICKAXE.getName().equals(tool.getName())) { + return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, player, false); - } else if (QuickieItems.QUICKIEPOWDERSHOVEL.getItem().equals(tool)) { - return breakBlockRecursive(new ArrayList<>(), world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, + } else if (ModItems.TOOL_QUICKIEPOWDERSHOVEL.getName().equals(tool.getName())) { + return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, player, false); - } else if (QuickieItems.QUICKIEPOWDERHOE.getItem().equals(tool)) { - return breakBlockRecursive(new ArrayList<>(), world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, + } else if (ModItems.TOOL_QUICKIEPOWDERHOE.getName().equals(tool.getName())) { + return breakBlockRecursive(visitedBlocks, world, validBlocks, pos, tool, range, BlockBreakDirection.ALL, player, false); } else { return 0; @@ -113,6 +109,7 @@ public class EventBlockBreak { private int breakBlockRecursive(List visitedBlocks, World world, List validBlocks, BlockPos pos, ToolRangeable tool, HarvestRange range, BlockBreakDirection blockBreakDirection, PlayerEntity player, boolean breakLeaves) { + boolean ignoreSpawn = visitedBlocks.size() < 1; // with this, the already broken block can be omitted to spawn if (visitedBlocks.contains(pos.toString())) { return 0; } else if (validBlocks == null) { @@ -125,7 +122,9 @@ public class EventBlockBreak { if (tool.canBreakNeighbors(blockState)) { Block currentBlock = blockState.getBlock(); if (validBlocks.contains(currentBlock)) { - Block.dropStacks(blockState, world, pos); // includes xorbs + if (!ignoreSpawn) { + Block.dropStacks(blockState, world, pos); // includes xorbs + } affected += 1; world.setBlockState(pos, Blocks.AIR.getDefaultState()); if (range == null || range.getxRange() > 1 || range.getyRange() > 1 || range.getzRange() > 1) { diff --git a/src/main/java/de/jottyfan/quickiemod/feature/ModFeatures.java b/src/main/java/de/jottyfan/quickiemod/feature/ModFeatures.java new file mode 100644 index 0000000..30350e4 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/feature/ModFeatures.java @@ -0,0 +1,66 @@ +package de.jottyfan.quickiemod.feature; + +import de.jottyfan.quickiemod.Quickiemod; +import net.fabricmc.fabric.api.biome.v1.BiomeModifications; +import net.fabricmc.fabric.api.biome.v1.BiomeSelectors; +import net.fabricmc.fabric.api.biome.v1.ModificationPhase; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; +import net.minecraft.world.gen.GenerationStep; +import net.minecraft.world.gen.feature.ConfiguredFeature; +import net.minecraft.world.gen.feature.PlacedFeature; + +/** + * + * @author jotty + * + */ +public class ModFeatures { + + public static final RegistryKey> CF_ORESULFUR = genCf("oresulphor"); + public static final RegistryKey> CF_OREDEEPSLATESULFUR = genCf("oredepslatesulphor"); + public static final RegistryKey> CF_ORESALPETER = genCf("oresalpeter"); + public static final RegistryKey> CF_ORENETHERSULPHOR = genCf("orenethersulphore"); + public static final RegistryKey> CF_BLOCKSULPHOR = genCf("blocksulphor"); + public static final RegistryKey> CF_DIRTSALPETER = genCf("dirtsalpeter"); + public static final RegistryKey> CF_SANDSALPETER = genCf("sandsalpeter"); + public static final RegistryKey> CF_ORESANDSALPETER = genCf("oresandsalpeter"); + + public static final RegistryKey PF_ORESULPHOR = genPf("oresulphor"); + public static final RegistryKey PF_OREDEEPSLATESULPHOR = genPf("oredeepslatesulphor"); + public static final RegistryKey PF_ORESALPETER = genPf("oresalpeter"); + public static final RegistryKey PF_ORENETHERSULPHOR = genPf("orenethersulphor"); + public static final RegistryKey PF_BLOCKSULPHOR = genPf("blocksulphor"); + public static final RegistryKey PF_DIRTSALPETER = genPf("dirtsalpeter"); + public static final RegistryKey PF_SANDSALPETER = genPf("sandsalpeter"); + public static final RegistryKey PF_ORESANDSALPETER = genPf("oresandsalpeter"); + + private static final RegistryKey> genCf(String name) { + return RegistryKey.of(RegistryKeys.CONFIGURED_FEATURE, Identifier.of(Quickiemod.MOD_ID, name)); + } + + private static final RegistryKey genPf(String name) { + return RegistryKey.of(RegistryKeys.PLACED_FEATURE, Identifier.of(Quickiemod.MOD_ID, name)); + } + + public static final void registerFeatures() { + // Overworld features + BiomeModifications.create(Identifier.of(Quickiemod.MOD_ID, "features")).add(ModificationPhase.ADDITIONS, + BiomeSelectors.foundInOverworld(), (bsc, bmc) -> { + bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORESULPHOR); + bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORESALPETER); + bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_DIRTSALPETER); + bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_SANDSALPETER); + bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORESANDSALPETER); + bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_OREDEEPSLATESULPHOR); + }); + + // Nether features + BiomeModifications.create(Identifier.of(Quickiemod.MOD_ID, "nether_features")).add(ModificationPhase.ADDITIONS, + BiomeSelectors.foundInTheNether(), (bsc, bmc) -> { + bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORENETHERSULPHOR); + bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_BLOCKSULPHOR); + }); + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/identifier/ModIdentifiers.java b/src/main/java/de/jottyfan/quickiemod/identifier/ModIdentifiers.java new file mode 100644 index 0000000..6efffe8 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/identifier/ModIdentifiers.java @@ -0,0 +1,77 @@ +package de.jottyfan.quickiemod.identifier; + +import de.jottyfan.quickiemod.Quickiemod; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class ModIdentifiers { + public static final Identifier ITEM_STUB = Identifier.of(Quickiemod.MOD_ID, "stub"); + public static final Identifier ITEM_SPEEDPOWDER = Identifier.of(Quickiemod.MOD_ID, "speedpowder"); + public static final Identifier ITEM_QUICKIEPOWDER = Identifier.of(Quickiemod.MOD_ID, "quickiepowder"); + public static final Identifier ITEM_SALPETER = Identifier.of(Quickiemod.MOD_ID, "salpeter"); + public static final Identifier ITEM_SULFOR = Identifier.of(Quickiemod.MOD_ID, "sulphor"); + public static final Identifier ITEM_OXIDIZEDCOPPERPOWDER = Identifier.of(Quickiemod.MOD_ID, "oxidizedcopperpowder"); + public static final Identifier ITEM_SPEEDINGOT = Identifier.of(Quickiemod.MOD_ID, "speedingot"); + public static final Identifier ITEM_QUICKIEINGOT = Identifier.of(Quickiemod.MOD_ID, "quickieingot"); + public static final Identifier ITEM_CARROTSTACK = Identifier.of(Quickiemod.MOD_ID, "carrotstack"); + public static final Identifier ITEM_ROTTENFLESHSTRIPES = Identifier.of(Quickiemod.MOD_ID, "rotten_flesh_stripes"); + public static final Identifier ITEM_COTTON = Identifier.of(Quickiemod.MOD_ID, "cotton"); + public static final Identifier ITEM_COTTONPLANT = Identifier.of(Quickiemod.MOD_ID, "cottonplant"); + public static final Identifier ITEM_COTTONSEED = Identifier.of(Quickiemod.MOD_ID, "cottonseed"); + public static final Identifier ITEM_CANOLA = Identifier.of(Quickiemod.MOD_ID, "canola"); + public static final Identifier ITEM_CANOLAPLANT = Identifier.of(Quickiemod.MOD_ID, "canolaplant"); + public static final Identifier ITEM_CANOLASEED = Identifier.of(Quickiemod.MOD_ID, "canolaseed"); + public static final Identifier ITEM_CANOLABOTTLE = Identifier.of(Quickiemod.MOD_ID, "canolabottle"); + public static final Identifier ITEM_CANOLABOTTLESTACK = Identifier.of(Quickiemod.MOD_ID, "canolabottlestack"); + + public static final Identifier TOOL_SPEEDPOWDERAXE = Identifier.of(Quickiemod.MOD_ID, "speedpowderaxe"); + public static final Identifier TOOL_SPEEDPOWDERHOE = Identifier.of(Quickiemod.MOD_ID, "speedpowderhoe"); + public static final Identifier TOOL_SPEEDPOWDERPICKAXE = Identifier.of(Quickiemod.MOD_ID, "speedpowderpickaxe"); + public static final Identifier TOOL_SPEEDPOWDERSHEARS = Identifier.of(Quickiemod.MOD_ID, "speedpowdershears"); + public static final Identifier TOOL_SPEEDPOWDERSHOVEL = Identifier.of(Quickiemod.MOD_ID, "speedpowdershovel"); + public static final Identifier TOOL_SPEEDPOWDERWATERHOE = Identifier.of(Quickiemod.MOD_ID, "speedpowderwaterhoe"); + public static final Identifier TOOL_QUICKIEPOWDERAXE = Identifier.of(Quickiemod.MOD_ID, "quickiepowderaxe"); + public static final Identifier TOOL_QUICKIEPOWDERHOE = Identifier.of(Quickiemod.MOD_ID, "quickiepowderhoe"); + public static final Identifier TOOL_QUICKIEPOWDERPICKAXE = Identifier.of(Quickiemod.MOD_ID, "quickiepowderpickaxe"); + public static final Identifier TOOL_QUICKIEPOWDERSHOVEL = Identifier.of(Quickiemod.MOD_ID, "quickiepowdershovel"); + public static final Identifier TOOL_QUICKIEPOWDERWATERHOE = Identifier.of(Quickiemod.MOD_ID, "quickiepowderwaterhoe"); + + public static final Identifier BLOCK_QUICKIEPOWDER = Identifier.of(Quickiemod.MOD_ID, "blockquickiepowder"); + public static final Identifier BLOCK_SPEEDPOWDER = Identifier.of(Quickiemod.MOD_ID, "blockspeedpowder"); + public static final Identifier BLOCK_SALPETER = Identifier.of(Quickiemod.MOD_ID, "blocksalpeter"); + public static final Identifier BLOCK_SULFOR = Identifier.of(Quickiemod.MOD_ID, "blocksulphor"); + public static final Identifier BLOCK_MONSTERHOARDER = Identifier.of(Quickiemod.MOD_ID, "monsterhoarder"); + public static final Identifier BLOCK_LAVAHOARDER = Identifier.of(Quickiemod.MOD_ID, "lavahoarder"); + public static final Identifier BLOCK_EMPTYLAVAHOARDER = Identifier.of(Quickiemod.MOD_ID, "emptylavahoarder"); + public static final Identifier BLOCK_ITEMHOARDER = Identifier.of(Quickiemod.MOD_ID, "itemhoarder"); + public static final Identifier BLOCK_DIRTSALPETER = Identifier.of(Quickiemod.MOD_ID, "dirtsalpeter"); + public static final Identifier BLOCK_OREDEEPSLATESULFOR = Identifier.of(Quickiemod.MOD_ID, "oredeepslatesulphor"); + public static final Identifier BLOCK_ORENETHERSULFOR = Identifier.of(Quickiemod.MOD_ID, "orenethersulphor"); + public static final Identifier BLOCK_ORESALPETER = Identifier.of(Quickiemod.MOD_ID, "oresalpeter"); + public static final Identifier BLOCK_ORESANDSALPETER = Identifier.of(Quickiemod.MOD_ID, "oresandsalpeter"); + public static final Identifier BLOCK_ORESULFOR = Identifier.of(Quickiemod.MOD_ID, "oresulphor"); + public static final Identifier BLOCK_SANDSALPETER = Identifier.of(Quickiemod.MOD_ID, "sandsalpeter"); + public static final Identifier BLOCK_KELPSTACK = Identifier.of(Quickiemod.MOD_ID, "kelpstack"); + public static final Identifier BLOCK_COTTONPLANT = Identifier.of(Quickiemod.MOD_ID, "blockcottonplant"); + public static final Identifier BLOCK_CANOLAPLANT = Identifier.of(Quickiemod.MOD_ID, "blockcanolaplant"); + public static final Identifier BLOCK_DRILLDOWN = Identifier.of(Quickiemod.MOD_ID, "drill"); + public static final Identifier BLOCK_DRILLEAST = Identifier.of(Quickiemod.MOD_ID, "drilleast"); + public static final Identifier BLOCK_DRILLSOUTH = Identifier.of(Quickiemod.MOD_ID, "drillsouth"); + public static final Identifier BLOCK_DRILLWEST = Identifier.of(Quickiemod.MOD_ID, "drillwest"); + public static final Identifier BLOCK_DRILLNORTH = Identifier.of(Quickiemod.MOD_ID, "drillnorth"); + public static final Identifier BLOCK_STACKERDOWN = Identifier.of(Quickiemod.MOD_ID, "blockstackerdown"); + public static final Identifier BLOCK_STACKEREAST = Identifier.of(Quickiemod.MOD_ID, "blockstackereast"); + public static final Identifier BLOCK_STACKERSOUTH = Identifier.of(Quickiemod.MOD_ID, "blockstackersouth"); + public static final Identifier BLOCK_STACKERWEST = Identifier.of(Quickiemod.MOD_ID, "blockstackerwest"); + public static final Identifier BLOCK_STACKERNORTH = Identifier.of(Quickiemod.MOD_ID, "blockstackernorth"); + public static final Identifier BLOCK_STACKERUP = Identifier.of(Quickiemod.MOD_ID, "blockstackerup"); + + public static final Identifier BLOCKENTITY_ITEMHOARDER = Identifier.of(Quickiemod.MOD_ID, "itemhoarderblockentity"); + public static final Identifier BLOCKENTITY_BLOCKSTACKER = Identifier.of(Quickiemod.MOD_ID, "blockstackerblockentity"); + public static final Identifier BLOCKENTITY_DRILL = Identifier.of(Quickiemod.MOD_ID, "drillblockentity"); + public static final Identifier BLOCKSTACKERUP = Identifier.of(Quickiemod.MOD_ID, "blockstackerblockentity"); +} diff --git a/src/main/java/de/jottyfan/quickiemod/init/BlockEntityIdentity.java b/src/main/java/de/jottyfan/quickiemod/init/BlockEntityIdentity.java deleted file mode 100644 index 99d22b3..0000000 --- a/src/main/java/de/jottyfan/quickiemod/init/BlockEntityIdentity.java +++ /dev/null @@ -1,22 +0,0 @@ -package de.jottyfan.quickiemod.init; - -import de.jottyfan.quickiemod.QuickieMod; -import net.minecraft.util.Identifier; - -/** - * - * @author jotty - * - */ -public class BlockEntityIdentity { - public static final Identifier ITEMHOARDER = Identifier.of(QuickieMod.MODID, "itemhoarderblockentity"); - public static final Identifier BLOCKSPREADER = Identifier.of(QuickieMod.MODID, "blockspreaderblockentity"); - public static final Identifier BLOCKSTACKERUP = Identifier.of(QuickieMod.MODID, "blockstackerblockentity"); - public static final Identifier MONSTERHOARDER = Identifier.of(QuickieMod.MODID, "monsterhoarderblockentity"); - public static final Identifier EMPTYLAVALHOARDER = Identifier.of(QuickieMod.MODID, "emptylavahoarderblockentity"); - public static final Identifier DRILL_DOWN = Identifier.of(QuickieMod.MODID, "drillblockdownblockentity"); - public static final Identifier DRILL_EAST = Identifier.of(QuickieMod.MODID, "drillblockeastblockentity"); - public static final Identifier DRILL_SOUTH = Identifier.of(QuickieMod.MODID, "drillblocksouthblockentity"); - public static final Identifier DRILL_WEST = Identifier.of(QuickieMod.MODID, "drillblockwestblockentity"); - public static final Identifier DRILL_NORTH = Identifier.of(QuickieMod.MODID, "drillblocknorthblockentity"); -} diff --git a/src/main/java/de/jottyfan/quickiemod/init/FeaturesManager.java b/src/main/java/de/jottyfan/quickiemod/init/FeaturesManager.java deleted file mode 100644 index 234881b..0000000 --- a/src/main/java/de/jottyfan/quickiemod/init/FeaturesManager.java +++ /dev/null @@ -1,66 +0,0 @@ -package de.jottyfan.quickiemod.init; - -import java.util.function.BiConsumer; - -import de.jottyfan.quickiemod.QuickieMod; -import net.fabricmc.fabric.api.biome.v1.BiomeModificationContext; -import net.fabricmc.fabric.api.biome.v1.BiomeSelectionContext; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.util.Identifier; -import net.minecraft.world.gen.GenerationStep; -import net.minecraft.world.gen.feature.ConfiguredFeature; -import net.minecraft.world.gen.feature.PlacedFeature; - -/** - * - * @author jotty - * - */ -public class FeaturesManager { - - public static final RegistryKey> CF_ORESULFUR = genCf("oresulphor"); - public static final RegistryKey> CF_OREDEEPSLATESULFUR = genCf("oredepslatesulphor"); - public static final RegistryKey> CF_ORESALPETER = genCf("oresalpeter"); - public static final RegistryKey> CF_ORENETHERSULPHOR = genCf("orenethersulphore"); - public static final RegistryKey> CF_BLOCKSULPHOR = genCf("blocksulphor"); - public static final RegistryKey> CF_DIRTSALPETER = genCf("dirtsalpeter"); - public static final RegistryKey> CF_SANDSALPETER = genCf("sandsalpeter"); - public static final RegistryKey> CF_ORESANDSALPETER = genCf("oresandsalpeter"); - - public static final RegistryKey PF_ORESULPHOR = genPf("oresulphor"); - public static final RegistryKey PF_OREDEEPSLATESULPHOR = genPf("oredeepslatesulphor"); - public static final RegistryKey PF_ORESALPETER = genPf("oresalpeter"); - public static final RegistryKey PF_ORENETHERSULPHOR = genPf("orenethersulphor"); - public static final RegistryKey PF_BLOCKSULPHOR = genPf("blocksulphor"); - public static final RegistryKey PF_DIRTSALPETER = genPf("dirtsalpeter"); - public static final RegistryKey PF_SANDSALPETER = genPf("sandsalpeter"); - public static final RegistryKey PF_ORESANDSALPETER = genPf("oresandsalpeter"); - - private static final RegistryKey> genCf(String name) { - return RegistryKey.of(RegistryKeys.CONFIGURED_FEATURE, Identifier.of(QuickieMod.MODID, name)); - } - - private static final RegistryKey genPf(String name) { - return RegistryKey.of(RegistryKeys.PLACED_FEATURE, Identifier.of(QuickieMod.MODID, name)); - } - - protected static final BiConsumer overworldOres() { - return (bsc, bmc) -> { - bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORESULPHOR); - bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORESALPETER); - bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_DIRTSALPETER); - bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_SANDSALPETER); - bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORESANDSALPETER); - bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_OREDEEPSLATESULPHOR); - }; - } - - protected static final BiConsumer netherOres() { - return (bsc, bmc) -> { - bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_ORENETHERSULPHOR); - bmc.getGenerationSettings().addFeature(GenerationStep.Feature.UNDERGROUND_ORES, PF_BLOCKSULPHOR); - }; - } - -} diff --git a/src/main/java/de/jottyfan/quickiemod/init/RegistryManager.java b/src/main/java/de/jottyfan/quickiemod/init/RegistryManager.java deleted file mode 100644 index 02e3f3a..0000000 --- a/src/main/java/de/jottyfan/quickiemod/init/RegistryManager.java +++ /dev/null @@ -1,102 +0,0 @@ -package de.jottyfan.quickiemod.init; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import de.jottyfan.quickiemod.QuickieMod; -import de.jottyfan.quickiemod.blockentity.BlockEntityTypes; -import de.jottyfan.quickiemod.blocks.QuickieBlocks; -import de.jottyfan.quickiemod.event.BreakBlockCallback; -import de.jottyfan.quickiemod.event.EventBlockBreak; -import de.jottyfan.quickiemod.items.QuickieItems; -import net.fabricmc.fabric.api.biome.v1.BiomeModifications; -import net.fabricmc.fabric.api.biome.v1.BiomeSelectors; -import net.fabricmc.fabric.api.biome.v1.ModificationPhase; -import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; -import net.fabricmc.fabric.api.registry.FuelRegistry; -import net.minecraft.block.ComposterBlock; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item.Settings; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.Registries; -import net.minecraft.registry.Registry; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.text.Text; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Identifier; - -/** - * - * @author jotty - * - */ -public class RegistryManager { - private static final Logger LOGGER = LoggerFactory.getLogger(QuickieMod.MODID); - - public static final void registerItemGroup() { - Registry.register(Registries.ITEM_GROUP, RegistryKey.of(RegistryKeys.ITEM_GROUP, Identifier.of(QuickieMod.MODID, "itemgroups")), - FabricItemGroup.builder().icon(() -> new ItemStack(QuickieItems.ROTTEN_FLESH_STRIPES.getItem())).displayName(Text.literal(QuickieMod.MODID)) - .entries((enabledFeatures, stacks) -> { - for (QuickieItems i : QuickieItems.values()) { - stacks.add(new ItemStack(i.getItem())); - } - for (QuickieBlocks b : QuickieBlocks.values()) { - if (b.getAdd2BlockPanel()) { - stacks.add(new ItemStack(b.getBlock())); - } - } - }).build()); - } - - public static final void registerItems() { - LOGGER.info("registering items"); - for (QuickieItems i : QuickieItems.values()) { - Registry.register(Registries.ITEM, Identifier.of(QuickieMod.MODID, i.getName()), i.getItem()); - } - ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.put(QuickieItems.COTTONSEED.getItem(), 0.5f); - ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.put(QuickieItems.COTTON.getItem(), 0.75f); - ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.put(QuickieItems.CANOLASEED.getItem(), 0.5f); - ComposterBlock.ITEM_TO_LEVEL_INCREASE_CHANCE.put(QuickieItems.CANOLA.getItem(), 0.75f); - FuelRegistry.INSTANCE.add(QuickieItems.SULPHOR.getItem(), 200); - FuelRegistry.INSTANCE.add(QuickieBlocks.BLOCKSULPHOR.getBlock(), 2000); - } - - public static final void registerBlocks() { - LOGGER.info("registering blocks"); - for (QuickieBlocks b : QuickieBlocks.values()) { - Registry.register(Registries.BLOCK, Identifier.of(QuickieMod.MODID, b.getName()), b.getBlock()); - Registry.register(Registries.ITEM, Identifier.of(QuickieMod.MODID, b.getName()), new BlockItem(b.getBlock(), new Settings())); - } - } - - public static final void registerFeatures() { - // Overworld features - BiomeModifications.create(Identifier.of(QuickieMod.MODID, "features")).add(ModificationPhase.ADDITIONS, BiomeSelectors.foundInOverworld(), - FeaturesManager.overworldOres()); - - // Nether features - BiomeModifications.create(Identifier.of(QuickieMod.MODID, "nether_features")).add(ModificationPhase.ADDITIONS, BiomeSelectors.foundInTheNether(), - FeaturesManager.netherOres()); - } - - public static final void registerEvents() { - LOGGER.info("registering events"); - BreakBlockCallback.EVENT.register((world, blockPos, blockState, playerEntity) -> { - new EventBlockBreak().doBreakBlock(world, blockPos, blockState, playerEntity); - return ActionResult.SUCCESS; - }); - } - - public static final void registerBlockEntityTypes() { - try { - Class.forName(BlockEntityTypes.class.getName()); - LOGGER.info("registering block entity types"); - } catch (ClassNotFoundException e) { - LOGGER.error("class BlockEntityType not loaded", e); - } - } - - public static final void registerScreenHandlerTypes() { - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/item/AbstractIdentifiedItem.java b/src/main/java/de/jottyfan/quickiemod/item/AbstractIdentifiedItem.java new file mode 100644 index 0000000..0bc8bda --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/item/AbstractIdentifiedItem.java @@ -0,0 +1,20 @@ +package de.jottyfan.quickiemod.item; + +import net.minecraft.item.Item; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public abstract class AbstractIdentifiedItem extends Item { + + public AbstractIdentifiedItem(Identifier identifier, Integer maxCount) { + super(new Item.Settings().maxCount(maxCount).useItemPrefixedTranslationKey() + .registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier))); + } + +} diff --git a/src/main/java/de/jottyfan/quickiemod/items/HarvestRange.java b/src/main/java/de/jottyfan/quickiemod/item/HarvestRange.java similarity index 86% rename from src/main/java/de/jottyfan/quickiemod/items/HarvestRange.java rename to src/main/java/de/jottyfan/quickiemod/item/HarvestRange.java index 4e5efc3..5cc17e1 100644 --- a/src/main/java/de/jottyfan/quickiemod/items/HarvestRange.java +++ b/src/main/java/de/jottyfan/quickiemod/item/HarvestRange.java @@ -1,9 +1,9 @@ -package de.jottyfan.quickiemod.items; +package de.jottyfan.quickiemod.item; import java.io.Serializable; /** - * + * * @author jotty * */ @@ -19,7 +19,7 @@ public class HarvestRange implements Serializable { this.yRange = xyzRange; this.zRange = xyzRange; } - + public HarvestRange(int[] xyzRange) { super(); this.xRange = xyzRange[0]; @@ -34,9 +34,18 @@ public class HarvestRange implements Serializable { this.zRange = zRange; } + @Override + public String toString() { + StringBuilder buf = new StringBuilder(); + buf.append(xRange).append(":"); + buf.append(yRange).append(":"); + buf.append(zRange).append(":"); + return buf.toString(); + } + /** * add i to x, y and z and return the resulting class as a new one - * + * * @param i * the summand * @return the new class @@ -44,10 +53,10 @@ public class HarvestRange implements Serializable { public HarvestRange addXYZ(int i) { return new HarvestRange(xRange + i, yRange + i, zRange + i); } - + /** * get range as int array - * + * * @return the int array */ public int[] getRangeAsArray() { diff --git a/src/main/java/de/jottyfan/quickiemod/item/Item64Stack.java b/src/main/java/de/jottyfan/quickiemod/item/Item64Stack.java new file mode 100644 index 0000000..2ca2b1d --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/item/Item64Stack.java @@ -0,0 +1,16 @@ +package de.jottyfan.quickiemod.item; + +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class Item64Stack extends AbstractIdentifiedItem { + + public Item64Stack(Identifier identifier) { + super(identifier, 64); + } + +} diff --git a/src/main/java/de/jottyfan/quickiemod/item/ItemSeed.java b/src/main/java/de/jottyfan/quickiemod/item/ItemSeed.java new file mode 100644 index 0000000..e79bfdf --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/item/ItemSeed.java @@ -0,0 +1,45 @@ +package de.jottyfan.quickiemod.item; + +import de.jottyfan.quickiemod.Quickiemod; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.item.ItemUsageContext; +import net.minecraft.registry.Registries; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +/** + * + * @author jotty + * + */ +public class ItemSeed extends Item64Stack { + + private Identifier plant; + + public ItemSeed(Identifier identifier, Identifier plant) { + super(identifier); + this.plant = plant; + } + + @Override + public ActionResult useOnBlock(ItemUsageContext context) { + BlockPos pos = context.getBlockPos(); + World world = context.getWorld(); + if (this.asItem().equals(context.getStack().getItem())) { + BlockState state = world.getBlockState(pos); + if (Registries.BLOCK.containsId(plant)) { + if (Blocks.FARMLAND.equals(state.getBlock()) && world.getBlockState(pos.up()).isAir()) { + world.setBlockState(pos.up(), Registries.BLOCK.get(plant).getDefaultState()); + context.getStack().decrement(1); + } else { + Quickiemod.LOGGER.error("could not find block {} in Registries...", plant.toShortTranslationKey()); + } + } + } + return super.useOnBlock(context); + } + +} diff --git a/src/main/java/de/jottyfan/quickiemod/item/ModItems.java b/src/main/java/de/jottyfan/quickiemod/item/ModItems.java new file mode 100644 index 0000000..e3626ee --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/item/ModItems.java @@ -0,0 +1,117 @@ +package de.jottyfan.quickiemod.item; + +import java.util.ArrayList; +import java.util.List; + +import de.jottyfan.quickiemod.Quickiemod; +import de.jottyfan.quickiemod.identifier.ModIdentifiers; +import net.minecraft.item.Item; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class ModItems { + public static final Item ITEM_STUB = registerItem(ModIdentifiers.ITEM_STUB, + new Item64Stack(ModIdentifiers.ITEM_STUB)); + public static final Item ITEM_SPEEDPOWDER = registerItem(ModIdentifiers.ITEM_SPEEDPOWDER, + new Item64Stack(ModIdentifiers.ITEM_SPEEDPOWDER)); + public static final Item ITEM_QUICKIEPOWDER = registerItem(ModIdentifiers.ITEM_QUICKIEPOWDER, + new Item64Stack(ModIdentifiers.ITEM_QUICKIEPOWDER)); + public static final Item ITEM_SALPETER = registerItem(ModIdentifiers.ITEM_SALPETER, + new Item64Stack(ModIdentifiers.ITEM_SALPETER)); + public static final Item ITEM_SULFOR = registerItem(ModIdentifiers.ITEM_SULFOR, + new Item64Stack(ModIdentifiers.ITEM_SULFOR)); + public static final Item ITEM_OXIDIZEDCOPPERPOWDER = registerItem(ModIdentifiers.ITEM_OXIDIZEDCOPPERPOWDER, + new Item64Stack(ModIdentifiers.ITEM_OXIDIZEDCOPPERPOWDER)); + public static final Item ITEM_SPEEDINGOT = registerItem(ModIdentifiers.ITEM_SPEEDINGOT, + new Item64Stack(ModIdentifiers.ITEM_SPEEDINGOT)); + public static final Item ITEM_QUICKIEINGOT = registerItem(ModIdentifiers.ITEM_QUICKIEINGOT, + new Item64Stack(ModIdentifiers.ITEM_QUICKIEINGOT)); + public static final Item ITEM_CARROTSTACK = registerItem(ModIdentifiers.ITEM_CARROTSTACK, + new Item64Stack(ModIdentifiers.ITEM_CARROTSTACK)); + public static final Item ITEM_ROTTENFLESHSTRIPES = registerItem(ModIdentifiers.ITEM_ROTTENFLESHSTRIPES, + new Item64Stack(ModIdentifiers.ITEM_ROTTENFLESHSTRIPES)); + public static final Item ITEM_COTTON = registerItem(ModIdentifiers.ITEM_COTTON, + new Item64Stack(ModIdentifiers.ITEM_COTTON)); + public static final Item ITEM_COTTONPLANT = registerItem(ModIdentifiers.ITEM_COTTONPLANT, + new Item64Stack(ModIdentifiers.BLOCK_COTTONPLANT)); + public static final Item ITEM_COTTONSEED = registerItem(ModIdentifiers.ITEM_COTTONSEED, + new ItemSeed(ModIdentifiers.ITEM_COTTONSEED, ModIdentifiers.BLOCK_COTTONPLANT)); + public static final Item ITEM_CANOLA = registerItem(ModIdentifiers.ITEM_CANOLA, + new Item64Stack(ModIdentifiers.ITEM_CANOLA)); + public static final Item ITEM_CANOLAPLANT = registerItem(ModIdentifiers.ITEM_CANOLAPLANT, + new Item64Stack(ModIdentifiers.BLOCK_CANOLAPLANT)); + public static final Item ITEM_CANOLASEED = registerItem(ModIdentifiers.ITEM_CANOLASEED, + new ItemSeed(ModIdentifiers.ITEM_CANOLASEED, ModIdentifiers.BLOCK_CANOLAPLANT)); + public static final Item ITEM_CANOLABOTTLE = registerItem(ModIdentifiers.ITEM_CANOLABOTTLE, + new Item64Stack(ModIdentifiers.ITEM_CANOLABOTTLE)); + public static final Item ITEM_CANOLABOTTLESTACK = registerItem(ModIdentifiers.ITEM_CANOLABOTTLESTACK, + new Item64Stack(ModIdentifiers.ITEM_CANOLABOTTLESTACK)); + + public static final Item TOOL_SPEEDPOWDERAXE = registerItem(ModIdentifiers.TOOL_SPEEDPOWDERAXE, + new ToolSpeedpowderAxe(ModIdentifiers.TOOL_SPEEDPOWDERAXE)); + public static final Item TOOL_SPEEDPOWDERHOE = registerItem(ModIdentifiers.TOOL_SPEEDPOWDERHOE, + new ToolSpeedpowderHoe(ModIdentifiers.TOOL_SPEEDPOWDERHOE)); + public static final Item TOOL_SPEEDPOWDERPICKAXE = registerItem(ModIdentifiers.TOOL_SPEEDPOWDERPICKAXE, + new ToolSpeedpowderPickaxe(ModIdentifiers.TOOL_SPEEDPOWDERPICKAXE)); + public static final Item TOOL_SPEEDPOWDERSHEARS = registerItem(ModIdentifiers.TOOL_SPEEDPOWDERSHEARS, + new ToolSpeedpowderShears(ModIdentifiers.TOOL_SPEEDPOWDERSHEARS)); + public static final Item TOOL_SPEEDPOWDERSHOVEL = registerItem(ModIdentifiers.TOOL_SPEEDPOWDERSHOVEL, + new ToolSpeedpowderShovel(ModIdentifiers.TOOL_SPEEDPOWDERSHOVEL)); + public static final Item TOOL_SPEEDPOWDERWATERHOE = registerItem(ModIdentifiers.TOOL_SPEEDPOWDERWATERHOE, + new ToolSpeedpowderWaterHoe(ModIdentifiers.TOOL_SPEEDPOWDERWATERHOE)); + public static final Item TOOL_QUICKIEPOWDERAXE = registerItem(ModIdentifiers.TOOL_QUICKIEPOWDERAXE, + new ToolQuickiepowderAxe(ModIdentifiers.TOOL_QUICKIEPOWDERAXE)); + public static final Item TOOL_QUICKIEPOWDERHOE = registerItem(ModIdentifiers.TOOL_QUICKIEPOWDERHOE, + new ToolQuickiepowderHoe(ModIdentifiers.TOOL_QUICKIEPOWDERHOE)); + public static final Item TOOL_QUICKIEPOWDERPICKAXE = registerItem(ModIdentifiers.TOOL_QUICKIEPOWDERPICKAXE, + new ToolQuickiepowderPickaxe(ModIdentifiers.TOOL_QUICKIEPOWDERPICKAXE)); + public static final Item TOOL_QUICKIEPOWDERSHOVEL = registerItem(ModIdentifiers.TOOL_QUICKIEPOWDERSHOVEL, + new ToolQuickiepowderShovel(ModIdentifiers.TOOL_QUICKIEPOWDERSHOVEL)); + public static final Item TOOL_QUICKIEPOWDERWATERHOE = registerItem(ModIdentifiers.TOOL_QUICKIEPOWDERWATERHOE, + new ToolQuickiepowderWaterHoe(ModIdentifiers.TOOL_QUICKIEPOWDERWATERHOE)); + + private static final Item registerItem(Identifier identifier, Item item) { + return Registry.register(Registries.ITEM, identifier, item); + } + + public static final List registerModItems() { + Quickiemod.LOGGER.debug(String.format("registering item %s", Quickiemod.MOD_ID)); + + List items = new ArrayList<>(); + items.add(ITEM_STUB); + items.add(ITEM_SPEEDPOWDER); + items.add(ITEM_QUICKIEPOWDER); + items.add(ITEM_SALPETER); + items.add(ITEM_SULFOR); + items.add(ITEM_OXIDIZEDCOPPERPOWDER); + items.add(ITEM_SPEEDINGOT); + items.add(ITEM_QUICKIEINGOT); + items.add(ITEM_CARROTSTACK); + items.add(ITEM_ROTTENFLESHSTRIPES); + items.add(ITEM_COTTON); + items.add(ITEM_COTTONSEED); + items.add(ITEM_CANOLA); + items.add(ITEM_CANOLASEED); + items.add(ITEM_CANOLABOTTLE); + items.add(ITEM_CANOLABOTTLESTACK); + + items.add(TOOL_SPEEDPOWDERPICKAXE); + items.add(TOOL_SPEEDPOWDERAXE); + items.add(TOOL_SPEEDPOWDERSHOVEL); + items.add(TOOL_SPEEDPOWDERHOE); + items.add(TOOL_SPEEDPOWDERWATERHOE); + items.add(TOOL_SPEEDPOWDERSHEARS); + items.add(TOOL_QUICKIEPOWDERPICKAXE); + items.add(TOOL_QUICKIEPOWDERAXE); + items.add(TOOL_QUICKIEPOWDERSHOVEL); + items.add(TOOL_QUICKIEPOWDERHOE); + items.add(TOOL_QUICKIEPOWDERWATERHOE); + return items; + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/item/ModdedItemUsageContext.java b/src/main/java/de/jottyfan/quickiemod/item/ModdedItemUsageContext.java deleted file mode 100644 index 8e98bc6..0000000 --- a/src/main/java/de/jottyfan/quickiemod/item/ModdedItemUsageContext.java +++ /dev/null @@ -1,21 +0,0 @@ -package de.jottyfan.quickiemod.item; - -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUsageContext; -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class ModdedItemUsageContext extends ItemUsageContext { - - public ModdedItemUsageContext(World world, PlayerEntity player, Hand hand, ItemStack stack, BlockHitResult hit) { - super(world, player, hand, stack, hit); - } - -} diff --git a/src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderAxe.java b/src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderAxe.java new file mode 100644 index 0000000..a4ca1d3 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderAxe.java @@ -0,0 +1,30 @@ +package de.jottyfan.quickiemod.item; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ToolMaterial; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.tag.BlockTags; +import net.minecraft.registry.tag.ItemTags; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class ToolQuickiepowderAxe extends ToolRangeableAxe { + + private final static ToolMaterial MATERIAL = new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, 2400, 7f, 1f, 15, ItemTags.DIAMOND_TOOL_MATERIALS); + + public ToolQuickiepowderAxe(Identifier identifier) { + super(MATERIAL, 7F, -3.1F, new Item.Settings().useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier))); + } + + @Override + public HarvestRange getRange(ItemStack stack) { + // TODO: get the range from the stack + return new HarvestRange(64, 128, 64); // trees bigger than that are too heavy for one small axe... + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderHoe.java b/src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderHoe.java new file mode 100644 index 0000000..d1ef870 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderHoe.java @@ -0,0 +1,24 @@ +package de.jottyfan.quickiemod.item; + +import net.minecraft.item.Item; +import net.minecraft.item.ToolMaterial; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.tag.BlockTags; +import net.minecraft.registry.tag.ItemTags; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class ToolQuickiepowderHoe extends ToolRangeableHoe { + + public static final Integer DEFAULT_PLOW_RANGE = 4; + private final static ToolMaterial MATERIAL = new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, 2400, 7f, 1f, 15, ItemTags.DIAMOND_TOOL_MATERIALS); + + public ToolQuickiepowderHoe(Identifier identifier) { + super(MATERIAL, 7F, -3.1f, new Item.Settings().useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier)), new HarvestRange(DEFAULT_PLOW_RANGE)); + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderPickaxe.java b/src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderPickaxe.java similarity index 62% rename from src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderPickaxe.java rename to src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderPickaxe.java index dc1dbcc..2054ece 100644 --- a/src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderPickaxe.java +++ b/src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderPickaxe.java @@ -1,15 +1,20 @@ -package de.jottyfan.quickiemod.items; +package de.jottyfan.quickiemod.item; import java.util.List; import com.google.common.collect.Lists; -import de.jottyfan.quickiemod.items.mat.QuickieToolMaterial; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.PickaxeItem; +import net.minecraft.item.ToolMaterial; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.tag.BlockTags; +import net.minecraft.registry.tag.ItemTags; +import net.minecraft.util.Identifier; /** * @@ -19,10 +24,15 @@ import net.minecraft.item.PickaxeItem; public class ToolQuickiepowderPickaxe extends PickaxeItem implements ToolRangeable { public static final int[] DEFAULT_HARVEST_RANGE = new int[] { 6, 6, 6 }; - private final static QuickieToolMaterial MATERIAL = QuickieToolMaterial.of(7f, 2400, 15, 1f, QuickieItems.SPEEDINGOT.getItem()); + private final static ToolMaterial MATERIAL = new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, 2400, 7f, 1f, 15, ItemTags.DIAMOND_TOOL_MATERIALS); - public ToolQuickiepowderPickaxe() { - super(MATERIAL, new Item.Settings().attributeModifiers(PickaxeItem.createAttributeModifiers(MATERIAL, 7F, -3.1F))); + public ToolQuickiepowderPickaxe(Identifier identifier) { + super(MATERIAL, 7F, -3.1F, new Item.Settings().useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier))); + } + + @Override + public boolean isCorrectForDrops(ItemStack stack, BlockState state) { + return super.isCorrectForDrops(stack, state); } @Override diff --git a/src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderShovel.java b/src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderShovel.java similarity index 82% rename from src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderShovel.java rename to src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderShovel.java index 3ee6f49..83232bf 100644 --- a/src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderShovel.java +++ b/src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderShovel.java @@ -1,17 +1,22 @@ -package de.jottyfan.quickiemod.items; +package de.jottyfan.quickiemod.item; import java.util.List; import com.google.common.collect.Lists; -import de.jottyfan.quickiemod.items.mat.QuickieToolMaterial; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; import net.minecraft.item.ShovelItem; +import net.minecraft.item.ToolMaterial; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.tag.BlockTags; +import net.minecraft.registry.tag.ItemTags; import net.minecraft.util.ActionResult; +import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; @@ -23,11 +28,11 @@ import net.minecraft.world.World; */ public class ToolQuickiepowderShovel extends ShovelItem implements ToolRangeable { public static final Integer DEFAULT_HARVEST_RANGE = 6; - private final static QuickieToolMaterial MATERIAL = QuickieToolMaterial.of(7f, 2400, 15, 1f, QuickieItems.SPEEDINGOT.getItem()); + private final static ToolMaterial MATERIAL = new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, 2400, 7f, 1f, 15, ItemTags.DIAMOND_TOOL_MATERIALS); public HarvestRange range; - public ToolQuickiepowderShovel() { - super(MATERIAL, new Item.Settings().attributeModifiers(ShovelItem.createAttributeModifiers(MATERIAL, 7F, -3.1F))); + public ToolQuickiepowderShovel(Identifier identifier) { + super(MATERIAL, 7F, -3.1F, new Item.Settings().useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier))); this.range = new HarvestRange(DEFAULT_HARVEST_RANGE); } diff --git a/src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderWaterHoe.java b/src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderWaterHoe.java similarity index 84% rename from src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderWaterHoe.java rename to src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderWaterHoe.java index 4d9189e..36245a9 100644 --- a/src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderWaterHoe.java +++ b/src/main/java/de/jottyfan/quickiemod/item/ToolQuickiepowderWaterHoe.java @@ -1,4 +1,4 @@ -package de.jottyfan.quickiemod.items; +package de.jottyfan.quickiemod.item; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -8,6 +8,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; +import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -17,6 +18,10 @@ import net.minecraft.world.World; * */ public class ToolQuickiepowderWaterHoe extends ToolQuickiepowderHoe { + public ToolQuickiepowderWaterHoe(Identifier identifier) { + super(identifier); + } + @Override public ActionResult useOnBlock(ItemUsageContext context) { ActionResult res = super.useOnBlock(context); @@ -28,7 +33,7 @@ public class ToolQuickiepowderWaterHoe extends ToolQuickiepowderHoe { Hand hand = context.getHand(); PlayerEntity player = context.getPlayer(); ItemStack oldTool = player.getStackInHand(hand); - ItemStack newTool = new ItemStack(QuickieItems.QUICKIEPOWDERHOE.getItem()); + ItemStack newTool = new ItemStack(ModItems.TOOL_QUICKIEPOWDERHOE); newTool.setDamage(oldTool.getDamage()); world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(oldBlockState.getBlock()))); player.setStackInHand(hand, newTool); diff --git a/src/main/java/de/jottyfan/quickiemod/items/ToolRangeable.java b/src/main/java/de/jottyfan/quickiemod/item/ToolRangeable.java similarity index 81% rename from src/main/java/de/jottyfan/quickiemod/items/ToolRangeable.java rename to src/main/java/de/jottyfan/quickiemod/item/ToolRangeable.java index a793612..48e2937 100644 --- a/src/main/java/de/jottyfan/quickiemod/items/ToolRangeable.java +++ b/src/main/java/de/jottyfan/quickiemod/item/ToolRangeable.java @@ -1,10 +1,11 @@ -package de.jottyfan.quickiemod.items; +package de.jottyfan.quickiemod.item; import java.util.List; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.item.ItemStack; +import net.minecraft.text.Text; /** * @@ -13,6 +14,13 @@ import net.minecraft.item.ItemStack; */ public interface ToolRangeable { + /** + * dummy to have a getName method that comes with the item + * + * @return the name + */ + public Text getName(); + /** * @param stack the item stack that keeps the range * @return range of blocks to be harvested diff --git a/src/main/java/de/jottyfan/quickiemod/items/ToolRangeableAxe.java b/src/main/java/de/jottyfan/quickiemod/item/ToolRangeableAxe.java similarity index 83% rename from src/main/java/de/jottyfan/quickiemod/items/ToolRangeableAxe.java rename to src/main/java/de/jottyfan/quickiemod/item/ToolRangeableAxe.java index 253011c..bdaa856 100644 --- a/src/main/java/de/jottyfan/quickiemod/items/ToolRangeableAxe.java +++ b/src/main/java/de/jottyfan/quickiemod/item/ToolRangeableAxe.java @@ -1,4 +1,4 @@ -package de.jottyfan.quickiemod.items; +package de.jottyfan.quickiemod.item; import java.util.List; @@ -20,8 +20,8 @@ import net.minecraft.registry.tag.BlockTags; */ public abstract class ToolRangeableAxe extends AxeItem implements ToolRangeable { - protected ToolRangeableAxe(ToolMaterial material, Item.Settings settings) { - super(material, settings); + protected ToolRangeableAxe(ToolMaterial material, float attackDamage, float attackSpeed, Item.Settings settings) { + super(material, attackDamage, attackSpeed, settings); } @Override @@ -53,7 +53,7 @@ public abstract class ToolRangeableAxe extends AxeItem implements ToolRangeable @Override public boolean canBreakNeighbors(BlockState blockIn) { - return new ItemStack(this).isSuitableFor(blockIn) || isLeavesBlock(blockIn) || blockIn.isIn(BlockTags.LOGS); + return new ItemStack(this).isSuitableFor(blockIn) || isLeavesBlock(blockIn) || blockIn.isIn(BlockTags.LOGS); } @Override diff --git a/src/main/java/de/jottyfan/quickiemod/items/ToolRangeableHoe.java b/src/main/java/de/jottyfan/quickiemod/item/ToolRangeableHoe.java similarity index 93% rename from src/main/java/de/jottyfan/quickiemod/items/ToolRangeableHoe.java rename to src/main/java/de/jottyfan/quickiemod/item/ToolRangeableHoe.java index 51d3b3f..ad84ed8 100644 --- a/src/main/java/de/jottyfan/quickiemod/items/ToolRangeableHoe.java +++ b/src/main/java/de/jottyfan/quickiemod/item/ToolRangeableHoe.java @@ -1,4 +1,4 @@ -package de.jottyfan.quickiemod.items; +package de.jottyfan.quickiemod.item; import java.util.List; @@ -28,8 +28,8 @@ public abstract class ToolRangeableHoe extends HoeItem implements ToolRangeable public HarvestRange range; - public ToolRangeableHoe(ToolMaterial material, Settings settings, HarvestRange range) { - super(material, settings); + public ToolRangeableHoe(ToolMaterial material, float attackDamage, float attackSpeed, Settings settings, HarvestRange range) { + super(material, attackDamage, attackSpeed, settings); this.range = range; } diff --git a/src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderAxe.java b/src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderAxe.java new file mode 100644 index 0000000..cd70e76 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderAxe.java @@ -0,0 +1,30 @@ +package de.jottyfan.quickiemod.item; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ToolMaterial; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.tag.BlockTags; +import net.minecraft.registry.tag.ItemTags; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class ToolSpeedpowderAxe extends ToolRangeableAxe { + + private final static ToolMaterial MATERIAL = new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, 800, 7f, 1f, 15, ItemTags.DIAMOND_TOOL_MATERIALS); + + public ToolSpeedpowderAxe(Identifier identifier) { + super(MATERIAL, 7f, -3.1f, new Item.Settings().useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier))); + } + + @Override + public HarvestRange getRange(ItemStack stack) { + // TODO: get the range from the stack + return new HarvestRange(32, 64, 32); + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderHoe.java b/src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderHoe.java new file mode 100644 index 0000000..9970559 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderHoe.java @@ -0,0 +1,24 @@ +package de.jottyfan.quickiemod.item; + +import net.minecraft.item.Item; +import net.minecraft.item.ToolMaterial; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.tag.BlockTags; +import net.minecraft.registry.tag.ItemTags; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class ToolSpeedpowderHoe extends ToolRangeableHoe { + + public static final Integer DEFAULT_PLOW_RANGE = 2; + private final static ToolMaterial MATERIAL = new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, 800, 7f, 1f, 15, ItemTags.DIAMOND_TOOL_MATERIALS); + + public ToolSpeedpowderHoe(Identifier identifier) { + super(MATERIAL, 7F, -3.1F, new Item.Settings().useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier)), new HarvestRange(DEFAULT_PLOW_RANGE)); + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderPickaxe.java b/src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderPickaxe.java similarity index 66% rename from src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderPickaxe.java rename to src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderPickaxe.java index 2d5d3de..04691cb 100644 --- a/src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderPickaxe.java +++ b/src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderPickaxe.java @@ -1,16 +1,20 @@ -package de.jottyfan.quickiemod.items; +package de.jottyfan.quickiemod.item; import java.util.List; import com.google.common.collect.Lists; -import de.jottyfan.quickiemod.items.mat.QuickieToolMaterial; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.item.AxeItem; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.PickaxeItem; +import net.minecraft.item.ToolMaterial; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.tag.BlockTags; +import net.minecraft.registry.tag.ItemTags; +import net.minecraft.util.Identifier; /** * @@ -20,10 +24,10 @@ import net.minecraft.item.PickaxeItem; public class ToolSpeedpowderPickaxe extends PickaxeItem implements ToolRangeable { public static final int[] DEFAULT_HARVEST_RANGE = new int[] { 3, 3, 3 }; - private final static QuickieToolMaterial MATERIAL = QuickieToolMaterial.of(7f, 800, 15, 1f, QuickieItems.SPEEDINGOT.getItem()); + private final static ToolMaterial MATERIAL = new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, 800, 7.0F, 1.0F, 15, ItemTags.DIAMOND_TOOL_MATERIALS); - public ToolSpeedpowderPickaxe() { - super(MATERIAL, new Item.Settings().attributeModifiers(AxeItem.createAttributeModifiers(MATERIAL, 7F, -3.1F))); + public ToolSpeedpowderPickaxe(Identifier identifier) { + super(MATERIAL, 7F, -3.1F, new Item.Settings().useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier))); } @Override diff --git a/src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderShears.java b/src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderShears.java similarity index 91% rename from src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderShears.java rename to src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderShears.java index ae75d84..170c56a 100644 --- a/src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderShears.java +++ b/src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderShears.java @@ -1,4 +1,4 @@ -package de.jottyfan.quickiemod.items; +package de.jottyfan.quickiemod.item; import java.util.Random; @@ -14,9 +14,12 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.item.ShearsItem; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.util.ActionResult; import net.minecraft.util.DyeColor; import net.minecraft.util.Hand; +import net.minecraft.util.Identifier; import net.minecraft.util.math.Vec3d; /** @@ -26,8 +29,8 @@ import net.minecraft.util.math.Vec3d; */ public class ToolSpeedpowderShears extends ShearsItem { - public ToolSpeedpowderShears() { - super(new Item.Settings().component(DataComponentTypes.TOOL, ShearsItem.createToolComponent())); + public ToolSpeedpowderShears(Identifier identifier) { + super(new Item.Settings().component(DataComponentTypes.TOOL, ShearsItem.createToolComponent()).useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier))); } @Override diff --git a/src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderShovel.java b/src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderShovel.java similarity index 81% rename from src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderShovel.java rename to src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderShovel.java index b26e527..a6e17d1 100644 --- a/src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderShovel.java +++ b/src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderShovel.java @@ -1,17 +1,22 @@ -package de.jottyfan.quickiemod.items; +package de.jottyfan.quickiemod.item; import java.util.List; import com.google.common.collect.Lists; -import de.jottyfan.quickiemod.items.mat.QuickieToolMaterial; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; import net.minecraft.item.ShovelItem; +import net.minecraft.item.ToolMaterial; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.tag.BlockTags; +import net.minecraft.registry.tag.ItemTags; import net.minecraft.util.ActionResult; +import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; @@ -23,11 +28,11 @@ import net.minecraft.world.World; */ public class ToolSpeedpowderShovel extends ShovelItem implements ToolRangeable { public static final Integer DEFAULT_HARVEST_RANGE = 3; - private final static QuickieToolMaterial MATERIAL = QuickieToolMaterial.of(7f, 800, 15, 1f, QuickieItems.SPEEDINGOT.getItem()); + private final static ToolMaterial MATERIAL = new ToolMaterial(BlockTags.INCORRECT_FOR_DIAMOND_TOOL, 800, 7f, 1f, 15, ItemTags.DIAMOND_TOOL_MATERIALS); public HarvestRange range; - public ToolSpeedpowderShovel() { - super(MATERIAL, new Item.Settings().attributeModifiers(ShovelItem.createAttributeModifiers(MATERIAL, 7F, -3.1F))); + public ToolSpeedpowderShovel(Identifier identifier) { + super(MATERIAL, 7F, -3.1F, new Item.Settings().useItemPrefixedTranslationKey().registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier))); this.range = new HarvestRange(DEFAULT_HARVEST_RANGE); } diff --git a/src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderWaterHoe.java b/src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderWaterHoe.java similarity index 84% rename from src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderWaterHoe.java rename to src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderWaterHoe.java index c7381fb..ca0b714 100644 --- a/src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderWaterHoe.java +++ b/src/main/java/de/jottyfan/quickiemod/item/ToolSpeedpowderWaterHoe.java @@ -1,4 +1,4 @@ -package de.jottyfan.quickiemod.items; +package de.jottyfan.quickiemod.item; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -8,6 +8,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUsageContext; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; +import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -17,6 +18,10 @@ import net.minecraft.world.World; * */ public class ToolSpeedpowderWaterHoe extends ToolSpeedpowderHoe { + public ToolSpeedpowderWaterHoe(Identifier identifier) { + super(identifier); + } + @Override public ActionResult useOnBlock(ItemUsageContext context) { ActionResult res = super.useOnBlock(context); @@ -28,7 +33,7 @@ public class ToolSpeedpowderWaterHoe extends ToolSpeedpowderHoe { Hand hand = context.getHand(); PlayerEntity player = context.getPlayer(); ItemStack oldTool = player.getStackInHand(hand); - ItemStack newTool = new ItemStack(QuickieItems.SPEEDPOWDERHOE.getItem()); + ItemStack newTool = new ItemStack(ModItems.TOOL_SPEEDPOWDERHOE); newTool.setDamage(oldTool.getDamage()); world.spawnEntity(new ItemEntity(world, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(oldBlockState.getBlock()))); player.setStackInHand(hand, newTool); diff --git a/src/main/java/de/jottyfan/quickiemod/itemgroup/ModItemGroup.java b/src/main/java/de/jottyfan/quickiemod/itemgroup/ModItemGroup.java new file mode 100644 index 0000000..effb6fa --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/itemgroup/ModItemGroup.java @@ -0,0 +1,38 @@ +package de.jottyfan.quickiemod.itemgroup; + +import java.util.List; + +import de.jottyfan.quickiemod.Quickiemod; +import de.jottyfan.quickiemod.item.ModItems; +import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class ModItemGroup { + + public static final void registerItemGroup(List items, List blocks) { + Registry.register(Registries.ITEM_GROUP, + RegistryKey.of(RegistryKeys.ITEM_GROUP, Identifier.of(Quickiemod.MOD_ID, "itemgroup")), + FabricItemGroup.builder().icon(() -> new ItemStack(ModItems.ITEM_SPEEDPOWDER)) + .displayName(Text.literal(Quickiemod.MOD_ID)).entries((enabledFeatures, stacks) -> { + for (Item item : items) { + stacks.add(new ItemStack(item)); + } + for (Block block : blocks) { + stacks.add(new ItemStack(block)); + } + }).build()); + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemCanola.java b/src/main/java/de/jottyfan/quickiemod/items/ItemCanola.java deleted file mode 100644 index 67130f1..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemCanola.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public class ItemCanola extends Item { - - public ItemCanola() { - super(new Item.Settings().maxCount(64)); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemCanolabottle.java b/src/main/java/de/jottyfan/quickiemod/items/ItemCanolabottle.java deleted file mode 100644 index 0d6b717..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemCanolabottle.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public class ItemCanolabottle extends Item { - - public ItemCanolabottle() { - super(new Item.Settings().maxCount(64)); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemCanolabottlestack.java b/src/main/java/de/jottyfan/quickiemod/items/ItemCanolabottlestack.java deleted file mode 100644 index 2793024..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemCanolabottlestack.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public class ItemCanolabottlestack extends Item { - - public ItemCanolabottlestack() { - super(new Item.Settings().maxCount(64)); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemCanolaseed.java b/src/main/java/de/jottyfan/quickiemod/items/ItemCanolaseed.java deleted file mode 100644 index 3e852fe..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemCanolaseed.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import de.jottyfan.quickiemod.blocks.QuickieBlocks; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemUsageContext; -import net.minecraft.util.ActionResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class ItemCanolaseed extends Item { - - public ItemCanolaseed() { - super(new Item.Settings().maxCount(64)); - } - - @Override - public ActionResult useOnBlock(ItemUsageContext context) { - BlockPos pos = context.getBlockPos(); - World world = context.getWorld(); - if (QuickieItems.CANOLASEED.getItem().equals(context.getStack().getItem())) { - BlockState state = world.getBlockState(pos); - if (Blocks.FARMLAND.equals(state.getBlock()) && world.getBlockState(pos.up()).isAir()) { - world.setBlockState(pos.up(), QuickieBlocks.CANOLAPLANT.getBlock().getDefaultState()); - context.getStack().decrement(1); - } - } - return super.useOnBlock(context); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemCarrotstack.java b/src/main/java/de/jottyfan/quickiemod/items/ItemCarrotstack.java deleted file mode 100644 index a79f52e..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemCarrotstack.java +++ /dev/null @@ -1,17 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import net.minecraft.component.type.FoodComponent; -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public class ItemCarrotstack extends Item { - - public ItemCarrotstack() { - super(new Item.Settings().maxCount(64) - .food(new FoodComponent.Builder().nutrition(12).saturationModifier(0.6F).build())); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemCotton.java b/src/main/java/de/jottyfan/quickiemod/items/ItemCotton.java deleted file mode 100644 index aaf61b1..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemCotton.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public class ItemCotton extends Item { - - public ItemCotton() { - super(new Item.Settings().maxCount(64)); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemCottonseed.java b/src/main/java/de/jottyfan/quickiemod/items/ItemCottonseed.java deleted file mode 100644 index 20448a9..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemCottonseed.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import de.jottyfan.quickiemod.blocks.QuickieBlocks; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.item.Item; -import net.minecraft.item.ItemUsageContext; -import net.minecraft.util.ActionResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class ItemCottonseed extends Item { - - public ItemCottonseed() { - super(new Item.Settings().maxCount(64)); - } - - @Override - public ActionResult useOnBlock(ItemUsageContext context) { - BlockPos pos = context.getBlockPos(); - World world = context.getWorld(); - if (QuickieItems.COTTONSEED.getItem().equals(context.getStack().getItem())) { - BlockState state = world.getBlockState(pos); - if (Blocks.FARMLAND.equals(state.getBlock()) && world.getBlockState(pos.up()).isAir()) { - world.setBlockState(pos.up(), QuickieBlocks.COTTONPLANT.getBlock().getDefaultState()); - context.getStack().decrement(1); - } - } - return super.useOnBlock(context); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemOxidizedcopperpowder.java b/src/main/java/de/jottyfan/quickiemod/items/ItemOxidizedcopperpowder.java deleted file mode 100644 index 317428b..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemOxidizedcopperpowder.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public class ItemOxidizedcopperpowder extends Item { - - public ItemOxidizedcopperpowder() { - super(new Item.Settings().maxCount(64)); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemQuickieingot.java b/src/main/java/de/jottyfan/quickiemod/items/ItemQuickieingot.java deleted file mode 100644 index e1c9fb6..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemQuickieingot.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public class ItemQuickieingot extends Item { - - public ItemQuickieingot() { - super(new Item.Settings()); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemQuickiepowder.java b/src/main/java/de/jottyfan/quickiemod/items/ItemQuickiepowder.java deleted file mode 100644 index 9ac56ca..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemQuickiepowder.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public class ItemQuickiepowder extends Item { - - public ItemQuickiepowder() { - super(new Item.Settings()); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemRottenFleshStripes.java b/src/main/java/de/jottyfan/quickiemod/items/ItemRottenFleshStripes.java deleted file mode 100644 index 2a6f385..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemRottenFleshStripes.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public class ItemRottenFleshStripes extends Item { - - public ItemRottenFleshStripes() { - super(new Item.Settings().maxCount(64)); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemSalpeter.java b/src/main/java/de/jottyfan/quickiemod/items/ItemSalpeter.java deleted file mode 100644 index 96a0760..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemSalpeter.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public class ItemSalpeter extends Item { - - public ItemSalpeter() { - super(new Item.Settings()); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemSpeedingot.java b/src/main/java/de/jottyfan/quickiemod/items/ItemSpeedingot.java deleted file mode 100644 index 04c739a..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemSpeedingot.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public class ItemSpeedingot extends Item { - - public ItemSpeedingot() { - super(new Item.Settings()); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemSpeedpowder.java b/src/main/java/de/jottyfan/quickiemod/items/ItemSpeedpowder.java deleted file mode 100644 index ee5e92b..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemSpeedpowder.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public class ItemSpeedpowder extends Item { - - public ItemSpeedpowder() { - super(new Item.Settings()); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemSpeedpowdershears.java b/src/main/java/de/jottyfan/quickiemod/items/ItemSpeedpowdershears.java deleted file mode 100644 index b586307..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemSpeedpowdershears.java +++ /dev/null @@ -1,96 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import java.util.Random; - -import net.minecraft.component.DataComponentTypes; -import net.minecraft.entity.ItemEntity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.passive.ChickenEntity; -import net.minecraft.entity.passive.CowEntity; -import net.minecraft.entity.passive.HorseEntity; -import net.minecraft.entity.passive.SheepEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.ShearsItem; -import net.minecraft.util.ActionResult; -import net.minecraft.util.DyeColor; -import net.minecraft.util.Hand; -import net.minecraft.util.math.Vec3d; - -/** - * - * @author jotty - * - */ -public class ItemSpeedpowdershears extends ShearsItem { - - public ItemSpeedpowdershears() { - super(new Item.Settings().component(DataComponentTypes.TOOL, ShearsItem.createToolComponent())); - } - - @Override - public ActionResult useOnEntity(ItemStack stack, PlayerEntity user, LivingEntity entity, Hand hand) { - Vec3d pos = entity.getPos(); - Integer amount = 3 + new Random().nextInt(4); - if (entity instanceof SheepEntity) { - SheepEntity sheep = (SheepEntity) entity; - if (sheep.isShearable()) { - sheep.setSheared(true); - sheep.playAmbientSound(); - DyeColor color = sheep.getColor(); - Item item = Items.WHITE_WOOL; - if (color.equals(DyeColor.BLACK)) { - item = Items.BLACK_WOOL; - } else if (color.equals(DyeColor.GRAY)) { - item = Items.GRAY_WOOL; - } else if (color.equals(DyeColor.LIGHT_GRAY)) { - item = Items.LIGHT_GRAY_WOOL; - } else if (color.equals(DyeColor.BROWN)) { - item = Items.BROWN_WOOL; - } else if (color.equals(DyeColor.BLUE)) { - item = Items.BLUE_WOOL; - } else if (color.equals(DyeColor.LIGHT_BLUE)) { - item = Items.LIGHT_BLUE_WOOL; - } else if (color.equals(DyeColor.GREEN)) { - item = Items.GREEN_WOOL; - } else if (color.equals(DyeColor.LIME)) { - item = Items.LIME_WOOL; - } else if (color.equals(DyeColor.CYAN)) { - item = Items.CYAN_WOOL; - } else if (color.equals(DyeColor.MAGENTA)) { - item = Items.MAGENTA_WOOL; - } else if (color.equals(DyeColor.ORANGE)) { - item = Items.ORANGE_WOOL; - } else if (color.equals(DyeColor.PINK)) { - item = Items.PINK_WOOL; - } else if (color.equals(DyeColor.PURPLE)) { - item = Items.PURPLE_WOOL; - } else if (color.equals(DyeColor.RED)) { - item = Items.RED_WOOL; - } else if (color.equals(DyeColor.YELLOW)) { - item = Items.YELLOW_WOOL; - } - user.getWorld().spawnEntity(new ItemEntity(user.getWorld(), pos.getX(), pos.getY(), pos.getZ(), new ItemStack(item, amount))); - return ActionResult.SUCCESS; - } - } else if (entity instanceof HorseEntity) { - HorseEntity horse = (HorseEntity) entity; - horse.playAmbientSound(); - user.getWorld().spawnEntity(new ItemEntity(user.getWorld(), pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LEATHER, amount))); - return ActionResult.SUCCESS; - } else if (entity instanceof CowEntity) { - CowEntity cow = (CowEntity) entity; - cow.playAmbientSound(); - user.getWorld().spawnEntity(new ItemEntity(user.getWorld(), pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.LEATHER, amount))); - return ActionResult.SUCCESS; - } else if (entity instanceof ChickenEntity) { - ChickenEntity cow = (ChickenEntity) entity; - cow.playAmbientSound(); - user.getWorld().spawnEntity(new ItemEntity(user.getWorld(), pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.FEATHER, amount))); - return ActionResult.SUCCESS; - } - return ActionResult.PASS; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemStub.java b/src/main/java/de/jottyfan/quickiemod/items/ItemStub.java deleted file mode 100644 index e4d7850..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemStub.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public class ItemStub extends Item { - public ItemStub() { - super(new Item.Settings().maxCount(64)); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ItemSulphor.java b/src/main/java/de/jottyfan/quickiemod/items/ItemSulphor.java deleted file mode 100644 index bf7cc5e..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ItemSulphor.java +++ /dev/null @@ -1,41 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Hand; -import net.minecraft.util.TypedActionResult; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -public class ItemSulphor extends Item { - - public ItemSulphor() { - super(new Item.Settings()); - } - - @Override - public TypedActionResult use(World world, PlayerEntity user, Hand hand) { - ItemStack itemStack = user.getStackInHand(hand); - // TODO: reactivate when sulforpad is available -// BlockHitResult hitResult = BoatItem.raycast(world, user, RaycastContext.FluidHandling.SOURCE_ONLY); -// if (((HitResult) hitResult).getType() == HitResult.Type.MISS) { -// return TypedActionResult.pass(itemStack); -// } -// if (((HitResult) hitResult).getType() == HitResult.Type.BLOCK) { -// if (!world.isClient) { -// BlockPos pos = hitResult.getBlockPos(); -// if (BlockSulforpad.getAllowedBlockHolder().contains(world.getBlockState(pos).getBlock()) && world.getBlockState(pos.up()).isAir()) { -// world.setBlockState(pos.up(), QuickieBlocks.SULFORPAD.getDefaultState()); -// itemStack.decrement(1); -// } -// } -// return TypedActionResult.success(itemStack, world.isClient()); -// } - return TypedActionResult.pass(itemStack); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/QuickieItems.java b/src/main/java/de/jottyfan/quickiemod/items/QuickieItems.java deleted file mode 100644 index cb9ae0e..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/QuickieItems.java +++ /dev/null @@ -1,56 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public enum QuickieItems { - // @formatter:off - SPEEDPOWDER(new ItemSpeedpowder(), "speedpowder"), - QUICKIEPOWDER(new ItemQuickiepowder(), "quickiepowder"), - OXIDIZEDCOPPERPOWDER(new ItemOxidizedcopperpowder(), "oxidizedcopperpowder"), - SPEEDINGOT(new ItemSpeedingot(), "speedingot"), - QUICKIEINGOT(new ItemQuickieingot(), "quickieingot"), - SPEEDPOWDERAXE(new ToolSpeedpowderAxe(), "speedpowderaxe"), - SPEEDPOWDERPICKAXE(new ToolSpeedpowderPickaxe(), "speedpowderpickaxe"), - SPEEDPOWDERSHOVEL(new ToolSpeedpowderShovel(), "speedpowdershovel"), - SPEEDPOWDERHOE(new ToolSpeedpowderHoe(), "speedpowderhoe"), - SPEEDPOWDERWATERHOE(new ToolSpeedpowderWaterHoe(), "speedpowderwaterhoe"), - SPEEDPOWDERSHEARS(new ToolSpeedpowderShears(), "speedpowdershears"), - QUICKIEPOWDERAXE(new ToolQuickiepowderAxe(), "quickiepowderaxe"), - QUICKIEPOWDERPICKAXE(new ToolQuickiepowderPickaxe(), "quickiepowderpickaxe"), - QUICKIEPOWDERSHOVEL(new ToolQuickiepowderShovel(), "quickiepowdershovel"), - QUICKIEPOWDERHOE(new ToolQuickiepowderHoe(), "quickiepowderhoe"), - QUICKIEPOWDERWATERHOE(new ToolQuickiepowderWaterHoe(), "quickiepowderwaterhoe"), - ROTTEN_FLESH_STRIPES(new ItemRottenFleshStripes(), "rotten_flesh_stripes"), - CARROTSTACK(new ItemCarrotstack(), "carrotstack"), - COTTON(new ItemCotton(), "cotton"), - COTTONSEED(new ItemCottonseed(), "cottonseed"), - CANOLA(new ItemCanola(), "canola"), - CANOLASEED(new ItemCanolaseed(), "canolaseed"), - CANOLABOTTLE(new ItemCanolabottle(), "canolabottle"), - CANOLABOTTLESTACK(new ItemCanolabottlestack(), "canolabottlestack"), - STUB(new ItemStub(), "stub"), - SALPETER(new ItemSalpeter(), "salpeter"), - SULPHOR(new ItemSulphor(), "sulphor"); - // @formatter:on - - private final Item item; - private final String name; - - private QuickieItems(Item item, String name) { - this.item = item; - this.name = name; - } - - public final Item getItem() { - return item; - } - - public final String getName() { - return name; - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderAxe.java b/src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderAxe.java deleted file mode 100644 index 74829f4..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderAxe.java +++ /dev/null @@ -1,26 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import de.jottyfan.quickiemod.items.mat.QuickieToolMaterial; -import net.minecraft.item.AxeItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -/** - * - * @author jotty - * - */ -public class ToolQuickiepowderAxe extends ToolRangeableAxe { - - private final static QuickieToolMaterial MATERIAL = QuickieToolMaterial.of(7f, 2400, 15, 1f, QuickieItems.SPEEDINGOT.getItem()); - - public ToolQuickiepowderAxe() { - super(MATERIAL, new Item.Settings().attributeModifiers(AxeItem.createAttributeModifiers(MATERIAL, 7F, -3.1F))); - } - - @Override - public HarvestRange getRange(ItemStack stack) { - // TODO: get the range from the stack - return new HarvestRange(64, 128, 64); // trees bigger than that are too heavy for one small axe... - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderHoe.java b/src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderHoe.java deleted file mode 100644 index a036c49..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ToolQuickiepowderHoe.java +++ /dev/null @@ -1,20 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import de.jottyfan.quickiemod.items.mat.QuickieToolMaterial; -import net.minecraft.item.HoeItem; -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public class ToolQuickiepowderHoe extends ToolRangeableHoe { - - public static final Integer DEFAULT_PLOW_RANGE = 4; - private final static QuickieToolMaterial MATERIAL = QuickieToolMaterial.of(7f, 2400, 15, 1f, QuickieItems.SPEEDINGOT.getItem()); - - public ToolQuickiepowderHoe() { - super(MATERIAL, new Item.Settings().attributeModifiers(HoeItem.createAttributeModifiers(MATERIAL, 7F, -3.1F)), new HarvestRange(DEFAULT_PLOW_RANGE)); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderAxe.java b/src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderAxe.java deleted file mode 100644 index 73e926a..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderAxe.java +++ /dev/null @@ -1,26 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import de.jottyfan.quickiemod.items.mat.QuickieToolMaterial; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.PickaxeItem; - -/** - * - * @author jotty - * - */ -public class ToolSpeedpowderAxe extends ToolRangeableAxe { - - private final static QuickieToolMaterial MATERIAL = QuickieToolMaterial.of(7f, 800, 15, 1f, QuickieItems.SPEEDINGOT.getItem()); - - public ToolSpeedpowderAxe() { - super(MATERIAL, new Item.Settings().attributeModifiers(PickaxeItem.createAttributeModifiers(MATERIAL, 7f, -3.1f))); - } - - @Override - public HarvestRange getRange(ItemStack stack) { - // TODO: get the range from the stack - return new HarvestRange(32, 64, 32); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderHoe.java b/src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderHoe.java deleted file mode 100644 index 14edd2a..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/ToolSpeedpowderHoe.java +++ /dev/null @@ -1,20 +0,0 @@ -package de.jottyfan.quickiemod.items; - -import de.jottyfan.quickiemod.items.mat.QuickieToolMaterial; -import net.minecraft.item.HoeItem; -import net.minecraft.item.Item; - -/** - * - * @author jotty - * - */ -public class ToolSpeedpowderHoe extends ToolRangeableHoe { - - public static final Integer DEFAULT_PLOW_RANGE = 2; - private final static QuickieToolMaterial MATERIAL = QuickieToolMaterial.of(7f, 800, 15, 1f, QuickieItems.SPEEDINGOT.getItem()); - - public ToolSpeedpowderHoe() { - super(MATERIAL, new Item.Settings().attributeModifiers(HoeItem.createAttributeModifiers(MATERIAL, 7F, -3.1F)), new HarvestRange(DEFAULT_PLOW_RANGE)); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/items/mat/QuickieToolMaterial.java b/src/main/java/de/jottyfan/quickiemod/items/mat/QuickieToolMaterial.java deleted file mode 100644 index dc7028d..0000000 --- a/src/main/java/de/jottyfan/quickiemod/items/mat/QuickieToolMaterial.java +++ /dev/null @@ -1,64 +0,0 @@ -package de.jottyfan.quickiemod.items.mat; - -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.item.ToolMaterial; -import net.minecraft.recipe.Ingredient; -import net.minecraft.registry.tag.BlockTags; -import net.minecraft.registry.tag.TagKey; - -/** - * - * @author jotty - * - */ -public class QuickieToolMaterial implements ToolMaterial { - - private final float attackDamage; - private final int durability; - private final int enchantability; - private final float miningSpeedMuliplier; - private final Item item; - - private QuickieToolMaterial(float attackDamage, int durability, int enchantability, float miningSpeedMultiplier, Item item) { - this.attackDamage = attackDamage; - this.durability = durability; - this.enchantability = enchantability; - this.miningSpeedMuliplier = miningSpeedMultiplier; - this.item = item; - } - - public static final QuickieToolMaterial of(float attackDamage, int durability, int enchantability, float miningSpeedMultiplier, Item item) { - return new QuickieToolMaterial(attackDamage, durability, enchantability, miningSpeedMultiplier, item); - } - - @Override - public float getAttackDamage() { - return attackDamage; - } - - @Override - public int getDurability() { - return durability; - } - - @Override - public int getEnchantability() { - return enchantability; - } - - @Override - public TagKey getInverseTag() { - return BlockTags.INCORRECT_FOR_IRON_TOOL; - } - - @Override - public float getMiningSpeedMultiplier() { - return miningSpeedMuliplier; - } - - @Override - public Ingredient getRepairIngredient() { - return Ingredient.ofItems(item); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/mixin/BlockBreakMixin.java b/src/main/java/de/jottyfan/quickiemod/mixin/BlockBreakMixin.java deleted file mode 100644 index 537dca3..0000000 --- a/src/main/java/de/jottyfan/quickiemod/mixin/BlockBreakMixin.java +++ /dev/null @@ -1,33 +0,0 @@ -package de.jottyfan.quickiemod.mixin; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import de.jottyfan.quickiemod.event.BreakBlockCallback; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.ActionResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -/** - * - * @author jotty - * - */ -@Mixin(Block.class) -public class BlockBreakMixin { - - @Inject(at = @At("HEAD"), method = "onBreak(Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/BlockState;Lnet/minecraft/entity/player/PlayerEntity;)Lnet/minecraft/block/BlockState;") - private void onBreak(final World world, final BlockPos blockPos, final BlockState blockState, - final PlayerEntity playerEntity, final CallbackInfoReturnable info) { - ActionResult result = BreakBlockCallback.EVENT.invoker().injectBlockBreakCallback(world, blockPos, blockState, - playerEntity); - if (result == ActionResult.FAIL) { - info.cancel(); - } - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/text/PrefixedText.java b/src/main/java/de/jottyfan/quickiemod/text/PrefixedText.java deleted file mode 100644 index 175229b..0000000 --- a/src/main/java/de/jottyfan/quickiemod/text/PrefixedText.java +++ /dev/null @@ -1,52 +0,0 @@ -package de.jottyfan.quickiemod.text; - -import java.util.List; - -import net.minecraft.text.OrderedText; -import net.minecraft.text.Style; -import net.minecraft.text.Text; -import net.minecraft.text.TextContent; - -/** - * - * @author jotty - * - */ -public class PrefixedText implements Text { - - private final String pattern; - private final Text text; - - private PrefixedText(String pattern, Text text) { - this.pattern = pattern; - this.text = text; - } - - public final static PrefixedText instance(String pattern, Text text) { - return new PrefixedText(pattern, text); - } - - private Text generateText() { - return Text.of(pattern.replace("%s", text.getString())); - } - - @Override - public OrderedText asOrderedText() { - return generateText().asOrderedText(); - } - - @Override - public TextContent getContent() { - return generateText().getContent(); - } - - @Override - public List getSiblings() { - return generateText().getSiblings(); - } - - @Override - public Style getStyle() { - return text.getStyle(); - } -} diff --git a/src/main/java/de/jottyfan/quickiemod/util/ModTags.java b/src/main/java/de/jottyfan/quickiemod/util/ModTags.java new file mode 100644 index 0000000..8a17ec4 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/util/ModTags.java @@ -0,0 +1,28 @@ +package de.jottyfan.quickiemod.util; + +import de.jottyfan.quickiemod.Quickiemod; +import net.minecraft.block.Block; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.tag.TagKey; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class ModTags { + + public static final class Blocks { + public static final TagKey SPEEDPOWDER_TOOL = createTag("speedpowder_tool"); + public static final TagKey QUICKIEPOWDER_TOOL = createTag("quickiepowder_tool"); + + private static final TagKey createTag(String name) { + return TagKey.of(RegistryKeys.BLOCK, Identifier.of(Quickiemod.MOD_ID, name)); + } + } + + public static final class Items { + + } +} diff --git a/src/main/resources/assets/quickiemod/blockstates/canolaplant.json b/src/main/resources/assets/quickiemod/blockstates/blockcanolaplant.json similarity index 100% rename from src/main/resources/assets/quickiemod/blockstates/canolaplant.json rename to src/main/resources/assets/quickiemod/blockstates/blockcanolaplant.json diff --git a/src/main/resources/assets/quickiemod/blockstates/cottonplant.json b/src/main/resources/assets/quickiemod/blockstates/blockcottonplant.json similarity index 100% rename from src/main/resources/assets/quickiemod/blockstates/cottonplant.json rename to src/main/resources/assets/quickiemod/blockstates/blockcottonplant.json diff --git a/src/main/resources/assets/quickiemod/blockstates/drillstop.json b/src/main/resources/assets/quickiemod/blockstates/drillstop.json deleted file mode 100644 index 52645fe..0000000 --- a/src/main/resources/assets/quickiemod/blockstates/drillstop.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "quickiemod:block/drillstop" - } - } -} diff --git a/src/main/resources/assets/quickiemod/lang/de_de.json b/src/main/resources/assets/quickiemod/lang/de_de.json index 92ec985..e211fb9 100644 --- a/src/main/resources/assets/quickiemod/lang/de_de.json +++ b/src/main/resources/assets/quickiemod/lang/de_de.json @@ -69,8 +69,8 @@ "block.quickiemod.itemhoarder": "Itemsauger", "block.quickiemod.monsterhoarder": "Monstersauger", "block.quickiemod.kelpstack": "Seegrassbündel", - "block.quickiemod.cottonplant": "Baumwollpflanze", - "block.quickiemod.canolaplant": "Canolapflanze", + "block.quickiemod.blockcottonplant": "Baumwollpflanze", + "block.quickiemod.blockcanolaplant": "Canolapflanze", "block.quickiemod.blocksulphor": "Schwefelblock", "block.quickiemod.blocksalpeter": "Salpeterblock", "block.quickiemod.blockspeedpowder": "Fluchtpulverblock", @@ -103,6 +103,7 @@ "msg.buildingplan.failonblock": "Der Bau wurde abgelehnt, es ist im Weg: %s", "msg.buildingplan.failonplayer": "Der Bau wurde abgelehnt, um Spieler %s nicht zu gefährden.", "msg.itemhoarder.summary": "Der Itemsauger enthält: %s", + "msg.monsterhoarder.size": "Der Radius für diesen Monstersauger beträgt jetzt %d.", "msg.notyetimplemented": "leider noch nicht verfügbar", "msg.backpack.transfer.filled": "Der Rucksack wurde befüllt.", "msg.backpack.transfer.cleared": "Der Rucksackinhalt wurde soweit möglich geleert.", diff --git a/src/main/resources/assets/quickiemod/lang/en_us.json b/src/main/resources/assets/quickiemod/lang/en_us.json index f3cca6f..a5b3ef0 100644 --- a/src/main/resources/assets/quickiemod/lang/en_us.json +++ b/src/main/resources/assets/quickiemod/lang/en_us.json @@ -69,8 +69,8 @@ "block.quickiemod.itemhoarder": "item hoarder", "block.quickiemod.monsterhoarder": "monster hoarder", "block.quickiemod.kelpstack": "kelp bundle", - "block.quickiemod.cottonplant": "cotton plant", - "block.quickiemod.canolaplant": "canola plant", + "block.quickiemod.blockcottonplant": "cotton plant", + "block.quickiemod.blockcanolaplant": "canola plant", "block.quickiemod.blocksulphor": "block of sulfur", "block.quickiemod.blocksalpeter": "block of salpeter", "block.quickiemod.blockspeedpowder": "block of speedpowder", @@ -103,6 +103,7 @@ "msg.buildingplan.failonblock": "The building execution was rejected because of %s", "msg.buildingplan.failonplayer": "The building execution was rejected because of %s who could be injured.", "msg.itemhoarder.summary": "The item hoarder contains: %s", + "msg.monsterhoarder.size": "The radius for this monster hoarder is %d from now on.", "msg.notyetimplemented": "not yet implemented", "msg.backpack.transfer.filled": "Filled the backpack.", "msg.backpack.transfer.cleared": "Cleared the backpack as much as possible.", diff --git a/src/main/resources/assets/quickiemod/models/block/blockstackerdown.json b/src/main/resources/assets/quickiemod/models/block/blockstackerdown.json index 1de4eb6..d42110b 100644 --- a/src/main/resources/assets/quickiemod/models/block/blockstackerdown.json +++ b/src/main/resources/assets/quickiemod/models/block/blockstackerdown.json @@ -1,5 +1,5 @@ { - "parent": "block/cube_bottom_top", + "parent": "minecraft:block/cube_bottom_top", "textures": { "bottom": "quickiemod:block/blockstackerout", "side": "quickiemod:block/blockstackerdown", diff --git a/src/main/resources/assets/quickiemod/models/block/drillstop.json b/src/main/resources/assets/quickiemod/models/block/drillstop.json deleted file mode 100644 index bd29447..0000000 --- a/src/main/resources/assets/quickiemod/models/block/drillstop.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "quickiemod:block/drillstop" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/quickiemod/models/item/drillstop.json b/src/main/resources/assets/quickiemod/models/item/drillstop.json deleted file mode 100644 index f9b6069..0000000 --- a/src/main/resources/assets/quickiemod/models/item/drillstop.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "quickiemod:block/drillstop", - "display": { - "thirdperson": { - "rotation": [ 10, -45, 170 ], - "translation": [ 0, 1.5, -2.75 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/quickiemod/models/item/kelpstack.json b/src/main/resources/assets/quickiemod/models/item/kelpstack.json index b3c3481..7a09f11 100644 --- a/src/main/resources/assets/quickiemod/models/item/kelpstack.json +++ b/src/main/resources/assets/quickiemod/models/item/kelpstack.json @@ -1,10 +1,25 @@ { - "parent": "quickiemod:block/kelpstack", - "display": { - "thirdperson": { - "rotation": [ 10, -45, 170 ], - "translation": [ 0, 1.5, -2.75 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - } -} \ No newline at end of file + "parent": "block/block", + "textures": { + "particle": "quickiemod:block/kelpstack_side", + "down": "quickiemod:block/kelpstack_bottom", + "up": "quickiemod:block/kelpstack_top", + "north": "quickiemod:block/kelpstack_side", + "east": "quickiemod:block/kelpstack_side", + "south": "quickiemod:block/kelpstack_side", + "west": "quickiemod:block/kelpstack_side" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#down", "cullface": "down" }, + "up": { "texture": "#up", "cullface": "up" }, + "north": { "texture": "#north", "cullface": "north" }, + "south": { "uv": [16, 0, 0, 16], "texture": "#south", "cullface": "south" }, + "west": { "texture": "#west", "cullface": "west" }, + "east": { "uv": [16, 0, 0, 16], "texture": "#east", "cullface": "east" } + } + } + ] +} diff --git a/src/main/resources/assets/quickiemod/textures/block/cottonplant3.png b/src/main/resources/assets/quickiemod/textures/block/cottonplant3.png index d19a18943c71002bf9ab98bde9c04f795c423341..6ce03a452147fdb1073e2b49ae9b0e67f1832b93 100644 GIT binary patch delta 1902 zcmV-!2a)*jDS<1HB!3HfR9JLUVRs;Ka&Km7Y-J#Hd2nSQWq4_3004N}?N(co+c*sT z=PC9G1i%M)96rRVy+Mw@O^Kw(o^fK&rYb+N$^ryI0N4#sGRKd9yZHw{CL4_NQ9}yB z;^&e}oS~?_e&sxqb?13r*rnXr&A!1f38Y+?iKqR59XieHG=G!O@?U{=rVP#BZsa`e z<=$RqK-R}VvjU+jvu*Q%8Ay0mD-O^f}ncXz$?e8RV@PVSk*|Ci=B;pZVSn`G_sX&?lJsLZe_-v_Aou;THF{#7ZLnF>FmK2`tu}1=rJei=v~I}G z!yhwi-I?#~S$B$w(FeMFZ`#jAV-?v2U=ik`)>2Ller2F|J{538%o@5@p^PKpP@8Q< z3p86XX$5*B2KSvDHOkcKIAx`Z5*;5LA(^XTIgJXE5`R}2&EUpCog*5ep*2|Q)kDI& z7CO_WGhHRM&Dch8WkN8*Bi}yEtB$>oSt7E!u|i!urU6x00{uh44UABqp!yTwbv*tC zuL1`B3A18>*%ot!D4uT3B`47WM-O?;9>q2T03xLJC^p7lCUXWT{ubU$)RQ;^3{C0#eo)GjnCAT=+RmKXwQ5Ru9bGx`1u?Trm>{)X zMqCi;#uD4~1K#GlMD-F^tix~CutTl%*nb6=wzy%plrkB_i%1ulQyTkVcvVvOc|kO6 z=G5FLU^a!EZdELBzY1=?S&gh}v|TJ28}`EUYG%JXs!U6)MIM^#L7Hbbo=SW&?DlEP zrroq#wKp(odz%6C9yoZHts<@t-Z#zrP=77W&$w~CEAbm5_FsZ$?AvJ5tAS$JZ6FZV zxTNr_&B1(gOZ#(y1m7vi{0DH3!C?A!accko0fm!!1RZ}x(W;0YR2(u?Cp-9oIMyl@ zp+cw?T6HkF^b49aBq=VAf@{ISkHxBki?gl{u7V)=0pjf7r060g{x2!Ci1pyOAMfrx z?%n}Hwa7H9Edpq|Z6;z-F_m5wJ6_R^A@pMcy)v_mIZ2A6<@maXkFR%Op4Ix?pQA_3 zSPbxq#1VgHm^SeS@yw=eaNZ{lvb?MkpA(OpbV1@rt}7nDan89c@XVl@Ow1DpiN#zK zD^1MurbawX98xu%@`aSgD(5ZETCvRP_v9}OWb~C~uG1Vr42xKT1Q80#D4+-%VOn)k zEF@?@+QL8V`XzEH-kX=9cAN=mt%1(bxdP#vO(Ej2$AEQ9WE>NpD&iAq7 z)J_2ZGjOFh{G}=|`$>AGp@oiszHQ**x}hn1z~v4w_+-eY>`H!`LN*J$pV2p^fq`3~ zYt8GezK_!fAW2=tZ-9eCU@S-3>n+~h+1%T|XX^d^0KemM#ichP6#xJZTWM5SbXZMH zI%BgE27v-3IX7f9Fk)q8Eo3=lV=Xi_Wi%~0Hexj`V`DI5H90pkH85i^leY+_4l^<} zH8wdnG&eUnF*GofYYA-*F)=zaHB>P;Iy5;tGc=Rt2_OzJF*-6eR53U@G&wpmG_w>6 z5do7z3S1;&I5T5qFflYOW;tbHEi_|cGc7qVV>vA{HexqnIbk(1I5#(w!U{(YF)=MN zHB>P;Iy5;tGc>ao3vLJ&0f7bR00006VoOIv00IDN03iLXh9Q%i6CVi+84)oeV%wEk zlfx4zf7(ezK~y-)?UFr;gg_95KNlkr1TSFffdo^p;2k`Rp_!qlP(%&HL=1&)!5?gU z@||JF-GzSHy7~b=$V|eUDNK0LO7& zHu?A*XqrY()5NxIlx0a(RY)lTD2hVA74UuEaBy80r4&umpp?S4ZI)$02yyQQd7kTi z-w{IKc^=1cAf+S-0^{uj073|cVZby^)^%l`XO82zZ%rJ>I*K9zW@6WLd^}o`3hs59b7GzVSs#Gynhq07*qoM6N<$f^Ls+g#Z8m delta 1952 zcmV;R2VeMsEAT0hB!5VHR9JLUVRs;Ka&Km7Y-J#Hd2nSQWq4_3004N}?N?cLBqCN51P&t%tR}&w7haNJWdOA+%>VJP3x;)TgPndOZ81ijRNql!F9Pk6+JLH6+N9tykdL zW}r@&dth`tU5cxIb!EiF-I25SbZ_DGQD{J16hM1RuYW-W%(;GSu<;VyrvC%Ft=4es{C zZ#~C)dw$ZFcDpzjy`g)I7RQ=2W|4gW7U4|ln#z*UuS^uzsDM{(Fv!{nVZI4(wAogq zK(iGqtw2u1;C_&&MwtfnRaUA9(Q{`-$y^P)rHmjcaetlkBR}xcV0Fngqz1dXbI9=> z3oW;4xvLayGqw@BGQk*O$d6z1)sAD#wM1m&jTPeJxf&3KCD1<$bOR$a4ydvKzTWrG zEK``XNfDPn?0wPjoB?6EU1Z9Md z)yM@5kbej_1j*jH0CKQ8;2UF>krIlQSduBZB7Lf_QbW}mYpS_%a}5i;g@2|kw$yT`j#TQtOAlRp?5XF0R2y#i zAtMYmBaSrk&Dx>$!}|@^=&;6%so7C))}U3rOwim;WO4?^*b@j>um;AE*po9G$$Os6 zP0ny0VO0ntNSWj`nv8)#--%_=&D~+n0L9vDW4(Q5R!- z8GlYtt;6aYK{7}D;rRW$H2>A%tK}aP0L!5=Y%)492Q-Ngnr-{mJkahFj0zH@J zz2e)Y^73IsnNq@eJ8QTSoS5u!JdczWT%pu>HA>?UKbSS&^e=qD5SMRBiNlVFq;{Wb z+4_bZ$%O+@t7}w=wZ-FL3brkPL0|jvB^fK zhT#3-&vCgpZnZ6p)_h)#45x@b0PpKm2A&-9*_l6MPz6$@r7fyiwr7s$B=V zpqFlVzPRhU3B$EDrT#7g^WzZSl~0CfxY+JU^jqf4>+w*>kvuV)TftuID-x+cGWbG7 zxUhvgfwMU&h2#IVtTZpB^Z#TBR~meqntuUj{KlKHw~`D100D%PJOmwor6LuP78Fs) zP@U|eB965RMW_&Jg;pI*F8zWg4M~cNqu^R_@ME#+;Nq;SgR3A2etWTrHZkwq@T+C!w#lR~BgfM_n49d(h<|HWz&+&B+A7AgH zJj?sspQBIBSq$)r#4%=nm^SeS@yw=eaNZ{lv!bjLpA%1*bV1@rt}8CTaV|7j;F)1F zoth^O6N`loRyvp!O^tY(IHGDgCuqO|IySV+-++`~WI^h@MY$W;O(#{w$QAUFNsfAG6oD?c@V=_Uo^K=+H|e2f8s zU7%5OobO}DX`BH5XW&Y2`zv)|_LKBlTZTqVl6jfVPh>cVPR%1Vl-rAEj2e{V_{-8G&nS5 zWRrUcrVcPTGd46bGBGwXHZU`=r(vN+_|xMs~?h`%AbySO^&kj2eO#Mur)cm%0X$>309@~TPXy z7tXoxk6)wr*)mO2aU2H`p>11S*InSRE)!;1CgaH^w-47?YY~Lu=4k1Wm5&3ZluRG* zsOpM;$<2)W@e_Jp0&sqHB3~MKp4Z#n+QnFdQVMG=gY^OWC8sF!ZW)|j97)sEw6hIH zdu!Bh4SJpv>>qT?pezgYw9jy-;QCi diff --git a/src/main/resources/assets/quickiemod/textures/block/cottonplant4.png b/src/main/resources/assets/quickiemod/textures/block/cottonplant4.png index 4cd6a0534c40ace85e09f614ebc30909f43b858d..81cd078a91df1955d15ba472a87c04c8e776cd07 100644 GIT binary patch delta 2189 zcmV;82y*w=EsrgbBYy;OdQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+U-|ca_lG! z{bv=k1SBCI%i&?FW(TwUIoLoylFseq-kPtmD@GPVI_OBaV~&6R?&dFCOpcAy5PkCA z;&RC)&Jd!#u5v!fy7M_->=GXIW=}9wf>Ey5#8ZDj51HnBntwrP*)K;sQii0riJYgt zJnGAI$nn|HL?CoUwrwt$j)W&7cfHq%$fp<{w$|#5?4~N-{+tB%>M1xp9orCmf*jep zfPA(ARKgh^Ihv7{V!ba@1|~j)#NsL9E|fC{hW|TTCLyXr+U)mXidnD z!}pP6-H{*kwd@cxM|X7h-eNyDja_8tkqbXJwYG9fuqz{r=PHjoSZ`3Z5yH3=?r5{E zD1l}xI;}uX#NfV@qehuJ9p_l70;1!C14ia*SWaaGNq>o}jAC%(rp`fS|pwi(+9rc7`~Sn}iByldF|=p`Z>cdmeo&+>(qK>rwE21cmQr0SXAbw6K& zR{?{1ra5AR*%ouTC`z~Dl9OnGp<=vxk3yRckRpUufI*)*vYtfA15scOL`Y-=K^f4| zjah6uX>&K3Go1enZzjZ(H~wAb%%JW~=05WF8Eb8PCF;r8 z)qjQ~saDW^m_K6Xn8)Y!>aEm1?^^ve%q(AK?Qvul)2Wlys+>h z>Dcl7CN9ZR#ic5;lbv;e*;)6pRGoD$v0sm7E2#T4m)o>6)YojK4K?i4 zMP2RC@zd=WU1UDARX+H+t>T_!Sp}AlCACr5Y{qUIH$jKBxScsUL{f28S_Qs zns++;o$)_%gnum>{%Y!gGAx!^hXVD9`df_vh$UawY?O z0&#zg>4rtTK|Hf*>74h8!>lMN#OK8023?T&k?XR{Z=4Gb`*~*ANT=qB!^A?Njpa6G zMMEW?CXOhoM*04X%L?Z$&T6^Jn)l={4CS~|df(QXJswklh3sG7%QcR?1 zKknflcKjl_WO9|j$gzM5R7j2={11M2YvzBaCf%e^9O!(p?T=9)xC=CDw*7r<+l><- z@C;mOEq|pB%zlzyYiW@qpl=(vxNd3k9&ot>3_j_SAvscjrazwt-p}ZpvcSMC(7opN z*4)SG1CXY!k~hG?Auv{;>~)WKceVHS@0n(QKMfUfJI599|EiqzaF)cJ>IWjFcWil`=Vq-QlIAS?5HZU@i?+K?4Gcq+bH!v_V zF*P(eF))*)3T+E9F*-6eR53U@H87JL3nL3LF*-6eR53U@H88VE3lss9dkb77IXN^i zFf}+bEio`RV=XjdGdV3{G-PHiVl*~6H)dfsVKg;3llu!t3o$V*GBs2&I65^jvrPv?Vo-6Jz%@tqU$ zn2eYeSGS`aU2Z8f1q40Gnq{2_xsfAb#}WQQcBL}^GmDM`u-FU1Od0(jm2U?sZ^p? zt8qLYIUEj1DW~al`tz?_dl;eFY-&4 zo=2zC(KegSC(rZVCrR?9+wFdP(`gO{17+K`dh03w=3q1$8xhCxzk8-1v9zj02evAg P00000NkvXXu0mjfut)_t delta 2407 zcmV-t37GbeE!QoOBYy>fdQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+TB-KlH)cE z{pTri1QOr^9EWRFZjj^Wagl8IbkDdaseD8#ixdc9djLqA{@0(w{DF&z#rTjUYK#__ zSFe;Y5xcLlp3eI9JTLZ|ywJ_PKp-(j-mglB-a*IQop(J-+<(P?3A#09%)(|?R7o$cwR$xBLz2hObD|icOCC>8Hl?VT3t68K z&o&L^wA3R;N7F^P-Y-^yP1M=3#go}@D|!Ar=QU=mssW>8!OOhX!V0_vlrRB;bqgNZ z-obp1%_Bx%Tz~JlWuavB$^3-cBSBvCd;FB{!X@Zh;9Czp zYnFOzexXyD5qw-RIhysw5Du2&p@bh+q5-T^P265dv#B|%@ zmReovsuSCcZ4RvDAk5*D-@eVejAP7Na?Z*fE7(OVeL;1Ae-2;+B5s_Zh85uJ{&-DX z83=|IW`Tp*7PCc^;2z1v3up#oz_@GArFH}$L{J@IjAI~RqvPNrEJ{SlIRsJwP=@KK zMk+wSg?~T|Mv`Za00-3p-S{TC#Y%xT8C{jV;lPm-uu;wc%lm-*NnVgcIdJeHgcwqg zpdm+&v+`n0akl52IQbM(Oeu*;nzFEX2@)lVh)PycM*9wmI#p5CoS`&Ba>myg3^^An zTzm;7mQUKp1O4Hc_7sW4?n_) zBbgyXN4`-zu>Np=12uP0qlMIDOgCzvrgVvLvz>&A84x4y0C)mwKn#gJF|*>lr-|Ie z4EqtPA`pxW6P)HIVnEP$M`5@dyMvrT6#o_6Op=8g{Zr)3gzin`e#GrF)Y{x7>OyRn z;eQOOWmMk?C6i<-VuzPGlRS6Y*U@~n@ZIr$CtKQhYO)@P;PyN^rWQ;wZ^|NtwT}XpvAO zn^>h#3(K~w_O>XbtrvwWn^B#{J!>M=_kSnFUABKZnrFgsH%7GmHJ!(zsYFF`xz?O) zRIoJ{)b&y*&S*S9&Z=MXnCcE`B#xV}cVL;W==!l`&MH6pmPLE=GCJM7*v63$$8&5Y zJ1oq^x6v@hThh;tXj680rsQ%cbG)lVJ)^N=Iu<6Xn@9TgKgoobAPlC z)-P+k_ALjoIVuAV6?z3bsoO-D+0cmh%kVV`MSo003qF{{d>EKgL6eK~)gY$ubVGt3 zt}5k$$%Y3CGFsiwz~6Zkx4Gn`AFylOW{6LEJm|?aO7>`J?7G#S#u1h>EIO9=v5`m$ zpnKT4UhE^Y;nJPEPSJq30vyw1xqtSxwNS(-_fVv^9_*XF6NyfNLbB2B^_c4v=C-iI zGN{5ZY!^py!TGix$OI?Maptwzd{B##xzMIJ>~7!gZQWy-)jwSAg=)C!LQew2!<|}? zUPsWQD?GQQ81}RpK?vz2WjxMfH)`>U=Vs z6jV_{88)J{>ZDjm(SF>+Kiu?7LeQ1>->Xi{pHZ z0fAkhQFEN{W5;Qn0RCs-N^kosbzt_B^jces90C2?z{Pc2Q}%$%9bo9mkWINM`DqII zJn()--;@PHw?OZj+gocNrw>4yx=P*v2Zz9TfwI><-rdvL+rMX8{rv!bopP&Ak+A|$sef})Gr%b35dj$-i_A`jdY6yRP#D!8Au-U8 z99A*4lM9Y706Kf)2+?3`W1bKC5I>L4xDksn8rkD+`~g8j!}xWw**xQKPK0QG;8Ejd zZx5DjlgnlSNIhRfR=Oz{a-QpyU$=Bn`t}hi80B7n5+#4e>g*jJkEbxtPpRnzOhbEh z|Jg>qCBQO^1RE}&zaBAqOJj0u0bBo$SvsX!(Xs(WUcPjVU)G+Am7L1UWRZw^8(a&c zdXDSXCXz2U-?epJPiAHWz+rkedTBd7F?E=pUTga_-^`7Ocp@R%)%*W1EWEE%^SrBj Zrr&uuo2SWwf;9jD002ovPDHLkV1lLmcXaB^>EX>4U6ba`-PAZ2)IW&i+q+TB)LlI$i7 z{bv>$g}!3KKT({raMxmBr(sW!3@dL0Sc9Dn`U%^!G}Tr|#W3@HSQ z$0e6IgNXKe%K0Yi&iDMVi+JLjy})1zX1P8SPyPWuXqw+?8h@cBzZ7jt8I*r4(RFFsRxHVvK|lZMGF9 z&}>Dg70`(o*mrW&C{w57oGVqh==fm8%v=r2$&3IgaetLj3~mhStdgXmG+63YL&Dn^ zI?bljT%~B6v5g?g1Z9LR|9F^p1$!U8L}cU675w7S4e-Je;2#sjfC%-ORDULTjr%ij z6(H!(G)DxOZ84XM;^|Rbasn+7^q8;SBW+UwQUuc;&Y;g6*+Akcz$0Z=A|x^bpbXd1 zja+~Ld4JChPO=jT00-Rx+t{OYin8a6jZ;;eL9+%?V3Q;REayDxM_oh>WiQ@&?}Jw# zeeyX-7@Ze_hH*S+6?N)0sA@EtG)IXp`WT|d7*ouNli>LF34NMkN-1X;&Cr~&J3}Dn z!bOTJzJ#JBmSjqNkfCT(0{bWmRdgOKq(#W@JBfGh(|hdN2zt` zuKOOknjU-Vd80OA{WN}n8co#rL~01?Mh#rmrGmzB;s<6xj2!`R1!_PHg*`B{k(}d! z+`tU?5xT-Nob&^nMguV*=ni7vX=68$Gn{`9ZbsvY8~;_>@N+-+b9fjDRWeT^*(cC@Y zz7%f=c=?n4T3eVftz>guag^=tQl-`FEq{{Nvl;0~JGA8+Z-SRkwJjL7IbW7k^=A5l zCck?XHp?!ev-KDGX*Pbz1i#3T?*+_Z`L%gTYX;LAJ1vXfK3X*px*t)Bdlv|JV%hu?;paqVt>bKr)&ZNt6o({A)$jmQC6h7#jXXylP$Zd+yo)NKwb1pJe_9f_d5~+`emWleGmQ z3`Nlv5j&_jWT;MdsgvRbE`Li3En+=5?#H`(kGpq(P%ksh>WTrHZkwq@T+C!w#hzF6 zV+4bUA}BMk#B?aO@_lx6vi~~KpK%?e3-^Y&AI05|6z?I(eSL(p*C+W487Cr(7wtF*rIkFgh|gvs4Qa0h59YTqH0xVK`zrWHc>eIAS&}G%#XeEjTtXIW09X zHaR(EWo0xnVKb8g3`Y(zF)cDRR53U@H846dII~v_ZU`2%lnV#|000JJOGiWi0sv|N zApNa|A(Pt_9|;Q?5i%Tzm)kOv0~IKLj7da6R5;7Ule?7a;_OVQ|0SF${x3p@61o)M_>5n}RS5@qM3EDn%T}EEWrNT_=;t zpzAu8Wnr2or_+h~d@dV}hVnunr6iZj0Wg_N*zI;44hOQ?EX87xa=ApB3B$Af%6&+T?&xm*H&Fc=Kbbsg7riK6J&JDAO8GD#9NO(TjT#^W*ddYw+E z!})y1^E`atr`PMfT;Zvp*=#C75Dn delta 2369 zcmV-H3BLBOE!{1UBYy>mdQ@0+Qek%>aB^>EX>4U6ba`-PAZ2)IW&i+q+TB-MmgFW3 z{bvT72U&hDAiKJHrfRw;$xrNV12UE_x{{#G`0LMU{=nrNixD4F$RSu< zk|n!>PO|5!`$<;zQwR3yJju=d!a>An`3$pD`G6dK(s5QJbbrmi6y25zdj9dE6qVO! zc~yljeO9Chn2u%J^#fJJP7%o&H$@b3icd@HO)ZOx(&Jw^y5Ivv!Bd=#F=X_Uvl8LY zzJPMv=HVl?bP2BUHPr!=8%%8RWR`=H*S~PtZNb}YFp)T6z-Y^Qy&Z2sB_Kd?K8k0t zw=+Nb=Ha6k*MC=*WnpBFHTeT;j{td&kGn@N0e58BMp5|UOR#7Ct7eNQrdb*lnW*h~kEeXq{`u@fIeKlz(006%4X&nl5tYj?i%2P7JZT zvCuY~x4A~ic4IqXsv{^PeDd43`Rc?uS1u9Rbo&ap+{y-^umt*7gK1!draIMc2VeK+ zYw^lp&~G;VayAF^}m;=Z`cEC2iiL|FW?~WK%6{VIv2aez-a{*Z*9`O?;A%==)FW&p$ zqfb8j5;&~P3n7M8o=fB?(Z>*DOeW@75+_MMg%ndtIhE`(qkQ{}Jk2TRTnda9XfF7= zU_vR?RjyKf4K>zOv#F&ae3~@hLW?c6+)8(yJAV?qhaP+CxtBo$p)_Rp5k?$omFFV4W269VB8tbs8E_TtPY z5^;;U#ToV^WQBJC=@&Vj7Gq#g201_J=1!S2@Z!J1n~7=j=Kd*jW>NP==6>YuXRP(L zOMkS@*h$0XRLjV|=|^!1c<_m=PAY4o{nVOQFTUIU{}h4d)yZtcZcn1_9Z_)3Z%NKL z2YCG1FSX{Y6Ibh5>FX_zV>SeRX)J<&busOX~?u{EV{`zUO69-GwMmayv; zzk8B9imY}EPM!M;9BGbkOhQ6mfF&Kk5P$Te5Ie1J=QZ~3cd*P81x_jOHv$)@vLoEax2gaF@f=>raq>Su89*c~kccvB`ILcMIN#9=dk4a|JKyl=p5XocdI zL7e)5Mm5w}fi@iBgzqvC9?9SQjp?Pc%y+h&jVZgMwvAXN9tXjQaVx_o&ORqX-<=cQ zw&wer>&&7xccJqdl?I6rZXJ)=_od=pYkv2`|3(ph6q$~n+~#kpBnRiC)_Dz+v;-jx zr6LuP78Fs)P@U|eli>s|e`^XYVmvtR$GdxvyLW(4FEh>RiUFE#o2f)x%w$)^z$*lV zFo01E%FHt6Bq<5c@pTU$U+F=m)H@dokCrfqQECl0fstP-CS zPndK;;zzD4F28XuG+E%8VKbeYCk_*fg$`Cam=#Tpc$zq(YC7c$e;Jom&Rd+da+S62 z$zK@E=_|`zr#XTI7O?~gA{10nLK!xqwCbc-NYQ@W!#~{gOXO0>RRSZ&0xHlTH~rv$ z@Vi?pKQ-wl1>->Xi{pHZ0fAkhQFEN{W5;Qn0RCs-N^kosbzt_B^jces90C2?z{Pc2 zQ}%$%9bo9mkWINMJNan}`8@D`M&FbLLbpKgn%i4zAEysMnz~Bf00)P_c!9FlJ>K2Z z+1tNoTK)Y1ew}iwjbVrv000emvq%Pt0wiT+GG#F}H8d?UI5%P~G+|;hEn;F~Wi2pc zH(@a`H8f#2VPuo`2&N7&I5RdgI5;#oH#synH>qF+bRh*1KL`{TVnh@&D*2dkI!-b%r;E^(A#F)F z^(^nX@5^)UdoJ8}slPSlYeCw#6zW+@{gZ*@cLc5ZX#jxdpq_uHeVU+8v|AARB2cM- zZT}KF4tPz7$No$p+lOu3U=S<|PKvm-8WA1BtKZQ-I0z4upfzfGQgsv9Rj7W4kOKFP z&HNVOXq{LzitbO4e42)M97+cAWkb~5OXW8ZU~Cjb*#5N6=YdGRC@$4J88nh-kF;1jX zWHXZ?m3;-qC6p~1rb+mH&X+=mKxG$I%QV5VI662a7YLA=U50WQ3kB+g5{_bqY7 zV6muCx8%ef|NYzDKlm`E;Jn5ZatIqfKKslCowQw_{k+rW&-;AXtn*@bYk*-Av~oRW zp7sNF^l3il>4a>)ZL~ZU^z<=M%CzsV_I+;1>AulKAar@&+FUR<5}t^E{PkQXqL5R3 zIa;gJv!AB)_hi_8ymu8KWnU8CTlMRw045Rb<+ZekKO@ojf%v)af|eN)-@29~{v# zSI2T16G+NjWr)F#i#kWi(jX0%dTB^_VWHD)KHXJHTXS0@Ol879i|MySuA>KS0W?w`S{fI&UOoN&Oh?e5xQS9*v`PND@9744OK z6x-YYA%bfK8049!Es!V$Ad1Y92!Tu>r~o>$k#{gas@wpQy+{B#$PW0%nn>qVR=&)r zs^T5eG)M$DSqjL1@?N2z=o2(lRMe|#(5OkXmLOqdUI;Oa@?4@sA2o&;V{$Rak|g=0 zDWsTE%Bf_|g7U2yd74wsxfD1p*tuYJ!GuzF-evc@?qQF6+OykBg?y^7T0@OB)m%&C zCJhPRLW?c6+{!@*q;&X0k8s2z9r-97QtQ%v*B*LwJ@wpw%VKTP`gZ*SYcyHolc_N= zF4ka;(YBybPIPbv#@G`Gk6;aqLD++{Es^&;m>ZnoeT1w~21p&`G#ZS7L4Ocyr^Vf5 z&T;uWyt$Z8-uO?MbA!4cGWX8gSFE-1mZ&FVR~n9>Zi4K?_>l^yGG4DATleKa-@SE1 zBd_CSca+nAw8_DJcDJY2-3`Cny30vz(?)&x*YU=^S_umZr$(Oyv&+iFzE>3AW~JA!mq;~wp3X=)5vOz!G`by~*0j!s*^({bc?(I;jY?gJ%b~OLI-^pOU4>_uSd0CK56DxFKK`AyC^2<6m7A|=% zN2nL+q26G_?Up8#E%4FhZpO5P<}L7LnQRMc3&;|9$jt<)CYnd`+A(`xLO^jT9|}@v zZf<{nL<>jURxfvhb|hmmmbUQflla`L3|B|P3X%HvoF@a`Oux=>XX`9KG1Cf6ctEqT zX*CMUFt`^frt(Ohn*d@h@>Upv>Dr64UVD>HFg&#`JlRH9zNQ&(_c)5`Qfs@(rE|HN z9z&|n?a!B1dJJwP4jaDMou! zW2Hq4gIMujrzd?YW&WY1^4)vIy@{L;p8q;u1;P)un*Ja@ zqjet!p0a!$89zi8u3T=l)@{DuHP-P9>ieG`x7PjYg1@v8en;UCvHKsPZR;W9T^q)e zzXl-;MbV0g9aJ1L)J}G(lk5gA1xpGoVm*@|2O58#SM*~PLx>_QGs~Ehq$E0yuY36T zdKckYozML_2GpFz0G~)4V}@xHZxGLH+6L!+;vg%^D)Bk-q)8Vfe&o91@f+uY%L2~~ zn(5R$agbOnw6W60tY~V))5IZF(`&;aU`&aB}fpV zpo)JI%CHfkRVT$liuU6j{9~?PB9}t05*RraP=N;7^@IPx?{2O9RMblf#DVS?$N885 zdUku_@99*z2&def!R;eYb`Bw1PpEi7uPLK*#jVlp%>G%;d1En#J3F)d;+F*s#2I5ILcF_Z2MNDVPDEiyG! zF*rIkFgi7}Lk@2U7Ma-uWB>pF24YJ`L;wN+Y5*Ypt%f0!$QB<73mFkIHOeJJUX$<^ zD1RkML_t(I%dL~UN-RMXMOQt#b(|3t8x%7^BNORdP%t(SG|=zxm;4eLFt9KX^aC`Q zaYU!vn(pdHm4QrOD$!bh ze}XY4XswY_;=Skn{hch!h@yzPuJPW}Gz|d#exKFVRkYTmX)1&Ifru&ZLKAQKv5JZrKszgq9`!N(ChW+^?F26#DB)d z25}s-yu6H*l046;>l(ekzb}TvVOU>Z2VgRpaD9Ev^Yb&~@tBpB6*f0FNs+37i>6EIfI6giWdfxSU z1EVNncXtDZ*OySbc9lhkB<-X zJZCnWQI;h_2u@B;L}#R;C;({N7Vka7;gFr39on|VIY(KRSZgWE67M}{XJ_A?czSv& z%Cf{c$J5gj9v&W0N--LZm_AGe8BdI!Dyz8GP@ydpOn{yKMnQX|wvoA$`zP1NOy3-jr&u1z@CmP;)i(l`<*3z&4 z;LFt(ycL6q&NCi71`CG$1-u27PyvEv3!cT^V7_AWVD!!PlVe$IGRKkD&9y-}}((&fM;uKa7_P!RIosbkEs&UWdjhN=U#W z>7mY1t{&#qh2pg;;m$T0SS_QoZo$pA*aj2mw!zaX`r-)OPZwNw#Z5P^wz&os0}aY( ziJBpQ4Khd)YJM3*Sht&$z4#8(Am6qPdAfCR*S2zP*Bsk!Y%IB0LA}>HNP;=05ZG6>EKEiFPrz-Ee_wJ-iR^2N&Y9((AXa`SQiA z$QP?Ssm+ytM_j-kBd)DBdJ2r=-bK^Ys$}B^D^K^D_c&3OlDQbJ4sug9$NVBa3*hcEKYN&iZV`>Mgcb+ z_w_oCBFIuY^}Tg7m1y?7;Ks0Zucuo>#mkO*hA3Zuox-hc4X_={T4!S9rpg2<+^>m9 zGpcC|v7WVda#Jc|m~W>un<}*l;+dQ5$tl>eMIevuq3T3*PuD}r``8wH`hB#}TH`$z zhN!DB?hc*z$;MurkULAfM8Y`<#S@t|VHxTNrQdYq{m@#!O(lhmXez-fMkwBj;+978 zyDKt(5SvCbi*66 z(1b__>rs&qFt*|mIWWpLP~paP1C)cSLYDv&P)VqEE+mzZu)bskA(Kl=WTF(#**h#l zttNr$&05Sg-~lG;)shK3v!1^u|F{ty;79j=ZER2kaniJ;ZYqAb*5oX>ovM@iU-qM8 z`4+^emeP)Q6+yatqv$t;bnPy)+owW^KYnAOa98DVk|Z;UDjx;zr3U%<;dT)unvu2* z!}JDJjT@TLW!jQucJZ`x%7DBf<&Vmp-fy!=?VyR+kF(fMR2!86zeLJs!{!a z2FlFaI*>N}R)O`Ea`C#azjHbs-N7Ot0zVP?DiP2hK^;dF96ejiEzh( zpg|mJ4IRGzeKqo_I@$3A=3?8da6iR^8_Ja}(e$#y$0``Kcvv+J?E~{;d1|oXiMA(u zqJCNh+|mdY(B$x2CBrMwm39$F=m)H@dokC zrfqQECl0fstP-CSPndK;;zzD4F28XuG+E%8VKbeYCk_*fg$`Cam=#Tpc$zq(YC7c$ z8JAVgTb#9Wm9_54Ul`2kE6ZG`If4Whu>=Vs6jV`vLK!xqwCbc-NYQ@W!#~{gOXO0> zRRSZ&0xHlTH~rv$@Vi?pKQ-wl1>->Xi{pHZ0fAkhQFEN{W5;Qn0RCs-N^kosbzt_B z^jces90C2?z{Pc2Q}%$%9bo9mkWINM`DqIIJn()--;@PHw?OZj+gocNrw>4yx=P*v z2Zz8Mc!9FlJ>K2Z+1tNoTK)Y1ew}iwjbVrv000hKv(5&J0wiWNVKz5oF*Pk>WHUG| zG-YFEEn#9gW-T#cIWu8qI5jb4GBlHX38oG(I5RdgI5IOhH8eLcHO4MA_>BlTH>WeEv zC&0kOn3zZ$8AeWYzzYyBBL`|sjM13`NgNml#tG3^aAFfD8gCdA10r7V-u9Hz_VnCJ z58J_p8X_`sPxfH_-^%{izqYW$QI8)ek_0RZIdV$2)5t&JM|Txg21KCU2Gi7qeHt5h8}AFjN+7Yo_aRAilWfmc3#u@y zNTsy6Z9=IGB^S~TM6tFI$C}vF2ZIA(Tgb$eh$_q~Vo!@w-Jle#*5Jb@yn2IOX$QkF zz_OrcH}qyu?`j5bop_Uoc)!f>8_ zxjv#OWNz*?07oZ}VULZ1=0.15.11", - "minecraft": "~1.21.1", + "fabricloader": ">=0.16.9", + "minecraft": "~1.21.3", "java": ">=21", "fabric-api": "*" }, "suggests": { - "flamingo": "*" + "another-mod": "*" } } diff --git a/src/main/resources/quickiemod.mixins.json b/src/main/resources/quickiemod.mixins.json deleted file mode 100644 index f2859fb..0000000 --- a/src/main/resources/quickiemod.mixins.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "required": true, - "minVersion": "0.8", - "package": "de.jottyfan.quickiemod.mixin", - "compatibilityLevel": "JAVA_21", - "mixins": [ - "BlockBreakMixin" - ], - "client": [ - ], - "injectors": { - "defaultRequire": 1 - } -} \ No newline at end of file