From 27c85f639944e0415ccf43302ce94dd5cedb895b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail?= Date: Sat, 26 Jul 2025 19:33:25 +0300 Subject: [PATCH] Advancements added. Zombie Ruby Worker Villager added. Ruby Ore and Deepslate Ruby Ore added to the worldgen. New Trades added also exist trades updated. Creative mod tabs updated. The version and mapping of mod changed. Updated to 1.21.7 and official mapping. --- gradle.properties | 15 +- .../gamblingplus/GamblingPlusMod.java | 11 +- .../block/GamblingTableBlock.java | 55 ------- .../gamblingplus/block/ModBlocks.java | 2 +- .../gamblingplus/datagen/DataGenerators.java | 4 - .../datagen/ModBlockLootTableProvider.java | 4 - .../datagen/ModBlockStateProvider.java | 4 - .../datagen/ModBlockTagProvider.java | 4 - .../datagen/ModItemModelProvider.java | 4 - .../datagen/ModRecipeProvider.java | 4 - .../gamblingplus/event/ModEvents.java | 145 ++++++++++++++++-- .../gamblingplus/item/SpecialEggItem.java | 36 ----- .../gamblingplus/util/ModCreativeTabs.java | 8 +- .../villager/ModVillagerTrades.java | 48 ------ .../assets/ikgamblingplusmod/lang/en_us.json | 2 +- .../assets/ikgamblingplusmod/lang/tr_tr.json | 14 ++ .../profession/ruby_worker.png | Bin 0 -> 1475 bytes .../zombie_villager/zombie_villager.png | Bin 0 -> 962 bytes .../textures/item/raw_ruby.png | Bin 239 -> 259 bytes .../ikgamblingplusmod/textures/item/ruby.png | Bin 256 -> 279 bytes .../advancement/recipes/raw_ruby.json | 32 ++++ .../advancement/recipes/raw_ruby_block.json | 32 ++++ .../advancement/recipes/ruby.json | 32 ++++ .../advancement/recipes/ruby_block.json | 32 ++++ .../recipes/ruby_from_blasting_raw_ruby.json | 32 ++++ .../recipes/ruby_from_smelting_raw_ruby.json | 32 ++++ .../forge/biome_modifier/ruby_ore.json | 8 + .../loot_table/blocks/ruby_deepslate_ore.json | 2 +- .../loot_table/blocks/ruby_ore.json | 9 ++ .../ikgamblingplusmod/recipe/raw_ruby.json | 11 ++ .../recipe/raw_ruby_block.json | 16 ++ .../recipe/ruby_from_blasting_raw_ruby.json | 4 +- .../worldgen/_tmo/ruby_ore_middle.json | 27 ++++ .../worldgen/_tmo/ruby_ore_small.json | 27 ++++ .../worldgen/_tmo/ruby_ore_upper.json | 27 ++++ .../worldgen/configured_feature/ruby_ore.json | 27 ++++ .../placed_feature/ruby_ore_placed.json | 27 ++++ .../ruby_from_smelting_raw_ruby.json | 32 ++++ .../tags/block/needs_diamond_tool.json | 6 - .../minecraft/tags/block/needs_iron_tool.json | 1 + 40 files changed, 581 insertions(+), 195 deletions(-) delete mode 100644 src/main/java/com/ismailkaygisiz/gamblingplus/block/GamblingTableBlock.java delete mode 100644 src/main/java/com/ismailkaygisiz/gamblingplus/datagen/DataGenerators.java delete mode 100644 src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModBlockLootTableProvider.java delete mode 100644 src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModBlockStateProvider.java delete mode 100644 src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModBlockTagProvider.java delete mode 100644 src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModItemModelProvider.java delete mode 100644 src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModRecipeProvider.java delete mode 100644 src/main/java/com/ismailkaygisiz/gamblingplus/item/SpecialEggItem.java delete mode 100644 src/main/java/com/ismailkaygisiz/gamblingplus/villager/ModVillagerTrades.java create mode 100644 src/main/resources/assets/ikgamblingplusmod/lang/tr_tr.json create mode 100644 src/main/resources/assets/ikgamblingplusmod/textures/entity/zombie_villager/profession/ruby_worker.png create mode 100644 src/main/resources/assets/ikgamblingplusmod/textures/entity/zombie_villager/zombie_villager.png create mode 100644 src/main/resources/data/ikgamblingplusmod/advancement/recipes/raw_ruby.json create mode 100644 src/main/resources/data/ikgamblingplusmod/advancement/recipes/raw_ruby_block.json create mode 100644 src/main/resources/data/ikgamblingplusmod/advancement/recipes/ruby.json create mode 100644 src/main/resources/data/ikgamblingplusmod/advancement/recipes/ruby_block.json create mode 100644 src/main/resources/data/ikgamblingplusmod/advancement/recipes/ruby_from_blasting_raw_ruby.json create mode 100644 src/main/resources/data/ikgamblingplusmod/advancement/recipes/ruby_from_smelting_raw_ruby.json create mode 100644 src/main/resources/data/ikgamblingplusmod/forge/biome_modifier/ruby_ore.json create mode 100644 src/main/resources/data/ikgamblingplusmod/recipe/raw_ruby.json create mode 100644 src/main/resources/data/ikgamblingplusmod/recipe/raw_ruby_block.json create mode 100644 src/main/resources/data/ikgamblingplusmod/worldgen/_tmo/ruby_ore_middle.json create mode 100644 src/main/resources/data/ikgamblingplusmod/worldgen/_tmo/ruby_ore_small.json create mode 100644 src/main/resources/data/ikgamblingplusmod/worldgen/_tmo/ruby_ore_upper.json create mode 100644 src/main/resources/data/ikgamblingplusmod/worldgen/configured_feature/ruby_ore.json create mode 100644 src/main/resources/data/ikgamblingplusmod/worldgen/placed_feature/ruby_ore_placed.json create mode 100644 src/main/resources/data/minecraft/advancements/recipes/ikgamblingplusmod/ruby_from_smelting_raw_ruby.json delete mode 100644 src/main/resources/data/minecraft/tags/block/needs_diamond_tool.json diff --git a/gradle.properties b/gradle.properties index b80a91a..17315d0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,13 +14,13 @@ systemProp.net.minecraftforge.gradle.repo.attach=false ## Environment Properties # The Minecraft version must agree with the Forge version to get a valid artifact -minecraft_version=1.21.6 +minecraft_version=1.21.7 # The Minecraft version range can use any release version of Minecraft as bounds. # Snapshots, pre-releases, and release candidates are not guaranteed to sort properly # as they do not follow standard versioning conventions. -minecraft_version_range=[1.21.6,1.22) +minecraft_version_range=[1.21.7,1.22) # The Forge version must agree with the Minecraft version to get a valid artifact -forge_version=56.0.9 +forge_version=57.0.3 # The Forge version range can use any version of Forge as bounds or match the loader version range forge_version_range=[0,) # The loader version range can only use the major version of Forge/FML as bounds @@ -39,10 +39,15 @@ loader_version_range=[0,) # # Parchment is an unofficial project maintained by ParchmentMC, separate from Minecraft Forge. # Additional setup is needed to use their mappings, see https://parchmentmc.org/docs/getting-started -mapping_channel=parchment +# mapping_channel=parchment # The mapping version to query from the mapping channel. # This must match the format required by the mapping channel. -mapping_version=2025.06.29-1.21.6 +# mapping_version=2025.06.29-1.21.6 + +mapping_channel=official +# The mapping version to query from the mapping channel. +# This must match the format required by the mapping channel. +mapping_version=1.21.7 ## Mod Properties diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/GamblingPlusMod.java b/src/main/java/com/ismailkaygisiz/gamblingplus/GamblingPlusMod.java index 09c5268..7987320 100644 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/GamblingPlusMod.java +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/GamblingPlusMod.java @@ -54,11 +54,14 @@ 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); + } + if(event.getTabKey() == CreativeModeTabs.SPAWN_EGGS){ event.accept(ModItems.CATCHING_EGG); - + } + if(event.getTabKey() == CreativeModeTabs.NATURAL_BLOCKS){ + event.accept(ModBlocks.RUBY_ORE); + event.accept(ModBlocks.RUBY_DEEPSLATE_ORE); + event.accept(ModBlocks.RAW_RUBY_BLOCK); } } diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/block/GamblingTableBlock.java b/src/main/java/com/ismailkaygisiz/gamblingplus/block/GamblingTableBlock.java deleted file mode 100644 index 0b48c0c..0000000 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/block/GamblingTableBlock.java +++ /dev/null @@ -1,55 +0,0 @@ -/*package com.ismailkaygisiz.gamblingplus.block; - -import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.Component; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import java.util.Random; - -public class GamblingTableBlock extends Block { - public GamblingTableBlock(Properties properties) { super(properties); } - - - @Override - protected InteractionResult useItemOn(ItemStack pStack, BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand, BlockHitResult pHitResult) { - if (!pLevel.isClientSide && pHand == InteractionHand.MAIN_HAND) { - ItemStack held = pPlayer.getItemInHand(pHand); - int bet = 0; - if (held.getItem() == Items.EMERALD && held.getCount() >= 10) bet = 10; - else if (held.getItem() == Items.EMERALD && held.getCount() >= 5) bet = 5; - else if (held.getItem() == Items.EMERALD && held.getCount() >= 1) bet = 1; - if (bet > 0) { - held.shrink(bet); - int roll = new Random().nextInt(100); - if (roll < 40) { - pPlayer.displayClientMessage(net.minecraft.network.chat.Component.literal("Kaybettin!"),true); - } else if (roll < 70) { - pPlayer.giveExperiencePoints(bet * 5); - pPlayer.displayClientMessage(net.minecraft.network.chat.Component.literal("Kazandın! " + (bet * 5) + " XP kazandın."),true); - } else if (roll < 85) { - pPlayer.getInventory().add(new ItemStack(Items.GOLD_INGOT, bet)); - pPlayer.displayClientMessage(Component.literal("Kazandın! " + bet + " altın kazandın."),true); - } else if (roll < 95) { - pPlayer.getInventory().add(new ItemStack(Items.DIAMOND, 1)); - pPlayer.displayClientMessage(net.minecraft.network.chat.Component.literal("Büyük ödül! 1 elmas kazandın."),true); - } else { - pPlayer.getInventory().add(new ItemStack(Items.EMERALD, bet * 2)); - pPlayer.displayClientMessage(net.minecraft.network.chat.Component.literal("Bahsin iki katı kadar zümrüt kazandın!"),true); - } - return InteractionResult.SUCCESS; - } else { - pPlayer.displayClientMessage(net.minecraft.network.chat.Component.literal("Bahis için en az 1 zümrüt olmalı!"),true); - return InteractionResult.FAIL; - } - } - return InteractionResult.SUCCESS; - } - -} */ \ No newline at end of file diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/block/ModBlocks.java b/src/main/java/com/ismailkaygisiz/gamblingplus/block/ModBlocks.java index c4532a9..44a2c64 100644 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/block/ModBlocks.java +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/block/ModBlocks.java @@ -44,7 +44,7 @@ public class ModBlocks { .strength(.4f) .requiresCorrectToolForDrops())); - public static final RegistryObject RAW_DEEPSLATE_ORE = registerBlock("ruby_deepslate_ore", + public static final RegistryObject RUBY_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) diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/DataGenerators.java b/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/DataGenerators.java deleted file mode 100644 index 291f7c1..0000000 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/DataGenerators.java +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index d1ccbab..0000000 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModBlockLootTableProvider.java +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index d1033a4..0000000 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModBlockStateProvider.java +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index c4157b5..0000000 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModBlockTagProvider.java +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index dece7d2..0000000 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModItemModelProvider.java +++ /dev/null @@ -1,4 +0,0 @@ -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 deleted file mode 100644 index b3a09a8..0000000 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/datagen/ModRecipeProvider.java +++ /dev/null @@ -1,4 +0,0 @@ -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 index 5aac34c..56ed1b7 100644 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/event/ModEvents.java +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/event/ModEvents.java @@ -5,11 +5,16 @@ 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.core.component.DataComponents; +import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.item.DyeColor; +import net.minecraft.world.item.Item; 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.component.OminousBottleAmplifier; import net.minecraft.world.item.enchantment.EnchantedItemInUse; import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.EnchantmentInstance; @@ -37,28 +42,122 @@ public class ModEvents { 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)); + new ItemCost(Items.COPPER_INGOT, pRandom.nextInt(3,8)), + new ItemStack(Items.EMERALD, 1), 32, 2, 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)); + new ItemStack(Items.EMERALD, 1), 32, 2, 0.05f)); + + trades.get(1).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(ModItems.RAW_RUBY.get(), pRandom.nextInt(5,10)), + new ItemStack(Items.EMERALD, 1), 32, 2, 0.05f)); + + trades.get(1).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.IRON_INGOT, pRandom.nextInt(3,8)), + new ItemStack(Items.EMERALD, 1), 32, 2, 0.05f)); + + trades.get(2).add((pTrader, pRandom) -> { + Map coloredGlassMap = Map.ofEntries( + Map.entry(DyeColor.WHITE, Items.WHITE_STAINED_GLASS), + Map.entry(DyeColor.ORANGE, Items.ORANGE_STAINED_GLASS), + Map.entry(DyeColor.MAGENTA, Items.MAGENTA_STAINED_GLASS), + Map.entry(DyeColor.LIGHT_BLUE, Items.LIGHT_BLUE_STAINED_GLASS), + Map.entry(DyeColor.YELLOW, Items.YELLOW_STAINED_GLASS), + Map.entry(DyeColor.LIME, Items.LIME_STAINED_GLASS), + Map.entry(DyeColor.PINK, Items.PINK_STAINED_GLASS), + Map.entry(DyeColor.GRAY, Items.GRAY_STAINED_GLASS), + Map.entry(DyeColor.LIGHT_GRAY, Items.LIGHT_GRAY_STAINED_GLASS), + Map.entry(DyeColor.CYAN, Items.CYAN_STAINED_GLASS), + Map.entry(DyeColor.PURPLE, Items.PURPLE_STAINED_GLASS), + Map.entry(DyeColor.BLUE, Items.BLUE_STAINED_GLASS), + Map.entry(DyeColor.BROWN, Items.BROWN_STAINED_GLASS), + Map.entry(DyeColor.GREEN, Items.GREEN_STAINED_GLASS), + Map.entry(DyeColor.RED, Items.RED_STAINED_GLASS), + Map.entry(DyeColor.BLACK, Items.BLACK_STAINED_GLASS) + ); + + DyeColor[] colors = DyeColor.values(); + DyeColor randomColor = colors[pRandom.nextInt(colors.length)]; + ItemStack stainedGlass = new ItemStack(coloredGlassMap.get(randomColor), 4); + + return new MerchantOffer( + new ItemCost(Items.EMERALD, pRandom.nextInt(3, 8)), + stainedGlass, + 16, 4, 0.05f + ); + }); + + trades.get(2).add((pTrader, pRandom) -> { + List logs = List.of( + Items.MANGROVE_LOG, + Items.CHERRY_LOG, + Items.PALE_OAK_LOG + ); + + ItemStack itemStack = new ItemStack(logs.get(pRandom.nextInt(logs.size())), 4); + + return new MerchantOffer( + new ItemCost(Items.EMERALD, pRandom.nextInt(3, 8)), + itemStack, + 16, 4, 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)); + new ItemStack(Items.AMETHYST_SHARD, 2), 12, 5, 0.05f)); + + trades.get(2).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD, pRandom.nextInt(10,25)), + Optional.of(new ItemCost(Items.BUCKET, 1)), + new ItemStack(Items.POWDER_SNOW_BUCKET, 1), 3, 6, 0.05f)); + + trades.get(2).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD, pRandom.nextInt(7,14)), + Optional.of(new ItemCost(Items.BUCKET, 1)), + new ItemStack(Items.LAVA_BUCKET, 1), 3, 6, 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)); + new ItemCost(Items.EMERALD, pRandom.nextInt(20,35)), + Optional.of(new ItemCost(Items.SAND, 1)), + new ItemStack(Items.SOUL_SAND, 1), 8, 6, 0.05f)); + + trades.get(3).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD, pRandom.nextInt(14,28)), + new ItemStack(Items.BLAZE_ROD, 1), 6, 10, 0.05f)); + + trades.get(3).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD, pRandom.nextInt(25,40)), + new ItemStack(Items.TRIDENT, 1), 2, 30, 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)); + new ItemStack(Items.FIREWORK_ROCKET, pRandom.nextInt(2,5)), 12, 6, 0.05f)); + + trades.get(4).add((trader, pRandom) -> { + ItemStack bottle = new ItemStack(Items.OMINOUS_BOTTLE, 1); + + bottle.set(DataComponents.OMINOUS_BOTTLE_AMPLIFIER, new OminousBottleAmplifier(pRandom.nextInt(2,4))); // Bad Omen V + + return new MerchantOffer( + new ItemCost(Items.EMERALD, pRandom.nextInt(45,65)), + bottle, + 2, 12, 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)); + new ItemStack(Items.SHULKER_BOX, 1), 4, 20, 0.05f)); + + trades.get(4).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD_BLOCK, pRandom.nextInt(6,12)), + new ItemStack(Items.HEART_OF_THE_SEA, 1), 1, 128, 0.05f)); + + trades.get(4).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD_BLOCK, pRandom.nextInt(6,12)), + new ItemStack(Items.TOTEM_OF_UNDYING, 1), 1, 128, 0.05f)); trades.get(4).add((pTrader, pRandom) -> { List> valuableEnchantments = List.of( @@ -68,10 +167,15 @@ public class ModEvents { Enchantments.SHARPNESS.getOrThrow(pTrader), Enchantments.UNBREAKING.getOrThrow(pTrader), Enchantments.MENDING.getOrThrow(pTrader), + Enchantments.CHANNELING.getOrThrow(pTrader), + Enchantments.LOYALTY.getOrThrow(pTrader), Enchantments.LOOTING.getOrThrow(pTrader), + Enchantments.SILK_TOUCH.getOrThrow(pTrader), + Enchantments.INFINITY.getOrThrow(pTrader), Enchantments.PROTECTION.getOrThrow(pTrader), - Enchantments.THORNS.getOrThrow(pTrader), + Enchantments.FEATHER_FALLING.getOrThrow(pTrader), Enchantments.RESPIRATION.getOrThrow(pTrader), + Enchantments.RIPTIDE.getOrThrow(pTrader), Enchantments.FLAME.getOrThrow(pTrader), Enchantments.SMITE.getOrThrow(pTrader), Enchantments.INFINITY.getOrThrow(pTrader) @@ -79,7 +183,7 @@ public class ModEvents { Holder selected = valuableEnchantments.get(pRandom.nextInt(valuableEnchantments.size())); - ItemStack book = Items.BOOK.getDefaultInstance(); + ItemStack book = Items.ENCHANTED_BOOK.getDefaultInstance(); book.enchant(selected, selected.get().getMaxLevel() >= 4 ? pRandom.nextInt(selected.get().getMaxLevel()-1, selected.get().getMaxLevel()+1): @@ -104,6 +208,27 @@ public class ModEvents { new ItemStack(Items.ELYTRA), 1, 256, 0.05f )); + + trades.get(5).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD_BLOCK, pRandom.nextInt(8,14)), + Optional.of(new ItemCost(Items.IRON_BLOCK, pRandom.nextInt(5,13))), + new ItemStack(Items.ANCIENT_DEBRIS, 1), + 1, 256, 0.05f + )); + + trades.get(5).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD_BLOCK, pRandom.nextInt(30,45)), + Optional.of(new ItemCost(Items.DIAMOND_BLOCK, pRandom.nextInt(2,5))), + new ItemStack(Items.BEACON, 1), + 1, 256, 0.05f + )); + + trades.get(5).add((pTrader, pRandom) -> new MerchantOffer( + new ItemCost(Items.EMERALD_BLOCK, pRandom.nextInt(30,45)), + Optional.of(new ItemCost(Items.DIAMOND_BLOCK, pRandom.nextInt(2,5))), + new ItemStack(Items.SPAWNER, 1), + 1, 256, 0.05f + )); } /* if(event.getType() == VillagerProfession.TOOLSMITH) { diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/item/SpecialEggItem.java b/src/main/java/com/ismailkaygisiz/gamblingplus/item/SpecialEggItem.java deleted file mode 100644 index 22003df..0000000 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/item/SpecialEggItem.java +++ /dev/null @@ -1,36 +0,0 @@ -/*package com.ismailkaygisiz.gamblingplus.item; - -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResultHolder; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.LivingEntity; -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.level.Level; - -public class SpecialEggItem extends Item { - public SpecialEggItem(Properties properties) { super(properties); } - @Override - public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { - if (!level.isClientSide) { - var target = player.pick(5.0D, 0.0F, false).getEntity(); - if (target instanceof LivingEntity living) { - EntityType type = living.getType(); - ItemStack egg = SpawnEggItem.byId(type); - if (egg != null && !egg.isEmpty()) { - if (!player.getInventory().add(egg)) { - player.drop(egg, false); - } - player.sendSystemMessage(net.minecraft.network.chat.Component.literal(type.getDescription().getString() + " yumurtasını aldın!")); - } else { - player.sendSystemMessage(net.minecraft.network.chat.Component.literal("Bu canlı için yumurta yok!")); - } - player.getItemInHand(hand).shrink(1); - return InteractionResultHolder.success(player.getItemInHand(hand)); - } - } - return super.use(level, player, hand); - } -} */ \ No newline at end of file diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/util/ModCreativeTabs.java b/src/main/java/com/ismailkaygisiz/gamblingplus/util/ModCreativeTabs.java index f0990cf..c7bcbad 100644 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/util/ModCreativeTabs.java +++ b/src/main/java/com/ismailkaygisiz/gamblingplus/util/ModCreativeTabs.java @@ -18,10 +18,14 @@ public class ModCreativeTabs { .icon(() -> new ItemStack(com.ismailkaygisiz.gamblingplus.item.ModItems.RUBY.get())) .title(net.minecraft.network.chat.Component.translatable("creativetab.ikgamblingplusmod.gambling_tab")) .displayItems((pParameters, pOutput) -> { - pOutput.accept(ModItems.RUBY.get()); pOutput.accept(ModItems.RAW_RUBY.get()); - pOutput.accept(ModBlocks.RUBY_BLOCK.get()); + pOutput.accept(ModItems.RUBY.get()); pOutput.accept(ModBlocks.RAW_RUBY_BLOCK.get()); + pOutput.accept(ModBlocks.RUBY_BLOCK.get()); + pOutput.accept(ModBlocks.RUBY_BLOCK.get()); + pOutput.accept(ModBlocks.RUBY_ORE.get()); + pOutput.accept(ModBlocks.RUBY_DEEPSLATE_ORE.get()); + pOutput.accept(ModItems.CATCHING_EGG.get()); }) .build()); diff --git a/src/main/java/com/ismailkaygisiz/gamblingplus/villager/ModVillagerTrades.java b/src/main/java/com/ismailkaygisiz/gamblingplus/villager/ModVillagerTrades.java deleted file mode 100644 index 0aac4ce..0000000 --- a/src/main/java/com/ismailkaygisiz/gamblingplus/villager/ModVillagerTrades.java +++ /dev/null @@ -1,48 +0,0 @@ -/* -package com.ismailkaygisiz.gamblingplus.villager; - - -import com.ismailkaygisiz.gamblingplus.item.ModItems; -import net.minecraft.world.entity.npc.VillagerTrades; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.trading.MerchantOffer; -import net.minecraftforge.event.village.VillagerTradesEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE) -public class ModVillagerTrades { - public static void onVillagerTrades(VillagerTradesEvent event) { - if (event.getType().toString().contains("ruby_worker")) { - VillagerTrades.ItemListing[] level1 = new VillagerTrades.ItemListing[] { - (entity, random) -> new MerchantOffer(ModItems.RUBY.get().getDefaultInstance(), new net.minecraft.world.item.ItemStack(Items.EMERALD), 16, 2, 0.05F), - (entity, random) -> new MerchantOffer(ModItems.RUBY.get().getDefaultInstance(), new net.minecraft.world.item.ItemStack(Items.IRON_INGOT), 16, 2, 0.05F), - (entity, random) -> new MerchantOffer(ModItems.RUBY.get().getDefaultInstance(), new net.minecraft.world.item.ItemStack(Items.GOLD_INGOT), 16, 2, 0.05F), - (entity, random) -> new MerchantOffer(ModItems.RUBY.get().getDefaultInstance(), new net.minecraft.world.item.ItemStack(Items.DIAMOND), 8, 2, 0.05F) - }; - VillagerTrades.ItemListing[] level5 = new VillagerTrades.ItemListing[] { - (entity, random) -> new MerchantOffer(new net.minecraft.world.item.ItemStack(ModItems.RUBY.get(), 64), new net.minecraft.world.item.ItemStack(Items.EMERALD, 64), - new net.minecraft.world.item.ItemStack(Items.ELYTRA), 1, 30, 0.2F) - }; - event.getTrades().put(1, java.util.List.of(level1)); - event.getTrades().put(5, java.util.List.of(level5)); - } - if (event.getType().toString().contains("gambler")) { - VillagerTrades.ItemListing[] level1 = new VillagerTrades.ItemListing[] { - (entity, random) -> new MerchantOffer(new net.minecraft.world.item.ItemStack(Items.EMERALD, 15), new net.minecraft.world.item.ItemStack(Items.DIAMOND), 8, 2, 0.05F), - (entity, random) -> new MerchantOffer(new net.minecraft.world.item.ItemStack(Items.EMERALD, 5), new net.minecraft.world.item.ItemStack(Items.GOLD_INGOT), 16, 2, 0.05F), - (entity, random) -> new MerchantOffer(new net.minecraft.world.item.ItemStack(Items.EMERALD, 3), new net.minecraft.world.item.ItemStack(Items.IRON_INGOT), 16, 2, 0.05F) - }; - VillagerTrades.ItemListing[] level3 = new VillagerTrades.ItemListing[] { - (entity, random) -> new MerchantOffer(new net.minecraft.world.item.ItemStack(Items.EMERALD, 32), new net.minecraft.world.item.ItemStack(Items.CREEPER_SPAWN_EGG), 1, 5, 0.2F), - (entity, random) -> new MerchantOffer(new net.minecraft.world.item.ItemStack(Items.EMERALD, 32), new net.minecraft.world.item.ItemStack(Items.ENDERMAN_SPAWN_EGG), 1, 5, 0.2F) - }; - VillagerTrades.ItemListing[] level5 = new VillagerTrades.ItemListing[] { - (entity, random) -> new MerchantOffer(new net.minecraft.world.item.ItemStack(Items.EMERALD, 64), ModItems.SPECIAL_EGG.get().getDefaultInstance(), 1, 30, 0.2F) - }; - event.getTrades().put(1, java.util.List.of(level1)); - event.getTrades().put(3, java.util.List.of(level3)); - event.getTrades().put(5, java.util.List.of(level5)); - } - } -} */ \ 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 832a989..91749a7 100644 --- a/src/main/resources/assets/ikgamblingplusmod/lang/en_us.json +++ b/src/main/resources/assets/ikgamblingplusmod/lang/en_us.json @@ -4,7 +4,7 @@ "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.ruby_deepslate_ore": "Deepslate Ruby Ore", "item.ikgamblingplusmod.catching_egg": "Catching Egg", "profession.ikgamblingplusmod.ruby_worker": "Ruby Worker", diff --git a/src/main/resources/assets/ikgamblingplusmod/lang/tr_tr.json b/src/main/resources/assets/ikgamblingplusmod/lang/tr_tr.json new file mode 100644 index 0000000..f47ae79 --- /dev/null +++ b/src/main/resources/assets/ikgamblingplusmod/lang/tr_tr.json @@ -0,0 +1,14 @@ +{ + "item.ikgamblingplusmod.ruby": "Yakut", + "item.ikgamblingplusmod.raw_ruby": "Ham Yakut", + "item.ikgamblingplusmod.ruby_block": "Yakut Bloğu", + "item.ikgamblingplusmod.raw_ruby_block": "Ham Yakut Bloğu", + "item.ikgamblingplusmod.ruby_ore": "Yakut Cevheri", + "item.ikgamblingplusmod.ruby_deepslate_ore": "Karataş Yakut Cevheri", + "item.ikgamblingplusmod.catching_egg": "Yakalama Yumurtası", + + "profession.ikgamblingplusmod.ruby_worker": "Yakut İşçisi", + + "creativetab.ikgamblingplusmod.gambling_tab": "Gambling Plus" + +} \ No newline at end of file diff --git a/src/main/resources/assets/ikgamblingplusmod/textures/entity/zombie_villager/profession/ruby_worker.png b/src/main/resources/assets/ikgamblingplusmod/textures/entity/zombie_villager/profession/ruby_worker.png new file mode 100644 index 0000000000000000000000000000000000000000..aa9b73dca6607bbaccd5c3aea02a2b2c76c1cbeb GIT binary patch literal 1475 zcmV;!1w8tRP)Px)eMv+?RCt{2o6T<%M;M2nK{1J)`lILzbRQ|o z?s#@)-{1SbGqbZcI5;>s9ByRk&u;l^Ni_kQ=E!a|vQNk=$4w#XRk(QKM9t1_FD}+? zqZuxEJVyWb@_D_Cva+W7uX(X<{8lDo`T5bVF4#j6hCqfq9>Z`m7d#%ce4c3=j;uyo zy$a>Vn?10V$rvIuN;DF#8eyqeyrMs=2&mUaJ?aWjj=AIgLJ#wyQts>L<>}EVEs+8` zS}6j|WqXD-(Q(iOP$Idi((3A_H8*5eO z;Nalk;NY-hT7C}w_WCyx;M|#00DS!AwH?{iN*f|I`QyPO7PRz^uX}9-09Z(9JHF<% z5}*-UZVb?KUgzAIQ!Hp{77`i>ZHa&43l;SP{s6~%yO^GR2Ef>@I~6wXXhY;MkWRna zo9OB3GV;E^F9fhnfR)u1j`emi^v(bPW2W|6P5|AL0e^s{REEc~StuDgcI%F~^u=ct z5i)k`jtE@6{J(jB;Nalk;NalkV4JGX0{Y&&dEdQS`F?Ra9FktQ%Q(+%6wuFe8-ah%e4W>p1DQ2-EC6>=K| zBSp%E>MKi|L^x!eC&HoDivXRdst{Eb!_e`mdAx3yab9bzC}-CNh^mS_uPWO-7gZG* zwJ5K}SdA#t!`kb1aru0NsH!kNHP2*Rt0_YHn1P)Qk!VDb$YQcc329U4nehjUJ1^9! z*9>|-2mBtA%j*RE#czz5MbKx3z8Y;=3UE3cl3tIC{!=3?Jen}d1@OVu%gjHVpgmuZ z4^4AwO&T0Awnc%3u;%dqllLpO!IEj_^y9c@Er67eip`UXZErYL>a4@YXxs`|jse1k zx1`+ZHk&w<-|XEM0mDj2+A&TD!LSmP59gB=a;+}S6+;NPdE!4^UWJS$e(`sm9rmx z$o)V6V)X0?vDnOh*<~AX31n7P3`hA)14=fc;O%S&Ah));{c}|@a>f^nv#KfxA@GF< z@%sb1^I2V80gD$C2aT{=Z8bwI*n>duESVAj7f1Ug!0g;}B$Byg`cMhb=D+e4k;uCM zJe{3m{O;Y7*Cdgo_1o5|U@x+y+xbsEC6ifZ^y~;vVl(tjPJn=+zCqd9QOvNljTamb z2oNxr+(+wd(1sA){`p4`g16rrC6Y{4RFLlv7Sp2?=Hl-eR8yU7e1_lRGbqC&0KDOD zr=#6P!0!ei;D?pfJlgX5z8PkhHY9w0^%@eGntDns*aLu9f0SHaEB@CLMG4YBpaQTs zH%%9C@ya!X5IlJ@0|M6ao8q+scY*bZ;!3gF4;Q}v{G@!gm}BDc;mUoTs?P$hQkbVKa<*K6dbr�zP+xx3~8+ z^fWko@1E_tUERkT>0;k#`1QEEutYMmZmWTn>_(&A>^aTt2iRCa{C+>yR2O^Awm~o* z?B&RdEu^cREeXBtFUjQ#cs(wp1Yc(dNJ%2S#>=*&^pwVmW`DhPP*mLX$zV@ItHQ&! dx^vh8{{c+A6zVG*!G{0<002ovPDHLkV1o0-)3g8p literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ikgamblingplusmod/textures/entity/zombie_villager/zombie_villager.png b/src/main/resources/assets/ikgamblingplusmod/textures/entity/zombie_villager/zombie_villager.png new file mode 100644 index 0000000000000000000000000000000000000000..9bd3e23cf9fe4fbf2df16d9ca4cd0e76dc4a788a GIT binary patch literal 962 zcmV;z13mnSP)O$K2%LjV_RErZD&+wKxT?R7lPX200001bW%=J06^y0 zW&i*J;7LS5RCwC$k>_&TI246-8^EIC^=`_R*p3uSBGKOe?e>6@94B!`(!XRz9|}Qm z&PQHwc7m8|Cp+M0v-SF)$JymD_+Ie%-xUJk0+`MI0Or^0hsX8$%a@A<$hQp?{zdTk zu(?Jc(pJTbV6%RB*ley4GzhnC+t5j{`Sj^JK~tKhy=%+q5U&MUINH0y97$aw+7P=vh{ZtkfSUsGTbh(9k7(Hil-6sG$- z?+HoagNFDLffX_GtNV92!gniAN~BT+lKCQmni|RKuZfkgvPni9lUyKBQ5aPD!$f$RH)tAf>^V1zu!sj$2y;KKTiAXXCEiIny!2IN`wXh_jiEhPfX zOgU3#FbT#OVn|~cBNj1*5T?AU2&O$Yv30c8JQ^WyUj-qIV;BZZV+vJ}_Q5%)z+6JU z5Tn z5_aMqBPF9U6|bzobP^a4&m`h)K#Q@KJ#^rZk0=02D1sRmE`>9x62>GDFIkv{NZ65h z6uia3cAy?zmF)sZSeOczNg&m55U_^=0;wHi1UM9PA=cOKkRQi5x&Txl09gbEwSz#E zg$Wk&A|8U>Fzj|?07wrtkM2g0k!+f#FpH2LOHf@N3R1~SthYy=|J^=szav}b22_Eb zexm_}&nio^=M&rKA27?p&EE}676OyN0g<`reD2)bS&U(#UUzX9C(=YThj+YRzR!~L k63f|*8#iv;xbe&JKbiq>OnhU5<^TWy07*qoM6N<$f|S>pT>t<8 literal 0 HcmV?d00001 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 e1325efcf372a0d5d582da98a746648b0ea34c8b..76e84ee39ecbc918e6af71c9dda61abc883f7856 100644 GIT binary patch delta 218 zcmV<0044wL0fPdNF@L>DL_t(Ijm?m;4Z<)GMV}+P0K@=vtdJr_I%-xzO5s76fL-V) z5nWh-Dv?ZMqqDJ-6cl{vq$s-g{cQN_)Zl7xQ#;iZe6kh|G~k*AWf6R_)*az92S2IR zmq9rB+;sr-GlxY5C3p|4{p`eUR8WFjQ37x`CNj_^xMf+C)Kdw1rGh7LGltbL0B{9W zg%4)nhljTUCVj+SSfp^c`}0cyq^q;D|~=DboY}qXg|oU3ZT_Q)k~lr0Ot2L z_OZ}S8Y>5OKk;rJb3CPf^)x>B6K4;+w3(mv0>vpR@iQsyKL7v#07*qoM6N<$f&*Pv A_y7O^ diff --git a/src/main/resources/assets/ikgamblingplusmod/textures/item/ruby.png b/src/main/resources/assets/ikgamblingplusmod/textures/item/ruby.png index 0ca42b79920dfa058cecee177fed12a1c5a6558b..176bc0da342a8fc7364debdc108044d448624840 100644 GIT binary patch delta 238 zcmVR|p;<$MXo{6@)2m z(u=KF47O^s3Cm_;8XKqD9rk_u%@6#2EUaV;Z!3Q=-WOBw2H1zddPaC*!G&`GRI1$K z8Q`Tla#C1u<2}FtH{MgK4sKE>MVi=$0Ki#z>% delta 215 zcmV;|04V>L0)PULF@L&AL_t(Ijir;Z3c@fDhCjs)T`UNdK7bJDQ~2mUMIqqol&M`Z zbkM