Skip to content

Commit

Permalink
update to 1.21
Browse files Browse the repository at this point in the history
  • Loading branch information
Greymerk committed Jun 13, 2024
1 parent 6a6fdcd commit f30649d
Show file tree
Hide file tree
Showing 30 changed files with 268 additions and 234 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ plugins {
id 'maven-publish'
}

version = "${project.mod_version}beta-${project.minecraft_version}-fabric"
version = "${project.mod_version}-${project.minecraft_version}-fabric"
group = project.maven_group

base {
Expand Down
12 changes: 6 additions & 6 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ org.gradle.parallel=true

# Fabric Properties
# check these on https://fabricmc.net/develop
minecraft_version=1.20.6
yarn_mappings=1.20.6+build.1
loader_version=0.15.10
minecraft_version=1.21
yarn_mappings=1.21+build.1
loader_version=0.15.11

#Fabric api
fabric_version=0.97.8+1.20.6
# Fabric API
fabric_version=0.100.1+1.21

# Mod Properties
mod_version=2.0.5
mod_version=2.0.6
maven_group=com.greymerk
archives_base_name=RoguelikeDungeons
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public static void set(IWorldEditor editor, Random rand, Coord origin, Cardinal
ChiseledBookshelfBlockEntity shelf = (ChiseledBookshelfBlockEntity)be;

getSlots(rand).forEach(i -> {
shelf.setStack(i, Enchant.getBook(rand, Difficulty.fromY(origin.getY())));
shelf.setStack(i, Enchant.getBook(editor.getRegistryManager(), rand, Difficulty.fromY(origin.getY())));
});

shelf.markDirty();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob)
mob.setSlot(EquipmentSlot.OFFHAND, TippedArrow.getHarmful(rand, 1));
}

mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getBow(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)));
mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getBow(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)));
MonsterProfile.get(MonsterProfile.TALLMOB).addEquipment(world, rand, diff, mob);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob)

MonsterProfile.get(MonsterProfile.VILLAGER).addEquipment(world, rand, diff, mob);

ItemStack weapon = ItemNovelty.getItem(ItemNovelty.ASHLEA);
ItemStack weapon = ItemNovelty.getItem(world.getRegistryManager(), ItemNovelty.ASHLEA);
mob.setSlot(EquipmentSlot.MAINHAND, weapon);

for(EquipmentSlot slot : new EquipmentSlot[]{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.registry.DynamicRegistryManager;
import net.minecraft.util.math.random.Random;
import net.minecraft.world.World;

Expand All @@ -24,12 +25,12 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob)
MonsterProfile.get(MonsterProfile.VILLAGER).addEquipment(world, rand, diff, mob);
}

mob.setSlot(EquipmentSlot.MAINHAND, toy(rand));
mob.setSlot(EquipmentSlot.MAINHAND, toy(world.getRegistryManager(), rand));
}

