diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/GamblingPlusMod.java b/src/main/java/com/ismailkaygisiz/gamblingplus/GamblingPlusMod.java index 93bd40d..09c5268 100644 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/GamblingPlusMod.java +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/GamblingPlusMod.java @@ -2,6 +2,7 @@ package com.ismailkaygisiz.gamblingplus; import com.ismailkaygisiz.gamblingplus.block.ModBlocks; import com.ismailkaygisiz.gamblingplus.util.ModCreativeTabs; +import com.ismailkaygisiz.gamblingplus.villager.ModVillagers; import com.mojang.logging.LogUtils; import com.ismailkaygisiz.gamblingplus.item.ModItems; //import com.ismailkaygisiz.gamblingplus.villager.ModVillagers; @@ -31,9 +32,8 @@ public final class GamblingPlusMod { FMLCommonSetupEvent.getBus(modBusGroup).addListener(this::commonSetup); ModBlocks.register(modBusGroup); - //ModBlocks.registerBlockItems(modBusGroup); ModItems.register(modBusGroup); - //ModVillagers.register(modBusGroup); + ModVillagers.register(modBusGroup); ModCreativeTabs.register(modBusGroup); // Register the item to a creative tab @@ -55,6 +55,10 @@ public final class GamblingPlusMod { if(event.getTabKey() == CreativeModeTabs.BUILDING_BLOCKS){ event.accept(ModBlocks.RUBY_BLOCK); event.accept(ModBlocks.RAW_RUBY_BLOCK); + event.accept(ModBlocks.RUBY_ORE); + event.accept(ModBlocks.RAW_DEEPSLATE_ORE); + event.accept(ModItems.CATCHING_EGG); + } } diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/block/ModBlocks.java b/src/main/java/com/ismailkaygisiz/gamblingplus/block/ModBlocks.java index 9c6ff9a..c4532a9 100644 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/block/ModBlocks.java +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/block/ModBlocks.java @@ -5,11 +5,13 @@ import com.ismailkaygisiz.gamblingplus.item.ModItems; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.DropExperienceBlock; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.material.MapColor; @@ -23,13 +25,31 @@ import java.util.function.Supplier; public class ModBlocks { public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, GamblingPlusMod.MOD_ID); - public static final RegistryObject RUBY_BLOCK = registerBlock("ruby_block", ()-> new Block(BlockBehaviour.Properties.of() - .setId((ResourceKey.create(Registries.BLOCK, ResourceLocation.parse(String.format("%s:%s", GamblingPlusMod.MOD_ID, "ruby_block"))))) - .strength(.1f).requiresCorrectToolForDrops().sound(SoundType.IRON))); + public static final RegistryObject RUBY_BLOCK = registerBlock("ruby_block", + ()-> new Block(BlockBehaviour.Properties.of() + .setId((ResourceKey.create(Registries.BLOCK, ResourceLocation.parse(String.format("%s:%s", GamblingPlusMod.MOD_ID, "ruby_block"))))) + .strength(.1f) + .requiresCorrectToolForDrops() + .sound(SoundType.IRON))); - public static final RegistryObject RAW_RUBY_BLOCK = registerBlock("raw_ruby_block", ()-> new Block(BlockBehaviour.Properties.of() - .setId((ResourceKey.create(Registries.BLOCK, ResourceLocation.parse(String.format("%s:%s", GamblingPlusMod.MOD_ID, "raw_ruby_block"))))) - .strength(.1f).requiresCorrectToolForDrops())); + public static final RegistryObject RAW_RUBY_BLOCK = registerBlock("raw_ruby_block", + ()-> new Block(BlockBehaviour.Properties.of() + .setId((ResourceKey.create(Registries.BLOCK, ResourceLocation.parse(String.format("%s:%s", GamblingPlusMod.MOD_ID, "raw_ruby_block"))))) + .strength(.1f) + .requiresCorrectToolForDrops())); + + public static final RegistryObject RUBY_ORE = registerBlock("ruby_ore", + ()-> new DropExperienceBlock(UniformInt.of(2,4),BlockBehaviour.Properties.of() + .setId((ResourceKey.create(Registries.BLOCK, ResourceLocation.parse(String.format("%s:%s", GamblingPlusMod.MOD_ID, "ruby_ore"))))) + .strength(.4f) + .requiresCorrectToolForDrops())); + + public static final RegistryObject RAW_DEEPSLATE_ORE = registerBlock("ruby_deepslate_ore", + ()-> new DropExperienceBlock(UniformInt.of(3,6),BlockBehaviour.Properties.of() + .setId((ResourceKey.create(Registries.BLOCK, ResourceLocation.parse(String.format("%s:%s", GamblingPlusMod.MOD_ID, "ruby_deepslate_ore"))))) + .strength(.4f) + .requiresCorrectToolForDrops() + .sound(SoundType.DEEPSLATE))); public static void registerBlockItem(String name, RegistryObject block){ ModItems.ITEMS.register(name,()-> new BlockItem(block.get(), new Item.Properties() diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/DataGenerators.java b/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/DataGenerators.java new file mode 100644 index 0000000..291f7c1 --- /dev/null +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/DataGenerators.java @@ -0,0 +1,4 @@ +package com.ismailkaygisiz.gamblingplus.datagen; + +public class DataGenerators { +} diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModBlockLootTableProvider.java b/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModBlockLootTableProvider.java new file mode 100644 index 0000000..d1ccbab --- /dev/null +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModBlockLootTableProvider.java @@ -0,0 +1,4 @@ +package com.ismailkaygisiz.gamblingplus.datagen; + +public class ModBlockLootTableProvider { +} diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModBlockStateProvider.java b/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModBlockStateProvider.java new file mode 100644 index 0000000..d1033a4 --- /dev/null +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModBlockStateProvider.java @@ -0,0 +1,4 @@ +package com.ismailkaygisiz.gamblingplus.datagen; + +public class ModBlockStateProvider { +} diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModBlockTagProvider.java b/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModBlockTagProvider.java new file mode 100644 index 0000000..c4157b5 --- /dev/null +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModBlockTagProvider.java @@ -0,0 +1,4 @@ +package com.ismailkaygisiz.gamblingplus.datagen; + +public class ModBlockTagProvider { +} diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModItemModelProvider.java b/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModItemModelProvider.java new file mode 100644 index 0000000..dece7d2 --- /dev/null +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModItemModelProvider.java @@ -0,0 +1,4 @@ +package com.ismailkaygisiz.gamblingplus.datagen; + +public class ModItemModelProvider { +} diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModRecipeProvider.java b/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModRecipeProvider.java new file mode 100644 index 0000000..b3a09a8 --- /dev/null +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModRecipeProvider.java @@ -0,0 +1,4 @@ +package com.ismailkaygisiz.gamblingplus.datagen; + +public class ModRecipeProvider { +} diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/event/ModEvents.java b/src/main/java/com/ismailkaygisiz/gamblingplus/event/ModEvents.java new file mode 100644 index 0000000..5aac34c --- /dev/null +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/event/ModEvents.java @@ -0,0 +1,142 @@ +package com.ismailkaygisiz.gamblingplus.event; + + +import com.ismailkaygisiz.gamblingplus.GamblingPlusMod; +import com.ismailkaygisiz.gamblingplus.item.ModItems; +import com.ismailkaygisiz.gamblingplus.villager.ModVillagers; +import net.minecraft.core.Holder; +import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.alchemy.PotionBrewing; +import net.minecraft.world.item.alchemy.Potions; +import net.minecraft.world.item.enchantment.EnchantedItemInUse; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.EnchantmentInstance; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.item.trading.ItemCost; +import net.minecraft.world.item.trading.MerchantOffer; +import net.minecraft.world.level.Level; +import net.minecraftforge.event.village.VillagerTradesEvent; +import net.minecraftforge.event.village.WandererTradesEvent; +import net.minecraftforge.eventbus.api.listener.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.*; + +import static net.minecraft.core.component.predicates.DataComponentPredicates.ENCHANTMENTS; + +@Mod.EventBusSubscriber(modid = GamblingPlusMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE) +public class ModEvents { + + + @SubscribeEvent + public static void addCustomTrades(VillagerTradesEvent event) { + if(event.getType() == ModVillagers.RUBY_WORKER.getKey()) { + var trades = event.getTrades(); + + trades.get(1).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.COPPER_INGOT, pRandom.nextInt(3,6)), + new ItemStack(ModItems.RUBY.get(), 1), 12, 1, 0.05f)); + + trades.get(1).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(ModItems.RUBY.get(), pRandom.nextInt(3,8)), + new ItemStack(Items.EMERALD, 1), 12, 1, 0.05f)); + + trades.get(2).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD, pRandom.nextInt(1,4)), + new ItemStack(Items.AMETHYST_SHARD, 2), 12, 3, 0.05f)); + + trades.get(3).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD, pRandom.nextInt(5,11)), + new ItemStack(Items.BLAZE_POWDER, 1), 6, 5, 0.05f)); + + trades.get(3).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD, pRandom.nextInt(2,5)), + new ItemStack(Items.FIREWORK_ROCKET, pRandom.nextInt(2,5)), 12, 5, 0.05f)); + + trades.get(4).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD, pRandom.nextInt(30,46)), + new ItemStack(Items.SHULKER_BOX, 1), 4, 12, 0.05f)); + + trades.get(4).add((pTrader, pRandom) -> { + List> valuableEnchantments = List.of( + Enchantments.FORTUNE.getOrThrow(pTrader), + Enchantments.EFFICIENCY.getOrThrow(pTrader), + Enchantments.POWER.getOrThrow(pTrader), + Enchantments.SHARPNESS.getOrThrow(pTrader), + Enchantments.UNBREAKING.getOrThrow(pTrader), + Enchantments.MENDING.getOrThrow(pTrader), + Enchantments.LOOTING.getOrThrow(pTrader), + Enchantments.PROTECTION.getOrThrow(pTrader), + Enchantments.THORNS.getOrThrow(pTrader), + Enchantments.RESPIRATION.getOrThrow(pTrader), + Enchantments.FLAME.getOrThrow(pTrader), + Enchantments.SMITE.getOrThrow(pTrader), + Enchantments.INFINITY.getOrThrow(pTrader) + ); + + Holder selected = valuableEnchantments.get(pRandom.nextInt(valuableEnchantments.size())); + + ItemStack book = Items.BOOK.getDefaultInstance(); + book.enchant(selected, + selected.get().getMaxLevel() >= 4 ? + pRandom.nextInt(selected.get().getMaxLevel()-1, selected.get().getMaxLevel()+1): + selected.get().getMaxLevel()); + + return new MerchantOffer( + new ItemCost(Items.EMERALD, pRandom.nextInt(40, 65)), + Optional.of(new ItemCost(Items.BOOK, 1)), + book, + 6, 32, 0.05f + ); + }); + + trades.get(5).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD, pRandom.nextInt(45,65)), + Optional.of(new ItemCost(Items.EGG, pRandom.nextInt(5,11))), + new ItemStack(ModItems.CATCHING_EGG.get(), 1), 6, 32, 0.05f)); + + trades.get(5).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD_BLOCK, pRandom.nextInt(12,21)), + Optional.of(new ItemCost(ModItems.RUBY.get(), 64)), + new ItemStack(Items.ELYTRA), + 1, 256, 0.05f + )); + } +/* + if(event.getType() == VillagerProfession.TOOLSMITH) { + var trades = event.getTrades(); + + trades.get(1).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD, 12), + new ItemStack(ModItems.CHISEL.get(), 1), 6, 4, 0.05f)); + + trades.get(1).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.DIAMOND, 19), + new ItemStack(ModItems.TOMAHAWK.get(), 1), 6, 4, 0.05f)); + + trades.get(2).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD, 1), + new ItemStack(ModItems.RADIATION_STAFF.get(), 1), 1, 12, 0.05f)); + }*/ + } + + @SubscribeEvent + public static void addWanderingTrades(WandererTradesEvent event) { + /* + List genericTrades = event.getGenericTrades(); + List rareTrades = event.getRareTrades(); + + genericTrades.add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD, 12), + new ItemStack(ModItems.RADIATION_STAFF.get(), 1), 1, 10, 0.2f + )); + + rareTrades.add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.NETHERITE_INGOT, 8), + new ItemStack(ModItems.BAR_BRAWL_MUSIC_DISC.get(), 1), 1, 10, 0.2f + ));*/ + } +} \ No newline at end of file diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/item/ModItems.java b/src/main/java/com/ismailkaygisiz/gamblingplus/item/ModItems.java index ca407cd..30c09f3 100644 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/item/ModItems.java +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/item/ModItems.java @@ -2,11 +2,13 @@ package com.ismailkaygisiz.gamblingplus.item; import com.ismailkaygisiz.gamblingplus.GamblingPlusMod; //import com.ismailkaygisiz.gamblingplus.item.SpecialEggItem; +import com.ismailkaygisiz.gamblingplus.item.custom.CatchingEggItem; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.Item; +import net.minecraft.world.item.Rarity; import net.minecraft.world.item.SpawnEggItem; import net.minecraft.world.item.Item.Properties; //import net.minecraftforge.event.CreativeModeTabEvent; @@ -30,6 +32,14 @@ public class ModItems { String.format("%s:%s", GamblingPlusMod.MOD_ID, "raw_ruby") ))))); + public static final RegistryObject CATCHING_EGG = ITEMS.register("catching_egg", () -> + new CatchingEggItem(new Item.Properties() + .setId(ResourceKey.create(Registries.ITEM, ResourceLocation.parse(String.format("%s:%s", GamblingPlusMod.MOD_ID, "catching_egg")))) + .stacksTo(16) + .rarity(Rarity.UNCOMMON))); + + + /*public static final RegistryObject SPECIAL_EGG = ITEMS.register("special_egg", () -> new SpecialEggItem(new Properties().stacksTo(1))); diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/item/custom/CatchingEggItem.java b/src/main/java/com/ismailkaygisiz/gamblingplus/item/custom/CatchingEggItem.java new file mode 100644 index 0000000..31a0bdb --- /dev/null +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/item/custom/CatchingEggItem.java @@ -0,0 +1,48 @@ +package com.ismailkaygisiz.gamblingplus.item.custom; + +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.npc.VillagerProfession; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.SpawnEggItem; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; + +public class CatchingEggItem extends Item { + public CatchingEggItem(Properties pProperties) { + super(pProperties); + } + @Override + public InteractionResult interactLivingEntity(ItemStack pStack, Player pPlayer, LivingEntity pInteractionTarget, InteractionHand pUsedHand) { + if (pPlayer.level().isClientSide) { + return InteractionResult.PASS; + } + + EntityType type = pInteractionTarget.getType(); + Item spawnEgg = SpawnEggItem.byId(type); + + if (spawnEgg != null) { + pPlayer.addItem(new ItemStack(spawnEgg)); + + pInteractionTarget.discard(); + + if (!pPlayer.getAbilities().instabuild) { + pStack.shrink(1); + } + return InteractionResult.SUCCESS; + } + + return InteractionResult.PASS; + } + + +} diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/villager/ModVillagers.java b/src/main/java/com/ismailkaygisiz/gamblingplus/villager/ModVillagers.java index 8f654ad..7097bd8 100644 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/villager/ModVillagers.java +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/villager/ModVillagers.java @@ -1,25 +1,41 @@ -/*package com.ismailkaygisiz.gamblingplus.villager; +package com.ismailkaygisiz.gamblingplus.villager; +import com.google.common.collect.ImmutableSet; import com.ismailkaygisiz.gamblingplus.GamblingPlusMod; import com.ismailkaygisiz.gamblingplus.block.ModBlocks; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.ai.village.poi.PoiType; +import net.minecraft.world.entity.npc.Villager; import net.minecraft.world.entity.npc.VillagerProfession; import net.minecraft.world.entity.npc.VillagerType; +import net.minecraft.world.level.block.SoundType; import net.minecraftforge.eventbus.api.bus.BusGroup; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; + + public class ModVillagers { - public static final DeferredRegister PROFESSIONS = DeferredRegister.create(ForgeRegistries.VILLAGER_PROFESSIONS, GamblingPlusMod.MOD_ID); - public static final DeferredRegister TYPES = DeferredRegister.create(ForgeRegistries.VILLAGER_TYPES, GamblingPlusMod.MOD_ID); - public static final RegistryObject RUBY_WORKER = PROFESSIONS.register("ruby_worker", - () -> new VillagerProfession("ruby_worker", holder -> holder.is(ModBlocks.RUBY_SMITHING_TABLE.get().asItem().builtInRegistryHolder()), - holder -> holder.is(ModBlocks.RUBY_SMITHING_TABLE.get().asItem().builtInRegistryHolder()))); - public static final RegistryObject GAMBLER = PROFESSIONS.register("gambler", - () -> new VillagerProfession("gambler", holder -> holder.is(ModBlocks.GAMBLING_TABLE.get().asItem().builtInRegistryHolder()), - holder -> holder.is(ModBlocks.GAMBLING_TABLE.get().asItem().builtInRegistryHolder()))); + public static final DeferredRegister POI_TYPES = DeferredRegister.create(ForgeRegistries.POI_TYPES, GamblingPlusMod.MOD_ID); + + public static final DeferredRegister VILLAGER_PROFESSIONS + = DeferredRegister.create(ForgeRegistries.VILLAGER_PROFESSIONS, GamblingPlusMod.MOD_ID); + + public static final RegistryObject RUBY_POI = POI_TYPES.register("ruby_poi", + () -> new PoiType(ImmutableSet.copyOf(ModBlocks.RUBY_BLOCK.get().getStateDefinition().getPossibleStates()),1,1)); + + public static final RegistryObject RUBY_WORKER = VILLAGER_PROFESSIONS.register("ruby_worker", + () -> new VillagerProfession(Component.translatable("profession.ikgamblingplusmod.ruby_worker"), + poiTypeHolder -> poiTypeHolder.value() == RUBY_POI.get(), + poiTypeHolder -> poiTypeHolder.value()==RUBY_POI.get(), ImmutableSet.of(),ImmutableSet.of(), + SoundType.DEEPSLATE.getBreakSound())); + public static void register(BusGroup eventBus) { - PROFESSIONS.register(eventBus); - TYPES.register(eventBus); + POI_TYPES.register(eventBus); + VILLAGER_PROFESSIONS.register(eventBus); } -} */ \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/resources/assets/ikgamblingplusmod/blockstates/ruby_deepslate_ore.json b/src/main/resources/assets/ikgamblingplusmod/blockstates/ruby_deepslate_ore.json new file mode 100644 index 0000000..4c0b98b --- /dev/null +++ b/src/main/resources/assets/ikgamblingplusmod/blockstates/ruby_deepslate_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ikgamblingplusmod:block/ruby_deepslate_ore" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ikgamblingplusmod/blockstates/ruby_ore.json b/src/main/resources/assets/ikgamblingplusmod/blockstates/ruby_ore.json new file mode 100644 index 0000000..fda72aa --- /dev/null +++ b/src/main/resources/assets/ikgamblingplusmod/blockstates/ruby_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "ikgamblingplusmod:block/ruby_ore" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ikgamblingplusmod/items/catching_egg.json b/src/main/resources/assets/ikgamblingplusmod/items/catching_egg.json new file mode 100644 index 0000000..3e3db9e --- /dev/null +++ b/src/main/resources/assets/ikgamblingplusmod/items/catching_egg.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ikgamblingplusmod:item/catching_egg" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ikgamblingplusmod/items/ruby_deepslate_ore.json b/src/main/resources/assets/ikgamblingplusmod/items/ruby_deepslate_ore.json new file mode 100644 index 0000000..f9bddc6 --- /dev/null +++ b/src/main/resources/assets/ikgamblingplusmod/items/ruby_deepslate_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ikgamblingplusmod:item/ruby_deepslate_ore" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ikgamblingplusmod/items/ruby_ore.json b/src/main/resources/assets/ikgamblingplusmod/items/ruby_ore.json new file mode 100644 index 0000000..c2d13b1 --- /dev/null +++ b/src/main/resources/assets/ikgamblingplusmod/items/ruby_ore.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "ikgamblingplusmod:item/ruby_ore" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ikgamblingplusmod/lang/en_us.json b/src/main/resources/assets/ikgamblingplusmod/lang/en_us.json index 685abca..832a989 100644 --- a/src/main/resources/assets/ikgamblingplusmod/lang/en_us.json +++ b/src/main/resources/assets/ikgamblingplusmod/lang/en_us.json @@ -3,5 +3,13 @@ "item.ikgamblingplusmod.raw_ruby": "Raw Ruby", "item.ikgamblingplusmod.ruby_block": "Block of Ruby", "item.ikgamblingplusmod.raw_ruby_block": "Block of Raw Ruby", + "item.ikgamblingplusmod.ruby_ore": "Ruby Ore", + "item.ikgamblingplusmod.ruby_deepslate_ore": "Ruby Deepslate Ore", + "item.ikgamblingplusmod.catching_egg": "Catching Egg", + + "profession.ikgamblingplusmod.ruby_worker": "Ruby Worker", + + + "creativetab.ikgamblingplusmod.gambling_tab": "Gambling Plus" } diff --git a/src/main/resources/assets/ikgamblingplusmod/models/block/ruby_deepslate_ore.json b/src/main/resources/assets/ikgamblingplusmod/models/block/ruby_deepslate_ore.json new file mode 100644 index 0000000..2db3b4f --- /dev/null +++ b/src/main/resources/assets/ikgamblingplusmod/models/block/ruby_deepslate_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "ikgamblingplusmod:block/ruby_deepslate_ore" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ikgamblingplusmod/models/block/ruby_ore.json b/src/main/resources/assets/ikgamblingplusmod/models/block/ruby_ore.json new file mode 100644 index 0000000..36bf579 --- /dev/null +++ b/src/main/resources/assets/ikgamblingplusmod/models/block/ruby_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "ikgamblingplusmod:block/ruby_ore" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/ikgamblingplusmod/models/item/catching_egg.json b/src/main/resources/assets/ikgamblingplusmod/models/item/catching_egg.json new file mode 100644 index 0000000..5d2e0cd --- /dev/null +++ b/src/main/resources/assets/ikgamblingplusmod/models/item/catching_egg.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "ikgamblingplusmod:item/catching_egg" + } +} diff --git a/src/main/resources/assets/ikgamblingplusmod/models/item/ruby_deepslate_ore.json b/src/main/resources/assets/ikgamblingplusmod/models/item/ruby_deepslate_ore.json new file mode 100644 index 0000000..839d3a2 --- /dev/null +++ b/src/main/resources/assets/ikgamblingplusmod/models/item/ruby_deepslate_ore.json @@ -0,0 +1,3 @@ +{ + "parent": "ikgamblingplusmod:block/ruby_deepslate_ore" +} diff --git a/src/main/resources/assets/ikgamblingplusmod/models/item/ruby_ore.json b/src/main/resources/assets/ikgamblingplusmod/models/item/ruby_ore.json new file mode 100644 index 0000000..3a2509d --- /dev/null +++ b/src/main/resources/assets/ikgamblingplusmod/models/item/ruby_ore.json @@ -0,0 +1,3 @@ +{ + "parent": "ikgamblingplusmod:block/ruby_ore" +} diff --git a/src/main/resources/assets/ikgamblingplusmod/textures/block/raw_ruby_block.png b/src/main/resources/assets/ikgamblingplusmod/textures/block/raw_ruby_block.png index 0f3509d..0e1422c 100644 Binary files a/src/main/resources/assets/ikgamblingplusmod/textures/block/raw_ruby_block.png and b/src/main/resources/assets/ikgamblingplusmod/textures/block/raw_ruby_block.png differ diff --git a/src/main/resources/assets/ikgamblingplusmod/textures/block/ruby_block.png b/src/main/resources/assets/ikgamblingplusmod/textures/block/ruby_block.png index e3cf1a7..21f29b0 100644 Binary files a/src/main/resources/assets/ikgamblingplusmod/textures/block/ruby_block.png and b/src/main/resources/assets/ikgamblingplusmod/textures/block/ruby_block.png differ diff --git a/src/main/resources/assets/ikgamblingplusmod/textures/block/ruby_deepslate_ore.png b/src/main/resources/assets/ikgamblingplusmod/textures/block/ruby_deepslate_ore.png new file mode 100644 index 0000000..a85097f Binary files /dev/null and b/src/main/resources/assets/ikgamblingplusmod/textures/block/ruby_deepslate_ore.png differ diff --git a/src/main/resources/assets/ikgamblingplusmod/textures/block/ruby_ore.png b/src/main/resources/assets/ikgamblingplusmod/textures/block/ruby_ore.png new file mode 100644 index 0000000..daa68b2 Binary files /dev/null and b/src/main/resources/assets/ikgamblingplusmod/textures/block/ruby_ore.png differ diff --git a/src/main/resources/assets/ikgamblingplusmod/textures/entity/villager/profession/ruby_worker.png b/src/main/resources/assets/ikgamblingplusmod/textures/entity/villager/profession/ruby_worker.png new file mode 100644 index 0000000..3c7160a Binary files /dev/null and b/src/main/resources/assets/ikgamblingplusmod/textures/entity/villager/profession/ruby_worker.png differ diff --git a/src/main/resources/assets/ikgamblingplusmod/textures/item/catching_egg.png b/src/main/resources/assets/ikgamblingplusmod/textures/item/catching_egg.png new file mode 100644 index 0000000..1a9cea8 Binary files /dev/null and b/src/main/resources/assets/ikgamblingplusmod/textures/item/catching_egg.png differ diff --git a/src/main/resources/assets/ikgamblingplusmod/textures/item/raw_ruby.png b/src/main/resources/assets/ikgamblingplusmod/textures/item/raw_ruby.png index 935534a..e1325ef 100644 Binary files a/src/main/resources/assets/ikgamblingplusmod/textures/item/raw_ruby.png and b/src/main/resources/assets/ikgamblingplusmod/textures/item/raw_ruby.png differ diff --git a/src/main/resources/assets/ikgamblingplusmod/textures/item/ruby.png b/src/main/resources/assets/ikgamblingplusmod/textures/item/ruby.png index 8dfd6ed..0ca42b7 100644 Binary files a/src/main/resources/assets/ikgamblingplusmod/textures/item/ruby.png and b/src/main/resources/assets/ikgamblingplusmod/textures/item/ruby.png differ diff --git a/src/main/resources/data/ikgamblingplusmod/loot_table/blocks/raw_ruby_block.json b/src/main/resources/data/ikgamblingplusmod/loot_table/blocks/raw_ruby_block.json new file mode 100644 index 0000000..8281236 --- /dev/null +++ b/src/main/resources/data/ikgamblingplusmod/loot_table/blocks/raw_ruby_block.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "minecraft:item", + "name": "ikgamblingplusmod:raw_ruby_block" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "ikgamblingplusmod:blocks/raw_ruby_block" +} \ No newline at end of file diff --git a/src/main/resources/data/ikgamblingplusmod/loot_table/blocks/ruby_block.json b/src/main/resources/data/ikgamblingplusmod/loot_table/blocks/ruby_block.json new file mode 100644 index 0000000..6517193 --- /dev/null +++ b/src/main/resources/data/ikgamblingplusmod/loot_table/blocks/ruby_block.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "bonus_rolls": 0, + "entries": [ + { + "type": "minecraft:item", + "name": "ikgamblingplusmod:ruby_block" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ], + "random_sequence": "ikgamblingplusmod:blocks/ruby_block" +} \ No newline at end of file diff --git a/src/main/resources/data/ikgamblingplusmod/loot_table/blocks/ruby_deepslate_ore.json b/src/main/resources/data/ikgamblingplusmod/loot_table/blocks/ruby_deepslate_ore.json new file mode 100644 index 0000000..a8416d4 --- /dev/null +++ b/src/main/resources/data/ikgamblingplusmod/loot_table/blocks/ruby_deepslate_ore.json @@ -0,0 +1,61 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ], + "name": "ikgamblingplusmod:ruby_deepslate_ore" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 5.0, + "min": 2.0 + }, + "function": "minecraft:set_count" + }, + { + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "ikgamblingplusmod:raw_ruby" + } + ] + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ikgamblingplusmod:blocks/ruby_deepslate_ore" +} \ No newline at end of file diff --git a/src/main/resources/data/ikgamblingplusmod/loot_table/blocks/ruby_ore.json b/src/main/resources/data/ikgamblingplusmod/loot_table/blocks/ruby_ore.json new file mode 100644 index 0000000..6ebee24 --- /dev/null +++ b/src/main/resources/data/ikgamblingplusmod/loot_table/blocks/ruby_ore.json @@ -0,0 +1,52 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "predicates": { + "minecraft:enchantments": [ + { + "enchantments": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + } + ], + "name": "ikgamblingplusmod:ruby_ore" + }, + { + "type": "minecraft:item", + "functions": [ + { + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "ikgamblingplusmod:raw_ruby" + } + ] + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ikgamblingplusmod:blocks/ruby_ore" +} \ No newline at end of file diff --git a/src/main/resources/data/ikgamblingplusmod/recipe/ruby.json b/src/main/resources/data/ikgamblingplusmod/recipe/ruby.json new file mode 100644 index 0000000..e8dc3ed --- /dev/null +++ b/src/main/resources/data/ikgamblingplusmod/recipe/ruby.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + "ikgamblingplusmod:ruby_block" + ], + "result": { + "id": "ikgamblingplusmod:ruby", + "count": 9 + } +} diff --git a/src/main/resources/data/ikgamblingplusmod/recipe/ruby_block.json b/src/main/resources/data/ikgamblingplusmod/recipe/ruby_block.json new file mode 100644 index 0000000..b058b82 --- /dev/null +++ b/src/main/resources/data/ikgamblingplusmod/recipe/ruby_block.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "mics", + "key": { + "A": "ikgamblingplusmod:ruby" + }, + "pattern": [ + "AAA", + "AAA", + "AAA" + ], + "result": { + "count": 1, + "id": "ikgamblingplusmod:ruby_block" + } +} \ No newline at end of file diff --git a/src/main/resources/data/ikgamblingplusmod/recipe/ruby_from_blasting_raw_ruby.json b/src/main/resources/data/ikgamblingplusmod/recipe/ruby_from_blasting_raw_ruby.json new file mode 100644 index 0000000..55e5c63 --- /dev/null +++ b/src/main/resources/data/ikgamblingplusmod/recipe/ruby_from_blasting_raw_ruby.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:blasting", + "category": "misc", + "cookingtime": 100, + "experience": 0.25, + "group": "ruby", + "ingredient": "ikgamblingplusmod:raw_ruby", + "result": { + "id": "ikgamblingplusmod:ruby" + } + +} \ No newline at end of file diff --git a/src/main/resources/data/ikgamblingplusmod/recipe/ruby_from_smelting_raw_ruby.json b/src/main/resources/data/ikgamblingplusmod/recipe/ruby_from_smelting_raw_ruby.json new file mode 100644 index 0000000..aadc1f7 --- /dev/null +++ b/src/main/resources/data/ikgamblingplusmod/recipe/ruby_from_smelting_raw_ruby.json @@ -0,0 +1,11 @@ +{ + "type": "minecraft:smelting", + "category": "misc", + "cookingtime": 100, + "experience": 0.25, + "group": "ruby", + "ingredient": "ikgamblingplusmod:raw_ruby", + "result": { + "id": "ikgamblingplusmod:ruby" + } +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/block/mineable/pickaxe.json b/src/main/resources/data/minecraft/tags/block/mineable/pickaxe.json new file mode 100644 index 0000000..75b3134 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + "ikgamblingplusmod:ruby_block", + "ikgamblingplusmod:raw_ruby_block", + "ikgamblingplusmod:ruby_ore", + "ikgamblingplusmod:ruby_deepslate_ore" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/block/needs_diamond_tool.json b/src/main/resources/data/minecraft/tags/block/needs_diamond_tool.json new file mode 100644 index 0000000..c224032 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/block/needs_diamond_tool.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "ikgamblingplusmod:ruby_deepslate_ore" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/block/needs_iron_tool.json b/src/main/resources/data/minecraft/tags/block/needs_iron_tool.json new file mode 100644 index 0000000..46b9c80 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/block/needs_iron_tool.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "ikgamblingplusmod:ruby_block", + "ikgamblingplusmod:raw_ruby_block", + "ikgamblingplusmod:ruby_ore" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json b/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json new file mode 100644 index 0000000..cf2a9da --- /dev/null +++ b/src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json @@ -0,0 +1,9 @@ +{ + "replace": false, + "values": [ + { + "id": "ikgamblingplusmod:ruby_poi", + "required": false + } + ] +} \ No newline at end of file