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.
This commit is contained in:
2025-07-26 19:33:25 +03:00
parent 5a715417e9
commit 27c85f6399
40 changed files with 581 additions and 195 deletions

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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;
}
} */

View File

@@ -44,7 +44,7 @@ public class ModBlocks {
.strength(.4f)
.requiresCorrectToolForDrops()));
public static final RegistryObject<Block> RAW_DEEPSLATE_ORE = registerBlock("ruby_deepslate_ore",
public static final RegistryObject<Block> 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)

View File

@@ -1,4 +0,0 @@
package com.ismailkaygisiz.gamblingplus.datagen;
public class DataGenerators {
}

View File

@@ -1,4 +0,0 @@
package com.ismailkaygisiz.gamblingplus.datagen;
public class ModBlockLootTableProvider {
}

View File

@@ -1,4 +0,0 @@
package com.ismailkaygisiz.gamblingplus.datagen;
public class ModBlockStateProvider {
}

View File

@@ -1,4 +0,0 @@
package com.ismailkaygisiz.gamblingplus.datagen;
public class ModBlockTagProvider {
}

View File

@@ -1,4 +0,0 @@
package com.ismailkaygisiz.gamblingplus.datagen;
public class ModItemModelProvider {
}

View File

@@ -1,4 +0,0 @@
package com.ismailkaygisiz.gamblingplus.datagen;
public class ModRecipeProvider {
}

View File

@@ -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<DyeColor, Item> 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<Item> 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<Holder<Enchantment>> 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<Enchantment> 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) {

View File

@@ -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<ItemStack> 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);
}
} */

View File

@@ -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());

View File

@@ -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));
}
}
} */

View File

@@ -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",

View File

@@ -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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 962 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 B

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 B

After

Width:  |  Height:  |  Size: 279 B

View File

@@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_raw_ruby_block": {
"conditions": {
"items": [
{
"items": "ikgamblingplusmod:raw_ruby_block"
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "ikgamblingplusmod:raw_ruby"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_the_recipe",
"has_raw_ruby_block"
]
],
"rewards": {
"recipes": [
"ikgamblingplusmod:raw_ruby"
]
}
}

View File

@@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_raw_ruby": {
"conditions": {
"items": [
{
"items": "ikgamblingplusmod:raw_ruby"
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "ikgamblingplusmod:raw_ruby_block"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_the_recipe",
"has_raw_ruby"
]
],
"rewards": {
"recipes": [
"ikgamblingplusmod:raw_ruby_block"
]
}
}

View File

@@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_ruby_block": {
"conditions": {
"items": [
{
"items": "ikgamblingplusmod:ruby_block"
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "ikgamblingplusmod:ruby"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_the_recipe",
"has_ruby_block"
]
],
"rewards": {
"recipes": [
"ikgamblingplusmod:ruby"
]
}
}

View File

@@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_ruby": {
"conditions": {
"items": [
{
"items": "ikgamblingplusmod:ruby"
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "ikgamblingplusmod:ruby_block"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_the_recipe",
"has_ruby"
]
],
"rewards": {
"recipes": [
"ikgamblingplusmod:ruby_block"
]
}
}

View File

@@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_raw_ruby": {
"conditions": {
"items": [
{
"items": "ikgamblingplusmod:raw_ruby"
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "ikgamblingplusmod:ruby_from_blasting_raw_ruby"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_the_recipe",
"has_raw_ruby"
]
],
"rewards": {
"recipes": [
"ikgamblingplusmod:ruby_from_blasting_raw_ruby"
]
}
}

View File

@@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_raw_ruby": {
"conditions": {
"items": [
{
"items": "ikgamblingplusmod:raw_ruby"
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "ikgamblingplusmod:ruby_from_smelting_raw_ruby"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_the_recipe",
"has_raw_ruby"
]
],
"rewards": {
"recipes": [
"ikgamblingplusmod:ruby_from_smelting_raw_ruby"
]
}
}

View File

@@ -0,0 +1,8 @@
{
"type": "forge:add_features",
"biomes": "#minecraft:is_overworld",
"features": [
"ikgamblingplusmod:ruby_ore_placed"
],
"step": "underground_ores"
}

View File

@@ -35,7 +35,7 @@
"add": false,
"count": {
"type": "minecraft:uniform",
"max": 5.0,
"max": 4.0,
"min": 2.0
},
"function": "minecraft:set_count"