private ItemStack toy(Random rand) {
private ItemStack toy(DynamicRegistryManager reg, Random rand) {

if(rand.nextInt(100) == 0) return ItemNovelty.getItem(ItemNovelty.VECHS);
if(rand.nextInt(100) == 0) return ItemNovelty.getItem(reg, ItemNovelty.VECHS);

WeightedRandomizer<ItemStack> randomizer = new WeightedRandomizer<ItemStack>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob)
mob.setEffect(PotionEffect.getInstance(PotionEffect.FIRERESIST, 1, 60 * 60));
mob.setEffect(PotionEffect.getInstance(PotionEffect.SPEED, 1, 60 * 60));

mob.setSlot(EquipmentSlot.MAINHAND, ItemNovelty.getItem(ItemNovelty.BURNING));
mob.setSlot(EquipmentSlot.MAINHAND, ItemNovelty.getItem(world.getRegistryManager(), ItemNovelty.BURNING));

for(EquipmentSlot slot : new EquipmentSlot[]{
EquipmentSlot.HEAD,
Expand All @@ -39,7 +39,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob)
EquipmentSlot.FEET
}){
ItemStack item = ItemArmour.get(rand, Slot.getSlot(slot), Quality.WOOD);
Enchant.enchantItem(world.getEnabledFeatures(), rand, item, 20);
Enchant.enchantItem(world.getRegistryManager(), world.getEnabledFeatures(), rand, item, 20);
ItemArmour.dyeArmor(item, 200, 50, 52); // dark red
Trim.set(world.getRegistryManager(), item, TrimPattern.RIB, TrimMaterial.GOLD);
mob.setSlot(slot, item);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class ProfileHusk implements IMonsterProfile {
@Override
public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) {
mob.setMobClass(MobType.HUSK, false);
ItemStack weapon = ItemTool.getRandom(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff));
ItemStack weapon = ItemTool.getRandom(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff));
mob.setSlot(EquipmentSlot.MAINHAND, weapon);
mob.setSlot(EquipmentSlot.OFFHAND, Shield.get(world.getRegistryManager(), rand));
MonsterProfile.get(MonsterProfile.TALLMOB).addEquipment(world, rand, diff, mob);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class ProfileJohnny implements IMonsterProfile {
@Override
public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) {
mob.setMobClass(MobType.VINDICATOR, false);
mob.setSlot(EquipmentSlot.MAINHAND, ItemSpecialty.getRandomItem(Equipment.AXE, rand, Difficulty.HARDEST));
mob.setSlot(EquipmentSlot.MAINHAND, ItemSpecialty.getRandomItem(world.getRegistryManager(), Equipment.AXE, rand, Difficulty.HARDEST));
MonsterProfile.get(MonsterProfile.TALLMOB).addEquipment(world, rand, Difficulty.HARD, mob);
mob.setName("Johnny");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob)
mob.setMobClass(MobType.STRAY, false);

mob.setSlot(EquipmentSlot.OFFHAND, TippedArrow.get(PotionItem.HARM));
mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getBow(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)));
mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getBow(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)));

for(EquipmentSlot slot : new EquipmentSlot[]{
EquipmentSlot.HEAD,
Expand All @@ -37,7 +37,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob)
EquipmentSlot.FEET
}){
ItemStack item = ItemArmour.get(rand, Slot.getSlot(slot), Quality.WOOD);
Enchant.enchantItem(world.getEnabledFeatures(), rand, item, 20);
Enchant.enchantItem(world.getRegistryManager(), world.getEnabledFeatures(), rand, item, 20);
ItemArmour.dyeArmor(item, 51, 0, 102); // dark blue
Trim.set(world.getRegistryManager(), item, TrimPattern.VEX, TrimMaterial.GOLD);
mob.setSlot(slot, item);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class ProfilePigman implements IMonsterProfile {
@Override
public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) {
mob.setMobClass(MobType.PIGZOMBIE, true);
ItemStack weapon = ItemWeapon.getSword(world.getEnabledFeatures(), rand, diff, true);
ItemStack weapon = ItemWeapon.getSword(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, true);
mob.setSlot(EquipmentSlot.MAINHAND, weapon);
mob.setSlot(EquipmentSlot.OFFHAND, Shield.get(world.getRegistryManager(), rand));
MonsterProfile.get(MonsterProfile.TALLMOB).addEquipment(world, rand, diff, mob);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob)
mob.setMobClass(MobType.STRAY, false);

mob.setSlot(EquipmentSlot.OFFHAND, TippedArrow.get(Potions.STRONG_POISON));
mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getBow(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)));
mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getBow(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)));

