diff --git a/src/main/generated/assets/acesbs/blockstates/tobacco_crop.json b/src/main/generated/assets/acesbs/blockstates/tobacco_crop.json new file mode 100644 index 0000000..333c6fa --- /dev/null +++ b/src/main/generated/assets/acesbs/blockstates/tobacco_crop.json @@ -0,0 +1,25 @@ +{ + "variants": { + "age=0": { + "model": "acesbs:block/tobacco_crop_stage0" + }, + "age=1": { + "model": "acesbs:block/tobacco_crop_stage1" + }, + "age=2": { + "model": "acesbs:block/tobacco_crop_stage2" + }, + "age=3": { + "model": "acesbs:block/tobacco_crop_stage3" + }, + "age=4": { + "model": "acesbs:block/tobacco_crop_stage4" + }, + "age=5": { + "model": "acesbs:block/tobacco_crop_stage5" + }, + "age=6": { + "model": "acesbs:block/tobacco_crop_stage6" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage0.json b/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage0.json new file mode 100644 index 0000000..c55a6a2 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage0.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/crop", + "textures": { + "crop": "acesbs:block/tobacco_crop_stage0" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage1.json b/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage1.json new file mode 100644 index 0000000..7166832 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage1.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/crop", + "textures": { + "crop": "acesbs:block/tobacco_crop_stage1" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage2.json b/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage2.json new file mode 100644 index 0000000..b2c77ba --- /dev/null +++ b/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage2.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/crop", + "textures": { + "crop": "acesbs:block/tobacco_crop_stage2" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage3.json b/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage3.json new file mode 100644 index 0000000..c529ff1 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage3.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/crop", + "textures": { + "crop": "acesbs:block/tobacco_crop_stage3" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage4.json b/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage4.json new file mode 100644 index 0000000..5f0837c --- /dev/null +++ b/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage4.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/crop", + "textures": { + "crop": "acesbs:block/tobacco_crop_stage4" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage5.json b/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage5.json new file mode 100644 index 0000000..d1eda35 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage5.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/crop", + "textures": { + "crop": "acesbs:block/tobacco_crop_stage5" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage6.json b/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage6.json new file mode 100644 index 0000000..14e45e1 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/block/tobacco_crop_stage6.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/crop", + "textures": { + "crop": "acesbs:block/tobacco_crop_stage6" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/tobacco_seeds.json b/src/main/generated/assets/acesbs/models/item/tobacco_seeds.json new file mode 100644 index 0000000..b8b4d06 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/tobacco_seeds.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/tobacco_seeds" + } +} \ No newline at end of file diff --git a/src/main/generated/data/acesbs/enchantment/lightning_strike.json b/src/main/generated/data/acesbs/enchantment/lightning_strike.json index b6ba691..9dfaf1e 100644 --- a/src/main/generated/data/acesbs/enchantment/lightning_strike.json +++ b/src/main/generated/data/acesbs/enchantment/lightning_strike.json @@ -4,13 +4,11 @@ "translate": "enchantment.acesbs.lightning_strike" }, "effects": { - "minecraft:post_attack": [ + "minecraft:projectile_spawned": [ { - "affected": "victim", "effect": { "type": "acesbs:lighting_strike" - }, - "enchanted": "attacker" + } } ] }, @@ -23,10 +21,9 @@ "base": 5, "per_level_above_first": 7 }, - "primary_items": "#minecraft:enchantable/bow", "slots": [ "mainhand" ], - "supported_items": "#minecraft:enchantable/weapon", + "supported_items": "#minecraft:enchantable/bow", "weight": 5 } \ No newline at end of file diff --git a/src/main/generated/data/acesbs/loot_table/blocks/tobacco_crop.json b/src/main/generated/data/acesbs/loot_table/blocks/tobacco_crop.json new file mode 100644 index 0000000..ff09d43 --- /dev/null +++ b/src/main/generated/data/acesbs/loot_table/blocks/tobacco_crop.json @@ -0,0 +1,68 @@ +{ + "type": "minecraft:block", + "functions": [ + { + "function": "minecraft:explosion_decay" + } + ], + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "block": "acesbs:tobacco_crop", + "condition": "minecraft:block_state_property", + "properties": { + "age": "6" + } + } + ], + "name": "acesbs:lemon" + }, + { + "type": "minecraft:item", + "name": "acesbs:tobacco_seeds" + } + ] + } + ], + "rolls": 1.0 + }, + { + "bonus_rolls": 0.0, + "conditions": [ + { + "block": "acesbs:tobacco_crop", + "condition": "minecraft:block_state_property", + "properties": { + "age": "6" + } + } + ], + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "enchantment": "minecraft:fortune", + "formula": "minecraft:binomial_with_bonus_count", + "function": "minecraft:apply_bonus", + "parameters": { + "extra": 3, + "probability": 0.5714286 + } + } + ], + "name": "acesbs:tobacco_seeds" + } + ], + "rolls": 1.0 + } + ] +} \ No newline at end of file diff --git a/src/main/java/com/acethewildfire/acesbs/AcesBS.java b/src/main/java/com/acethewildfire/acesbs/AcesBS.java index e0c86ae..95dc62f 100644 --- a/src/main/java/com/acethewildfire/acesbs/AcesBS.java +++ b/src/main/java/com/acethewildfire/acesbs/AcesBS.java @@ -15,6 +15,7 @@ import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.event.player.AttackEntityCallback; import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents; +import net.fabricmc.fabric.api.registry.CompostingChanceRegistry; import net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistryBuilder; import net.fabricmc.fabric.api.renderer.v1.Renderer; import net.minecraft.item.Items; @@ -56,5 +57,8 @@ public class AcesBS implements ModInitializer { builder.registerPotionRecipe(Potions.AWKWARD, ModItems.LEMON, ModPotions.LEMON); builder.registerPotionRecipe(Potions.AWKWARD, Items.SAND, ModPotions.BLINDNESS); }); + +// CompostingChanceRegistry.INSTANCE.add(ModItems.TOBACCO); + CompostingChanceRegistry.INSTANCE.add(ModItems.TOBACCO_SEEDS, 0.5f); } } \ No newline at end of file diff --git a/src/main/java/com/acethewildfire/acesbs/TODO.txt b/src/main/java/com/acethewildfire/acesbs/TODO.txt index 2a39f46..9180ce3 100644 --- a/src/main/java/com/acethewildfire/acesbs/TODO.txt +++ b/src/main/java/com/acethewildfire/acesbs/TODO.txt @@ -19,6 +19,7 @@ Food - Infernal Beef (Mob/Ashes + Cooked Beef) - Hyper Stimulants (Hyper Sugar) - Narcan (Stimulants + Entropic Eviscerator) +- Tobacco Crop - Tobacco diff --git a/src/main/java/com/acethewildfire/acesbs/block/ModBlocks.java b/src/main/java/com/acethewildfire/acesbs/block/ModBlocks.java index eebd487..2e6016b 100644 --- a/src/main/java/com/acethewildfire/acesbs/block/ModBlocks.java +++ b/src/main/java/com/acethewildfire/acesbs/block/ModBlocks.java @@ -4,9 +4,11 @@ import com.acethewildfire.acesbs.AcesBS; import com.acethewildfire.acesbs.block.custom.EntropyBlock; import com.acethewildfire.acesbs.block.custom.EvilBlock; import com.acethewildfire.acesbs.block.custom.StableEntropyBlock; +import com.acethewildfire.acesbs.block.custom.TobaccoCrop; import com.acethewildfire.acesbs.sounds.ModSounds; import net.minecraft.block.*; import net.minecraft.block.enums.NoteBlockInstrument; +import net.minecraft.block.piston.PistonBehavior; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; @@ -194,6 +196,20 @@ public class ModBlocks { ) ); + public static final Block TOBACCO_CROP = registerBlockWithoutItem("tobacco_crop", new TobaccoCrop( + AbstractBlock.Settings.create() + .mapColor(MapColor.DARK_GREEN) + .noCollision() + .ticksRandomly() + .breakInstantly() + .sounds(BlockSoundGroup.CROP) + .pistonBehavior(PistonBehavior.DESTROY) + )); + + private static Block registerBlockWithoutItem(String name, Block block){ + return Registry.register(Registries.BLOCK, Identifier.of(AcesBS.MOD_ID, name), block); + } + private static Block registerBlock(String name, Block block){ registerBlockItem(name, block); return Registry.register(Registries.BLOCK, Identifier.of(AcesBS.MOD_ID, name), block); diff --git a/src/main/java/com/acethewildfire/acesbs/block/custom/TobaccoCrop.java b/src/main/java/com/acethewildfire/acesbs/block/custom/TobaccoCrop.java new file mode 100644 index 0000000..1a8f79e --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/block/custom/TobaccoCrop.java @@ -0,0 +1,39 @@ +package com.acethewildfire.acesbs.block.custom; + +import com.acethewildfire.acesbs.item.ModItems; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.CropBlock; +import net.minecraft.item.ItemConvertible; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.IntProperty; + +public class TobaccoCrop extends CropBlock { + + public static final int MAX_AGE = 6; + public static final IntProperty AGE = IntProperty.of("age", 0, 6); + + public TobaccoCrop(Settings settings) { + super(settings); + } + + @Override + protected ItemConvertible getSeedsItem() { + return ModItems.TOBACCO_SEEDS; + } + + @Override + public IntProperty getAgeProperty() { + return AGE; + } + + @Override + public int getMaxAge() { + return MAX_AGE; + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(AGE); + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModLootTableProvider.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModLootTableProvider.java index 54fed9a..c3591ce 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModLootTableProvider.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModLootTableProvider.java @@ -2,6 +2,7 @@ package com.acethewildfire.acesbs.datagen; import com.acethewildfire.acesbs.AcesBS; import com.acethewildfire.acesbs.block.ModBlocks; +import com.acethewildfire.acesbs.block.custom.TobaccoCrop; import com.acethewildfire.acesbs.item.ModItems; import com.acethewildfire.acesbs.util.ModTags; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; @@ -17,6 +18,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.loot.LootPool; import net.minecraft.loot.LootTable; +import net.minecraft.loot.condition.BlockStatePropertyLootCondition; import net.minecraft.loot.condition.InvertedLootCondition; import net.minecraft.loot.condition.LootCondition; import net.minecraft.loot.condition.MatchToolLootCondition; @@ -28,6 +30,7 @@ import net.minecraft.loot.function.SetCountLootFunction; import net.minecraft.loot.provider.number.ConstantLootNumberProvider; import net.minecraft.loot.provider.number.UniformLootNumberProvider; import net.minecraft.predicate.NumberRange; +import net.minecraft.predicate.StatePredicate; import net.minecraft.predicate.item.EnchantmentPredicate; import net.minecraft.predicate.item.EnchantmentsPredicate; import net.minecraft.predicate.item.ItemPredicate; @@ -67,6 +70,10 @@ public class ModLootTableProvider extends FabricBlockLootTableProvider { addDrop(ModBlocks.LEMONWOOD_TRAPDOOR); addDrop(ModBlocks.ENTROPY_ORE, prismaSteelOreDrops(ModBlocks.ENTROPY_ORE, ModItems.RAW_ENTROPY, 1, 3)); + + BlockStatePropertyLootCondition.Builder builder2 = BlockStatePropertyLootCondition.builder(ModBlocks.TOBACCO_CROP) + .properties(StatePredicate.Builder.create().exactMatch(TobaccoCrop.AGE, TobaccoCrop.MAX_AGE)); + this.addDrop(ModBlocks.TOBACCO_CROP, this.cropDrops(ModBlocks.TOBACCO_CROP, ModItems.LEMON, ModItems.TOBACCO_SEEDS, builder2)); } public LootTable.Builder multipleOreDrops(Block drop, Item item, float minDrops, float maxDrops) { diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java index fcfc6dc..5fa303f 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java @@ -2,6 +2,7 @@ package com.acethewildfire.acesbs.datagen; import com.acethewildfire.acesbs.block.ModBlocks; import com.acethewildfire.acesbs.block.custom.EvilBlock; +import com.acethewildfire.acesbs.block.custom.TobaccoCrop; import com.acethewildfire.acesbs.item.ModItems; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricModelProvider; @@ -47,6 +48,7 @@ public class ModModelProvider extends FabricModelProvider { blockStateModelGenerator.blockStateCollector.accept(VariantsBlockStateSupplier.create(ModBlocks.EVIL_BLOCK) .coordinate(BlockStateModelGenerator.createBooleanModelMap(EvilBlock.CLICKED, lampOnIdentifier, lampOffIdentifier))); + blockStateModelGenerator.registerCrop(ModBlocks.TOBACCO_CROP, TobaccoCrop.AGE, 0,1,2,3,4,5,6); } @Override diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java b/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java index 62d9940..9cc1b4d 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java @@ -27,6 +27,7 @@ public class ModItemGroups { entries.add(ModItems.PRISMA_STEEL); entries.add(ModItems.PRISMA_SMITHING_TEMPLATE); entries.add(ModItems.CRAB_RAVE_MUSIC_DISC); + entries.add(ModItems.TOBACCO_SEEDS); }) .build()); diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModItems.java b/src/main/java/com/acethewildfire/acesbs/item/ModItems.java index 64f43ac..92460c1 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModItems.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModItems.java @@ -1,6 +1,7 @@ package com.acethewildfire.acesbs.item; import com.acethewildfire.acesbs.AcesBS; +import com.acethewildfire.acesbs.block.ModBlocks; import com.acethewildfire.acesbs.item.custom.HammerItem; import com.acethewildfire.acesbs.item.custom.ModArmorItem; import com.acethewildfire.acesbs.item.custom.OracleLemon; @@ -144,7 +145,7 @@ public class ModItems { } ); - + public static final Item TOBACCO_SEEDS = registerItem("tobacco_seeds", new AliasedBlockItem(ModBlocks.TOBACCO_CROP, new Item.Settings())); private static Item registerItem(String name, Item item){ return Registry.register(Registries.ITEM, Identifier.of(AcesBS.MOD_ID, name), item); diff --git a/src/main/resources/assets/acesbs/lang/en_us.json b/src/main/resources/assets/acesbs/lang/en_us.json index f1ca7d8..e4a8355 100644 --- a/src/main/resources/assets/acesbs/lang/en_us.json +++ b/src/main/resources/assets/acesbs/lang/en_us.json @@ -40,6 +40,8 @@ "item.acesbs.crab_rave_music_disc": "Crab Rave Music Disc", "item.acesbs.crab_rave_music_disc.desc": "Noisestorm - Crab Rave [Monstercat Release]", + "item.acesbs.tobacco_seeds": "Tobacco Seeds", + "painting.acesbs.herald.title": "Herald's Banner", "painting.acesbs.herald.author": "AceTheWildfire", @@ -74,6 +76,8 @@ "block.acesbs.evil_block": "Evil Block", + "block.acesbs.tobacco_crop": "Tobacco Crop", + "itemgroup.acesbs.items": "Ace's BS Items", "itemgroup.acesbs.blocks": "Ace's BS Blocks", "itemgroup.acesbs.combat": "Ace's BS Combat", diff --git a/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage0.png b/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage0.png new file mode 100644 index 0000000..acc7125 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage0.png differ diff --git a/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage1.png b/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage1.png new file mode 100644 index 0000000..feb5526 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage1.png differ diff --git a/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage2.png b/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage2.png new file mode 100644 index 0000000..0199a98 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage2.png differ diff --git a/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage3.png b/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage3.png new file mode 100644 index 0000000..2567782 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage3.png differ diff --git a/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage4.png b/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage4.png new file mode 100644 index 0000000..7fc4aeb Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage4.png differ diff --git a/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage5.png b/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage5.png new file mode 100644 index 0000000..899add3 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage5.png differ diff --git a/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage6.png b/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage6.png new file mode 100644 index 0000000..0ef5d73 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/block/tobacco_crop_stage6.png differ diff --git a/src/main/resources/assets/acesbs/textures/item/tobacco_seeds.png b/src/main/resources/assets/acesbs/textures/item/tobacco_seeds.png new file mode 100644 index 0000000..4071e6d Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/item/tobacco_seeds.png differ