View File

@@ -31,6 +31,15 @@
{
"type": "minecraft:item",
"functions": [
{
"add": false,
"count": {
"type": "minecraft:uniform",
"max": 3.0,
"min": 1.0
},
"function": "minecraft:set_count"
},
{
"enchantment": "minecraft:fortune",
"formula": "minecraft:ore_drops",

View File

@@ -0,0 +1,11 @@
{
"type": "minecraft:crafting_shapeless",
"category": "misc",
"ingredients": [
"ikgamblingplusmod:raw_ruby_block"
],
"result": {
"id": "ikgamblingplusmod:raw_ruby",
"count": 9
}
}

View File

@@ -0,0 +1,16 @@
{
"type": "minecraft:crafting_shaped",
"category": "mics",
"key": {
"A": "ikgamblingplusmod:raw_ruby"
},
"pattern": [
"AAA",
"AAA",
"AAA"
],
"result": {
"count": 1,
"id": "ikgamblingplusmod:raw_ruby_block"
}
}

View File

@@ -1,8 +1,8 @@
{
"type": "minecraft:blasting",
"category": "misc",
"cookingtime": 100,
"experience": 0.25,
"cookingtime": 50,
"experience": 0.5,
"group": "ruby",
"ingredient": "ikgamblingplusmod:raw_ruby",
"result": {

View File

@@ -0,0 +1,27 @@
{
"feature": "ikgamblingplusmod:ruby_ore",
"placement": [
{
"type": "minecraft:count",
"count": 10
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:trapezoid",
"max_inclusive": {
"absolute": 56
},
"min_inclusive": {
"absolute": -24
}
}
},
{
"type": "minecraft:biome"
}
]
}

View File

@@ -0,0 +1,27 @@
{
"feature": "ikgamblingplusmod:ruby_ore",
"placement": [
{
"type": "minecraft:count",
"count": 10
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:uniform",
"max_inclusive": {
"absolute": 72
},
"min_inclusive": {
"above_bottom": 0
}
}
},
{
"type": "minecraft:biome"
}
]
}

View File

@@ -0,0 +1,27 @@
{
"feature": "ikgamblingplusmod:ruby_ore",
"placement": [
{
"type": "minecraft:count",
"count": 90
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:trapezoid",
"max_inclusive": {
"absolute": 384
},
"min_inclusive": {
"absolute": 80
}
}
},
{
"type": "minecraft:biome"
}
]
}

View File

@@ -0,0 +1,27 @@
{
"type": "minecraft:ore",
"config": {
"discard_chance_on_air_exposure": 0.0,
"size": 9,
"targets": [
{
"state": {
"Name": "ikgamblingplusmod:ruby_ore"
},
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:stone_ore_replaceables"
}
},
{
"state": {
"Name": "ikgamblingplusmod:ruby_deepslate_ore"
},
"target": {
"predicate_type": "minecraft:tag_match",
"tag": "minecraft:deepslate_ore_replaceables"
}
}
]
}
}

View File

@@ -0,0 +1,27 @@
{
"feature": "ikgamblingplusmod:ruby_ore",
"placement": [
{
"type": "minecraft:count",
"count": 90
},
{
"type": "minecraft:in_square"
},
{
"type": "minecraft:height_range",
"height": {
"type": "minecraft:trapezoid",
"max_inclusive": {
"absolute": 90
},
"min_inclusive": {
"absolute": -50
}
}
},
{
"type": "minecraft:biome"
}
]
}

View File

@@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_raw_ruby": {
"conditions": {
"items": [
{
"items": "ikgamblingplusmod:raw_ruby"
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "ikgamblingplusmod:ruby_from_smelting_raw_ruby"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_the_recipe",
"has_raw_ruby"
]
],
"rewards": {
"recipes": [
"ikgamblingplusmod:ruby_from_smelting_raw_ruby"
]
}
}

View File

@@ -1,6 +0,0 @@
{
"replace": false,
"values": [
"ikgamblingplusmod:ruby_deepslate_ore"
]
}

View File

@@ -1,6 +1,7 @@
{
"replace": false,
"values": [
"ikgamblingplusmod:ruby_deepslate_ore",
"ikgamblingplusmod:ruby_block",
"ikgamblingplusmod:raw_ruby_block",
"ikgamblingplusmod:ruby_ore"