for(EquipmentSlot slot : new EquipmentSlot[]{
EquipmentSlot.HEAD,
Expand All @@ -37,7 +37,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob)
EquipmentSlot.FEET
}){
ItemStack item = ItemArmour.get(rand, Slot.getSlot(slot), Quality.WOOD);
Enchant.enchantItem(world.getEnabledFeatures(), rand, item, 20);
Enchant.enchantItem(world.getRegistryManager(), world.getEnabledFeatures(), rand, item, 20);
ItemArmour.dyeArmor(item, 178, 255, 102); //bright lime green
Trim.set(world.getRegistryManager(), item, TrimPattern.WILD, TrimMaterial.REDSTONE);
mob.setSlot(slot, item);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class ProfileRleahy implements IMonsterProfile {

@Override
public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) {
ItemStack weapon = ItemNovelty.getItem(ItemNovelty.RLEAHY);
ItemStack weapon = ItemNovelty.getItem(world.getRegistryManager(), ItemNovelty.RLEAHY);
mob.setSlot(EquipmentSlot.MAINHAND, weapon);
mob.setSlot(EquipmentSlot.OFFHAND, Shield.get(world.getRegistryManager(), rand));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class ProfileSwordsman implements IMonsterProfile {

@Override
public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) {
ItemStack weapon = ItemWeapon.getSword(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff));
ItemStack weapon = ItemWeapon.getSword(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff));

mob.setSlot(EquipmentSlot.MAINHAND, weapon);
mob.setSlot(EquipmentSlot.OFFHAND, Shield.get(world.getRegistryManager(), rand));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class ProfileVillager implements IMonsterProfile {
@Override
public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) {
mob.setMobClass(MobType.ZOMBIEVILLAGER, false);
ItemStack weapon = ItemTool.getRandom(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff));
ItemStack weapon = ItemTool.getRandom(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff));
mob.setSlot(EquipmentSlot.MAINHAND, weapon);
MonsterProfile.get(MonsterProfile.TALLMOB).addEquipment(world, rand, diff, mob);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class ProfileVindicator implements IMonsterProfile {
@Override
public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) {
mob.setMobClass(MobType.VINDICATOR, true);
mob.setSlot(EquipmentSlot.MAINHAND, ItemSpecialty.getRandomItem(Equipment.AXE, rand, diff));
mob.setSlot(EquipmentSlot.MAINHAND, ItemSpecialty.getRandomItem(world.getRegistryManager(), Equipment.AXE, rand, diff));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class ProfileWither implements IMonsterProfile {
@Override
public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) {
mob.setMobClass(MobType.WITHERSKELETON, false);
mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getSword(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)));
mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getSword(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)));
MonsterProfile.get(MonsterProfile.TALLMOB).addEquipment(world, rand, diff, mob);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob)
return;
}

ItemStack weapon = ItemTool.getRandom(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff));
ItemStack weapon = ItemTool.getRandom(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff));
mob.setSlot(EquipmentSlot.MAINHAND, weapon);
MonsterProfile.get(MonsterProfile.TALLMOB).addEquipment(world, rand, diff, mob);
}
Expand Down
50 changes: 32 additions & 18 deletions src/main/java/com/greymerk/roguelike/treasure/loot/Enchant.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.greymerk.roguelike.treasure.loot;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

import com.greymerk.roguelike.dungeon.Difficulty;

Expand All @@ -9,7 +11,10 @@
import net.minecraft.enchantment.EnchantmentLevelEntry;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.registry.Registries;
import net.minecraft.registry.DynamicRegistryManager;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.entry.RegistryEntry;
import net.minecraft.resource.featuretoggle.FeatureSet;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.random.Random;
Expand Down Expand Up @@ -41,11 +46,12 @@ public enum Enchant {

public static final List<Enchant> cursed = List.of(CURSE_OF_VANISHING, CURSE_OF_BINDING);

public static Enchantment getEnchant(Enchant type){
public static RegistryEntry<Enchantment> getEnchant(DynamicRegistryManager reg, Enchant type){
Registry<Enchantment> enchantments = reg.get(RegistryKeys.ENCHANTMENT);
String ns = "minecraft";
String path = getName(type);
Identifier id = new Identifier(ns, path);
return Registries.ENCHANTMENT.get(id);
Identifier id = Identifier.of(ns, path);
return enchantments.getEntry(id).get();
}

public static String getName(Enchant type){
Expand Down Expand Up @@ -156,13 +162,13 @@ public static int getLevel(Random rand, Difficulty diff) {
}
}

public static ItemStack enchantItem(FeatureSet features, Random rand, ItemStack item, int enchantLevel) {

public static ItemStack enchantItem(DynamicRegistryManager reg, FeatureSet features, Random rand, ItemStack item, int enchantLevel) {
if (item == null ) return null;

List<EnchantmentLevelEntry> enchants = null;
try{
enchants = EnchantmentHelper.generateEnchantments(features, rand, item, enchantLevel, false);
enchants = EnchantmentHelper.generateEnchantments(rand, item, enchantLevel, streamEntries(reg));
} catch(NullPointerException e){
throw e;
}
Expand All @@ -181,35 +187,43 @@ public static ItemStack enchantItem(FeatureSet features, Random rand, ItemStack
return item;
}

public static ItemStack getBook(FeatureSet features, Random rand, Difficulty diff) {
public static Stream<RegistryEntry<Enchantment>> streamEntries(DynamicRegistryManager reg){
List<RegistryEntry<Enchantment>> enchants = new ArrayList<RegistryEntry<Enchantment>>();
List.of(Enchant.values()).forEach(e -> {
enchants.add(Enchant.getEnchant(reg, e));
});
return enchants.stream();
}

public static ItemStack getBook(DynamicRegistryManager reg, FeatureSet features, Random rand, Difficulty diff) {
ItemStack book = new ItemStack(Items.BOOK);
int level = getLevel(rand, diff);
return enchantItem(features, rand, book, level);
return enchantItem(reg, features, rand, book, level);
}

public static ItemStack getBook(Random rand, Enchant type, Difficulty diff) {
public static ItemStack getBook(DynamicRegistryManager reg, Random rand, Enchant type, Difficulty diff) {
ItemStack book = new ItemStack(Items.ENCHANTED_BOOK);
book.addEnchantment(Enchant.getEnchant(type), Enchant.getRandomRank(rand, type, diff));
book.addEnchantment(Enchant.getEnchant(reg, type), Enchant.getRandomRank(rand, type, diff));
return book;
}

public static ItemStack getBook(Random rand, Difficulty diff) {
public static ItemStack getBook(DynamicRegistryManager reg, Random rand, Difficulty diff) {

if(diff == Difficulty.HARDEST && rand.nextInt(4) == 0) {
Enchant type = endgame.get(rand.nextInt(endgame.size()));
return Enchant.getBook(rand, type, diff);
return Enchant.getBook(reg, rand, type, diff);
}

if(rand.nextInt(6) == 0) return Enchant.getBook(Enchant.MENDING);
if(rand.nextInt(6) == 0) return Enchant.getBook(reg, Enchant.MENDING);

Enchant type = common.get(rand.nextInt(common.size()));
return Enchant.getBook(rand, type, diff);
return Enchant.getBook(reg, rand, type, diff);
}

public static ItemStack getBook(Enchant type) {
Enchantment e = getEnchant(type);
public static ItemStack getBook(DynamicRegistryManager reg, Enchant type) {
RegistryEntry<Enchantment> e = getEnchant(reg, type);
ItemStack item = new ItemStack(Items.ENCHANTED_BOOK);
item.addEnchantment(e, e.getMaxLevel());
item.addEnchantment(e, Enchant.getMaxRank(type));
return item;
}
}
14 changes: 7 additions & 7 deletions src/main/java/com/greymerk/roguelike/treasure/loot/Loot.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,19 +63,19 @@ public static IWeighted<ItemStack> getProvider(Loot type, Difficulty diff, IWorl
DynamicRegistryManager reg = editor.getRegistryManager();

switch(type){
case WEAPON: return new ItemWeapon(features, 0, diff);
case WEAPON: return new ItemWeapon(reg, features, 0, diff);
case ARMOUR: return new ItemArmour(0, diff, features, reg);
case BLOCK: return new ItemBlock(0, diff);
case JUNK: return new ItemJunk(0, diff);
case JUNK: return new ItemJunk(reg, 0, diff);
case ORE: return new ItemOre(0, diff);
case TOOL: return new ItemTool(features, 0, diff);
case TOOL: return new ItemTool(reg, features, 0, diff);
case POTION: return new ItemPotion(0, diff);
case BREWING: return new ItemBrewing(0, diff);
case FOOD: return new ItemFood(0, diff);
case FOOD: return new ItemFood(reg, 0, diff);
case ENCHANTING: return new ItemEnchanting(0, diff);
case SUPPLY: return new ItemSupply(0, diff);
case MUSIC: return new ItemMusic(0, diff);
case SPECIAL: return new ItemSpecialty(0, diff);
case SPECIAL: return new ItemSpecialty(reg, 0, diff);
case PRECIOUS: return new ItemPrecious(0, diff);
}

Expand All @@ -84,7 +84,7 @@ public static IWeighted<ItemStack> getProvider(Loot type, Difficulty diff, IWorl

public static ItemStack getEquipmentBySlot(FeatureSet features, DynamicRegistryManager reg, Random rand, EquipmentSlot slot, Difficulty diff, boolean enchant){
if(slot == EquipmentSlot.MAINHAND){
return ItemWeapon.getRandom(features, rand, diff, enchant);
return ItemWeapon.getRandom(reg, features, rand, diff, enchant);
}

return ItemArmour.getRandom(features, reg, rand, diff, Slot.getSlot(slot), enchant);
Expand All @@ -93,7 +93,7 @@ public static ItemStack getEquipmentBySlot(FeatureSet features, DynamicRegistryM
public static ItemStack getEquipmentBySlot(FeatureSet features, DynamicRegistryManager reg, Random rand, Slot slot, Difficulty diff, boolean enchant){

if(slot == Slot.WEAPON){
return ItemWeapon.getRandom(features, rand, diff, enchant);
return ItemWeapon.getRandom(reg, features, rand, diff, enchant);
}

return ItemArmour.getRandom(features, reg, rand, diff, slot, enchant);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,16 @@ public static ItemStack getRandom(FeatureSet features, DynamicRegistryManager re
public static ItemStack getRandom(FeatureSet features, DynamicRegistryManager reg, Random rand, Difficulty diff, Slot slot, boolean enchant){
if(enchant && rand.nextInt(20 + (Difficulty.value(diff) * 10)) == 0){
switch(slot){
case HEAD: return ItemSpecialty.getRandomItem(Equipment.HELMET, rand, diff);
case CHEST: return ItemSpecialty.getRandomItem(Equipment.CHEST, rand, diff);
case LEGS: return ItemSpecialty.getRandomItem(Equipment.LEGS, rand, diff);
case FEET: return ItemSpecialty.getRandomItem(Equipment.FEET, rand, diff);
case HEAD: return ItemSpecialty.getRandomItem(reg, Equipment.HELMET, rand, diff);
case CHEST: return ItemSpecialty.getRandomItem(reg, Equipment.CHEST, rand, diff);
case LEGS: return ItemSpecialty.getRandomItem(reg, Equipment.LEGS, rand, diff);
case FEET: return ItemSpecialty.getRandomItem(reg, Equipment.FEET, rand, diff);
default: return new ItemStack(Items.STICK);
}
}

ItemStack item = get(rand, slot, Quality.getArmourQuality(rand, diff));
if(enchant) Enchant.enchantItem(features, rand, item, Enchant.getLevel(rand, diff));
if(enchant) Enchant.enchantItem(reg, features, rand, item, Enchant.getLevel(rand, diff));
Trim.addRandom(reg, item, rand);
return item;
}
Expand Down
Loading

0 comments on commit f30649d

Please sign in to comment.