diff --git a/build.gradle b/build.gradle index 0f608df271..8b07b4bde6 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ apply plugin: 'net.minecraftforge.gradle' apply plugin: 'eclipse' apply plugin: 'maven-publish' -version = '1.16.5-1.2.2' +version = '1.16.5-1.3' group = 'com.cannolicatfish' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'rankine' diff --git a/src/main/java/com/cannolicatfish/rankine/ProjectRankine.java b/src/main/java/com/cannolicatfish/rankine/ProjectRankine.java index 868bc77e0c..b444e24cbe 100644 --- a/src/main/java/com/cannolicatfish/rankine/ProjectRankine.java +++ b/src/main/java/com/cannolicatfish/rankine/ProjectRankine.java @@ -1,5 +1,6 @@ package com.cannolicatfish.rankine; +import com.cannolicatfish.rankine.blocks.alloys.AlloyBlockTile; import com.cannolicatfish.rankine.blocks.crucible.CrucibleContainer; import com.cannolicatfish.rankine.blocks.crucible.CrucibleTile; import com.cannolicatfish.rankine.blocks.evaporationtower.EvaporationTowerContainer; @@ -133,6 +134,7 @@ private void LoadComplete(FMLLoadCompleteEvent event) { @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) public static class RegistryEvents { + @SubscribeEvent @OnlyIn(Dist.CLIENT) public static void onItemColorRegistry(final ColorHandlerEvent.Item event) { @@ -219,6 +221,7 @@ public static void onRecipeSerializersRegistry(final RegistryEvent.Register event) { @SubscribeEvent public static void registerEnchantments(final RegistryEvent.Register event) { + final EquipmentSlotType[] ARMOR_SLOTS = new EquipmentSlotType[]{EquipmentSlotType.HEAD, EquipmentSlotType.CHEST, EquipmentSlotType.LEGS, EquipmentSlotType.FEET}; + event.getRegistry().register(new PunctureEnchantment(Enchantment.Rarity.COMMON, EquipmentSlotType.MAINHAND).setRegistryName(ProjectRankine.MODID,"puncture")); event.getRegistry().register(new SwingEnchantment(Enchantment.Rarity.COMMON, EquipmentSlotType.MAINHAND).setRegistryName(ProjectRankine.MODID,"swing")); event.getRegistry().register(new DazeEnchantment(Enchantment.Rarity.COMMON, EquipmentSlotType.MAINHAND).setRegistryName(ProjectRankine.MODID,"daze")); @@ -419,6 +425,7 @@ public static void registerEnchantments(final RegistryEvent.Register 0) { + TileEntity tileentity = worldIn.getTileEntity(pos); + INBT nbt = AlloyItem.getComposition(stack).getCompound(0).get("comp"); + if (tileentity instanceof AlloyBlockTile && nbt != null) { + ((AlloyBlockTile)tileentity).setComp(nbt.getString()); + } + } + super.onBlockPlacedBy(worldIn, pos, state, placer, stack); + } +/* + public void onBlockHarvested(World worldIn, BlockPos pos, BlockState state, PlayerEntity player) { + TileEntity tileentity = worldIn.getTileEntity(pos); + if (tileentity instanceof AlloyBlockTile) { + AlloyBlockTile alloyBlockTile = (AlloyBlockTile)tileentity; + if (!worldIn.isRemote && !player.isCreative() && canHarvestBlock(state,worldIn,pos,player)) { + //ItemStack itemstack = getColoredItemStack(this.getColor()); + ItemStack itemstack = new ItemStack(this); + String composition = alloyBlockTile.getComp(); + System.out.println(composition); + if (!composition.isEmpty()) { + AlloyItem.addAlloy(itemstack,new AlloyData(composition)); + } + + ItemEntity itementity = new ItemEntity(worldIn, (double)pos.getX() + 0.5D, (double)pos.getY() + 0.5D, (double)pos.getZ() + 0.5D, itemstack); + itementity.setDefaultPickupDelay(); + worldIn.addEntity(itementity); + } + } + + super.onBlockHarvested(worldIn, pos, state, player); + }*/ +} diff --git a/src/main/java/com/cannolicatfish/rankine/blocks/alloys/AlloyBlockTile.java b/src/main/java/com/cannolicatfish/rankine/blocks/alloys/AlloyBlockTile.java new file mode 100644 index 0000000000..077792b69b --- /dev/null +++ b/src/main/java/com/cannolicatfish/rankine/blocks/alloys/AlloyBlockTile.java @@ -0,0 +1,40 @@ +package com.cannolicatfish.rankine.blocks.alloys; + +import net.minecraft.block.BlockState; +import net.minecraft.inventory.ItemStackHelper; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.NonNullList; +import net.minecraftforge.common.ForgeHooks; + +import static com.cannolicatfish.rankine.init.RankineBlocks.ALLOY_BLOCK_TILE; + +public class AlloyBlockTile extends TileEntity { + public String comp = ""; + public AlloyBlockTile() { + super(ALLOY_BLOCK_TILE); + } + + @Override + public void read(BlockState state, CompoundNBT nbt) { + super.read(state, nbt); + this.comp = nbt.getString("comp"); + } + + @Override + public CompoundNBT write(CompoundNBT compound) { + super.write(compound); + compound.putString("comp", this.comp); + return compound; + } + + public String getComp() { + return comp; + } + + public void setComp(String s) { + this.comp = s; + } +} diff --git a/src/main/java/com/cannolicatfish/rankine/client/integration/jei/JEIRankinePlugin.java b/src/main/java/com/cannolicatfish/rankine/client/integration/jei/JEIRankinePlugin.java index c0d1a1bb7d..435a6a9c3c 100644 --- a/src/main/java/com/cannolicatfish/rankine/client/integration/jei/JEIRankinePlugin.java +++ b/src/main/java/com/cannolicatfish/rankine/client/integration/jei/JEIRankinePlugin.java @@ -51,6 +51,7 @@ public void registerRecipes(@Nonnull IRecipeRegistration registry) { registry.addRecipes(RankineRecipes.getEvaporationRecipes(), EvaporationRecipeCategory.UID); registry.addRecipes(rankineJEIRecipes.getCrushingRecipes(), CrushingRecipeCategory.UID); registry.addRecipes(rankineJEIRecipes.getAlloyingRecipes(), AlloyingRecipeCategory.UID); + registry.addRecipes(rankineJEIRecipes.getElementRecipes(), ElementRecipeCategory.UID); registry.addIngredientInfo(new ItemStack(RankineItems.COKE.get()), VanillaTypes.ITEM, "Coke can be obtained by cooking Bituminous Coal Blocks in a beehive oven.", "See Beehive Oven Pit for more details."); registry.addIngredientInfo(new ItemStack(RankineItems.QUICKLIME.get()), VanillaTypes.ITEM, "Quicklime can be obtained by cooking Limestone in a beehive oven.", @@ -83,6 +84,7 @@ public void registerCategories(IRecipeCategoryRegistration registry) { registry.addRecipeCategories(new CrushingRecipeCategory(guiHelper)); registry.addRecipeCategories(new AlloyingRecipeCategory(guiHelper)); registry.addRecipeCategories(new SluicingRecipeCategory(guiHelper)); + registry.addRecipeCategories(new ElementRecipeCategory(guiHelper)); registry.addRecipeCategories(new EvaporationRecipeCategory(guiHelper)); } @@ -96,6 +98,7 @@ public void registerRecipeCatalysts(IRecipeCatalystRegistration registry) { registry.addRecipeCatalyst(new ItemStack(RankineBlocks.PISTON_CRUSHER.get()), CrushingRecipeCategory.UID); registry.addRecipeCatalyst(new ItemStack(RankineBlocks.GYRATORY_CRUSHER.get()), CrushingRecipeCategory.UID); registry.addRecipeCatalyst(new ItemStack(RankineItems.STEEL_GOLD_PAN.get()), SluicingRecipeCategory.UID); + registry.addRecipeCatalyst(new ItemStack(RankineItems.ELEMENT_INDEXER.get()), ElementRecipeCategory.UID); registry.addRecipeCatalyst(new ItemStack(RankineBlocks.EVAPORATION_TOWER.get()), EvaporationRecipeCategory.UID); } diff --git a/src/main/java/com/cannolicatfish/rankine/client/integration/jei/RankineJEIRecipes.java b/src/main/java/com/cannolicatfish/rankine/client/integration/jei/RankineJEIRecipes.java index ff122b8cd5..9ddf347901 100644 --- a/src/main/java/com/cannolicatfish/rankine/client/integration/jei/RankineJEIRecipes.java +++ b/src/main/java/com/cannolicatfish/rankine/client/integration/jei/RankineJEIRecipes.java @@ -1,10 +1,7 @@ package com.cannolicatfish.rankine.client.integration.jei; import com.cannolicatfish.rankine.init.RankineRecipeTypes; -import com.cannolicatfish.rankine.recipe.AlloyingRecipe; -import com.cannolicatfish.rankine.recipe.BeehiveOvenRecipe; -import com.cannolicatfish.rankine.recipe.CrushingRecipe; -import com.cannolicatfish.rankine.recipe.SluicingRecipe; +import com.cannolicatfish.rankine.recipe.*; import mezz.jei.api.recipe.category.IRecipeCategory; import net.minecraft.client.Minecraft; import net.minecraft.client.world.ClientWorld; @@ -41,6 +38,10 @@ public List getSluicingRecipes() { return recipeManager.getRecipesForType(RankineRecipeTypes.SLUICING); } + public List getElementRecipes() { + return recipeManager.getRecipesForType(RankineRecipeTypes.ELEMENT); + } + public static void checkNotNull(@Nullable T object, String name) { if (object == null) { throw new NullPointerException(name + " must not be null."); diff --git a/src/main/java/com/cannolicatfish/rankine/client/integration/jei/categories/ElementRecipeCategory.java b/src/main/java/com/cannolicatfish/rankine/client/integration/jei/categories/ElementRecipeCategory.java new file mode 100644 index 0000000000..d79c65bc24 --- /dev/null +++ b/src/main/java/com/cannolicatfish/rankine/client/integration/jei/categories/ElementRecipeCategory.java @@ -0,0 +1,125 @@ +package com.cannolicatfish.rankine.client.integration.jei.categories; + +import com.cannolicatfish.rankine.ProjectRankine; +import com.cannolicatfish.rankine.init.RankineBlocks; +import com.cannolicatfish.rankine.init.RankineItems; +import com.cannolicatfish.rankine.recipe.ElementRecipe; +import com.google.common.collect.ImmutableList; +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.systems.RenderSystem; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.IRecipeLayout; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.ingredients.IIngredients; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.resources.I18n; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Util; +import net.minecraft.util.text.StringTextComponent; +import org.lwjgl.opengl.GL11; + +import java.awt.*; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Locale; + +public class ElementRecipeCategory implements IRecipeCategory { + + public static ResourceLocation UID = new ResourceLocation(ProjectRankine.MODID, "element"); + private final IDrawable background; + private final String localizedName; + private final IDrawable overlay; + private final IDrawable icon; + + public ElementRecipeCategory(IGuiHelper guiHelper) { + background = guiHelper.createBlankDrawable(145, 125); + localizedName = I18n.format("rankine.jei.element"); + overlay = guiHelper.createDrawable(new ResourceLocation(ProjectRankine.MODID, "textures/gui/element_jei.png"), + 0, 15, 140, 120); + icon = guiHelper.createDrawableIngredient(new ItemStack(RankineItems.ELEMENT_INDEXER.get())); + } + + @Override + public ResourceLocation getUid() { + return UID; + } + + @Override + public Class getRecipeClass() { + return ElementRecipe.class; + } + + @Override + public String getTitle() { + return localizedName; + } + + @Override + public IDrawable getBackground() { + return background; + } + + @Override + public IDrawable getIcon() { + return icon; + } + + @Override + public void draw(ElementRecipe recipe, MatrixStack ms, double mouseX, double mouseY) { + FontRenderer font = Minecraft.getInstance().fontRenderer; + RenderSystem.enableAlphaTest(); + RenderSystem.enableBlend(); + overlay.draw(ms, 0, 4); + RenderSystem.disableBlend(); + RenderSystem.disableAlphaTest(); + + String name = recipe.getName().toUpperCase(Locale.ROOT); + DecimalFormat df = Util.make(new DecimalFormat("##.##"), (p_234699_0_) -> { + p_234699_0_.setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.ROOT)); + }); + float p = recipe.getElectrodePotential(); + String e = "Electrode Potential: " + (p > 0 ? "+" : "") + df.format(recipe.getElectrodePotential())+"V"; + + font.drawString(ms,String.valueOf(recipe.getAtomicNumber()),60, 10,0x000000); + font.drawString(ms,String.valueOf(recipe.getSymbol()),60, 20,0x000000); + font.drawString(ms,name,(float)(70 - font.getStringWidth(name) / 2),40,0x000000); + font.drawString(ms,e,(float)(70 - font.getStringWidth(e) / 2),50,0x000000); + font.drawString(ms,"Items:",(float)(70 - font.getStringWidth("Items:") / 2),70,0x000000); + } + + + @Override + public void setIngredients(ElementRecipe recipe, IIngredients iIngredients) { + ImmutableList.Builder> builder = ImmutableList.builder(); + for (Ingredient i : recipe.getIngredients()) { + builder.add(Arrays.asList(i.getMatchingStacks())); + } + iIngredients.setInputLists(VanillaTypes.ITEM, builder.build()); + iIngredients.setOutputs(VanillaTypes.ITEM, Collections.singletonList(recipe.getRecipeOutput())); + } + + @Override + public void setRecipe(IRecipeLayout recipeLayout, ElementRecipe recipe, IIngredients ingredients) { + int index = 0, posX = 23; + + for (int i = 0; i < ingredients.getInputs(VanillaTypes.ITEM).size(); i++) { + int floor = Math.floorDiv(i,7); + recipeLayout.getItemStacks().init(index + i, true, (index + i - (6*floor)) * 18 + 13, 80 + (16*floor)); + recipeLayout.getItemStacks().set(index + i, ingredients.getInputs(VanillaTypes.ITEM).get(i)); + } + recipeLayout.getItemStacks().addTooltipCallback((i, b, stack, list) -> { + DecimalFormat df = Util.make(new DecimalFormat("##.##"), (p_234699_0_) -> { + p_234699_0_.setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.ROOT)); + }); + list.add(new StringTextComponent("Material count: " + df.format(recipe.getMaterialCount(stack.getItem())))); + }); + } +} diff --git a/src/main/java/com/cannolicatfish/rankine/enchantment/GuardEnchantment.java b/src/main/java/com/cannolicatfish/rankine/enchantment/GuardEnchantment.java new file mode 100644 index 0000000000..59af080f0c --- /dev/null +++ b/src/main/java/com/cannolicatfish/rankine/enchantment/GuardEnchantment.java @@ -0,0 +1,21 @@ +package com.cannolicatfish.rankine.enchantment; + +import com.cannolicatfish.rankine.init.RankineEnchantmentTypes; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentType; +import net.minecraft.inventory.EquipmentSlotType; + +public class GuardEnchantment extends Enchantment { + + public GuardEnchantment(Enchantment.Rarity p_i46721_1_, EquipmentSlotType... p_i46721_2_) { + super(p_i46721_1_, EnchantmentType.ARMOR, p_i46721_2_); + } + + public int getMinEnchantability(int enchantmentLevel) { + return 10 * enchantmentLevel; + } + + public int getMaxEnchantability(int enchantmentLevel) { + return this.getMinEnchantability(enchantmentLevel) + 30; + } +} diff --git a/src/main/java/com/cannolicatfish/rankine/enchantment/PryingEnchantment.java b/src/main/java/com/cannolicatfish/rankine/enchantment/PryingEnchantment.java new file mode 100644 index 0000000000..63e59d1042 --- /dev/null +++ b/src/main/java/com/cannolicatfish/rankine/enchantment/PryingEnchantment.java @@ -0,0 +1,42 @@ +package com.cannolicatfish.rankine.enchantment; + +import com.cannolicatfish.rankine.init.Config; +import com.cannolicatfish.rankine.init.RankineEnchantmentTypes; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.item.ItemStack; + +public class PryingEnchantment extends Enchantment { + public PryingEnchantment(Enchantment.Rarity p_i46721_1_, EquipmentSlotType... p_i46721_2_) { + super(p_i46721_1_, RankineEnchantmentTypes.CROWBAR, p_i46721_2_); + } + + public int getMinEnchantability(int p_77321_1_) { + return 1 + 10 * (p_77321_1_ - 1); + } + + public int getMaxEnchantability(int p_223551_1_) { + return super.getMinEnchantability(p_223551_1_) + 50; + } + + public int getMaxLevel() { + return 3; + } + + @Override + public void onEntityDamaged(LivingEntity user, Entity target, int level) { + if (target instanceof LivingEntity && (!(target instanceof PlayerEntity) || Config.GENERAL.PLAYER_PRYING_ENCHANTMENT.get())) + { + int player = target instanceof PlayerEntity ? 1 : 0; + LivingEntity ent = (LivingEntity) target; + if (ent.hasItemInSlot(EquipmentSlotType.MAINHAND) && ent.getEntityWorld().getRandom().nextFloat() <= Math.pow(2f,level + 2 - ent.getItemStackFromSlot(EquipmentSlotType.MAINHAND).getRarity().ordinal() - player)/100) { + + ent.entityDropItem(ent.getItemStackFromSlot(EquipmentSlotType.MAINHAND)); + ent.setItemStackToSlot(EquipmentSlotType.MAINHAND,ItemStack.EMPTY); + } + } + } +} diff --git a/src/main/java/com/cannolicatfish/rankine/events/RankineEventHandler.java b/src/main/java/com/cannolicatfish/rankine/events/RankineEventHandler.java index c6b3091c9d..6f0741b60d 100644 --- a/src/main/java/com/cannolicatfish/rankine/events/RankineEventHandler.java +++ b/src/main/java/com/cannolicatfish/rankine/events/RankineEventHandler.java @@ -61,7 +61,6 @@ import net.minecraftforge.event.entity.living.LivingDamageEvent; import net.minecraftforge.event.entity.living.LivingEvent; import net.minecraftforge.event.entity.living.LivingSetAttackTargetEvent; -import net.minecraftforge.event.entity.living.PotionEvent; import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; @@ -216,6 +215,30 @@ public static void addVillagerTrades(VillagerTradesEvent event) { } + @SubscribeEvent + public static void onLeftClick(PlayerInteractEvent.LeftClickBlock event) { + if (event.getPlayer().getHeldItemMainhand().getItem() instanceof HammerItem) { + ItemStack stack = event.getPlayer().getHeldItemMainhand(); + HammerItem hammer = (HammerItem) stack.getItem(); + World worldIn = event.getWorld(); + BlockPos pos = event.getPos(); + PlayerEntity player = event.getPlayer(); + + if (event.getPlayer().getCooledAttackStrength(0) >= (1f)) { + event.getPlayer().resetCooldown(); + if (HammerItem.getExcavateModifier(stack) != 0) + { + hammer.getExcavationResult(pos,worldIn,player,stack); + } else { + hammer.onBlockDestroyed(stack,worldIn,worldIn.getBlockState(pos),pos, player); + } + event.getWorld().destroyBlock(event.getPos(),true); + } else { + event.getPlayer().resetCooldown(); + } + } + } + @SubscribeEvent public static void onPlayerTick(TickEvent.PlayerTickEvent event) { PlayerEntity player = event.player; @@ -237,6 +260,19 @@ public static void onPlayerTick(TickEvent.PlayerTickEvent event) { player.addPotionEffect(new EffectInstance(Effects.CONDUIT_POWER, 400 * (headSlot+chestSlot+legsSlot+feetSlot), 0, false, false, true)); } + + if (player.getEntityWorld().getGameTime() % 1200L == 0) { + int count = 0; + for (ItemStack s : player.getArmorInventoryList()) { + if (s.isEnchanted() && EnchantmentHelper.getEnchantmentLevel(RankineEnchantments.GUARD, s) > 0) { + count+=2; + } + } + if (player.getAbsorptionAmount() < count) { + player.setAbsorptionAmount(count); + } + } + ItemStack ghast = ItemStack.EMPTY; for(int i = 0; i < player.inventory.getSizeInventory(); ++i) { ItemStack itemstack = player.inventory.getStackInSlot(i); diff --git a/src/main/java/com/cannolicatfish/rankine/init/Config.java b/src/main/java/com/cannolicatfish/rankine/init/Config.java index b8012dad9a..9f8c987fb2 100644 --- a/src/main/java/com/cannolicatfish/rankine/init/Config.java +++ b/src/main/java/com/cannolicatfish/rankine/init/Config.java @@ -54,6 +54,8 @@ public static class General { public final ForgeConfigSpec.DoubleValue MOVEMENT_SNOW; public final ForgeConfigSpec.DoubleValue MOVEMENT_MUD; + public final ForgeConfigSpec.BooleanValue PLAYER_PRYING_ENCHANTMENT; + public final ForgeConfigSpec.DoubleValue NUGGET_CHANCE; public final ForgeConfigSpec.IntValue NUGGET_DISTANCE; public final ForgeConfigSpec.IntValue PROSPECTING_STICK_RANGE; @@ -109,11 +111,11 @@ public General(ForgeConfigSpec.Builder b) { .defineInRange("bricksHardnessMultiplier", 1.5D, 0.0D, 20.0D); BRICKS_RESISTANCE_MULT = b.comment("A multiplier to determine how much higher the bricks variant resistance is than the stone.") .defineInRange("bricksResistanceMultiplier", 1.5D, 0.0D, 20.0D); - STARTING_BOOK = b.comment("Enables the Rankine Journal (a guide to the mod)") + STARTING_BOOK = b.comment("Enables the Rankine Journal (a guide to the mod).") .define("startingBook",true); - PENDANT_CURSE = b.comment("Causes Pendants to spawn in with Curse of Vanishing") + PENDANT_CURSE = b.comment("Causes Pendants to spawn in with Curse of Vanishing.") .define("pendantCurse",true); - MANDATORY_AXE = b.comment("An axe is required to harvest logs") + MANDATORY_AXE = b.comment("Makes axes required to harvest logs.") .define("axesOnly",false); FUEL_VALUES = b.comment("Change the fuel values of items for realism.") .define("fuelValuesChange",true); @@ -176,7 +178,12 @@ public General(ForgeConfigSpec.Builder b) { NUGGET_DISTANCE = b.comment("Distance from an ore block in which nuggets have a chance to drop from blocks.") .defineInRange("nuggetRange", 7, 1, 64); b.pop(); - + + b.comment("Enchantments").push("enchantments"); + PLAYER_PRYING_ENCHANTMENT = b.comment("Enables the Prying enchantment to work on players (when hit by crowbar, chance to drop held item).") + .define("playerPryingEnchantment",true); + b.pop(); + b.comment("Vanilla Tools").push("vanillaTools"); b.comment("Wooden Tools").push("woodenTools"); DISABLE_WOODEN_SWORD = b.comment("Disable the use of the wooden sword (still allows crafting for other recipes). This is enabled by default for progression.") diff --git a/src/main/java/com/cannolicatfish/rankine/init/RankineBlocks.java b/src/main/java/com/cannolicatfish/rankine/init/RankineBlocks.java index debaf4749d..2b944c7407 100644 --- a/src/main/java/com/cannolicatfish/rankine/init/RankineBlocks.java +++ b/src/main/java/com/cannolicatfish/rankine/init/RankineBlocks.java @@ -5,6 +5,8 @@ import com.cannolicatfish.rankine.blocks.alloyfurnace.AlloyFurnaceBlock; import com.cannolicatfish.rankine.blocks.alloyfurnace.AlloyFurnaceContainer; import com.cannolicatfish.rankine.blocks.alloyfurnace.AlloyFurnaceTile; +import com.cannolicatfish.rankine.blocks.alloys.AlloyBlock; +import com.cannolicatfish.rankine.blocks.alloys.AlloyBlockTile; import com.cannolicatfish.rankine.blocks.beehiveoven.BeehiveOvenPitBlock; import com.cannolicatfish.rankine.blocks.crucible.CrucibleBlock; import com.cannolicatfish.rankine.blocks.crucible.CrucibleContainer; @@ -1368,7 +1370,7 @@ public class RankineBlocks { public static final RegistryObject BLACK_GOLD_BLOCK = REGISTRY.register("black_gold_block", () -> new Block(DEF_METAL_BLOCK)); public static final RegistryObject INVAR_BLOCK = REGISTRY.register("invar_block", () -> new Block(DEF_METAL_BLOCK)); public static final RegistryObject PEWTER_BLOCK = REGISTRY.register("pewter_block", () -> new Block(DEF_METAL_BLOCK)); - public static final RegistryObject BRONZE_BLOCK = REGISTRY.register("bronze_block", () -> new Block(DEF_METAL_BLOCK)); + public static final RegistryObject BRONZE_BLOCK = REGISTRY.register("bronze_block", () -> new AlloyBlock(DEF_METAL_BLOCK)); public static final RegistryObject OSMIRIDIUM_BLOCK = REGISTRY.register("osmiridium_block", () -> new Block(DEF_METAL_BLOCK)); public static final RegistryObject STEEL_BLOCK = REGISTRY.register("steel_block", () -> new Block(DEF_METAL_BLOCK)); public static final RegistryObject STAINLESS_STEEL_BLOCK = REGISTRY.register("stainless_steel_block", () -> new Block(DEF_METAL_BLOCK)); @@ -1666,6 +1668,9 @@ public class RankineBlocks { @ObjectHolder("rankine:rankine_box") public static TileEntityType RANKINE_BOX_TILE; + @ObjectHolder("rankine:bronze_alloy_block") + public static TileEntityType ALLOY_BLOCK_TILE; + @ObjectHolder("rankine:laser_quarry") public static ContainerType LASER_QUARRY_CONTAINER; diff --git a/src/main/java/com/cannolicatfish/rankine/init/RankineEnchantmentTypes.java b/src/main/java/com/cannolicatfish/rankine/init/RankineEnchantmentTypes.java index 35bd693c91..1d18e61186 100644 --- a/src/main/java/com/cannolicatfish/rankine/init/RankineEnchantmentTypes.java +++ b/src/main/java/com/cannolicatfish/rankine/init/RankineEnchantmentTypes.java @@ -19,6 +19,9 @@ public class RankineEnchantmentTypes { public static EnchantmentType SPEAR = EnchantmentType.create("spear", (itemIn) -> { return itemIn instanceof SpearItem; }); + public static EnchantmentType CROWBAR = EnchantmentType.create("crowbar", (itemIn) -> { + return itemIn instanceof CrowbarItem; }); + public static EnchantmentType HOE = EnchantmentType.create("hoe", (itemIn) -> { return itemIn instanceof HoeItem; }); diff --git a/src/main/java/com/cannolicatfish/rankine/init/RankineEnchantments.java b/src/main/java/com/cannolicatfish/rankine/init/RankineEnchantments.java index cd200de739..2c4af456e4 100644 --- a/src/main/java/com/cannolicatfish/rankine/init/RankineEnchantments.java +++ b/src/main/java/com/cannolicatfish/rankine/init/RankineEnchantments.java @@ -32,6 +32,9 @@ public class RankineEnchantments { @ObjectHolder("rankine:quake") public static Enchantment QUAKE; + @ObjectHolder("rankine:prying") + public static Enchantment PRYING; + @ObjectHolder("rankine:dune_walker") public static Enchantment DUNE_WALKER; @@ -58,4 +61,8 @@ public class RankineEnchantments { @ObjectHolder("rankine:withering_curse") public static Enchantment WITHERING_CURSE; + + + @ObjectHolder("rankine:guard") + public static Enchantment GUARD; } diff --git a/src/main/java/com/cannolicatfish/rankine/init/RankineRecipeTypes.java b/src/main/java/com/cannolicatfish/rankine/init/RankineRecipeTypes.java index 799259c434..4728adbe63 100644 --- a/src/main/java/com/cannolicatfish/rankine/init/RankineRecipeTypes.java +++ b/src/main/java/com/cannolicatfish/rankine/init/RankineRecipeTypes.java @@ -1,9 +1,6 @@ package com.cannolicatfish.rankine.init; -import com.cannolicatfish.rankine.recipe.AlloyingRecipe; -import com.cannolicatfish.rankine.recipe.BeehiveOvenRecipe; -import com.cannolicatfish.rankine.recipe.CrushingRecipe; -import com.cannolicatfish.rankine.recipe.SluicingRecipe; +import com.cannolicatfish.rankine.recipe.*; import net.minecraft.inventory.IInventory; import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.IRecipeType; @@ -39,4 +36,11 @@ public Optional matches(IRecipe recipe return recipe.matches(inv, worldIn) ? Optional.of((SluicingRecipe) recipe) : Optional.empty(); } }; + + public static final IRecipeType ELEMENT = new IRecipeType() { + @Override + public Optional matches(IRecipe recipe, World worldIn, C inv) { + return recipe.matches(inv, worldIn) ? Optional.of((ElementRecipe) recipe) : Optional.empty(); + } + }; } diff --git a/src/main/java/com/cannolicatfish/rankine/init/WGConfig.java b/src/main/java/com/cannolicatfish/rankine/init/WGConfig.java index 8d74d18ad7..495ed22e6a 100644 --- a/src/main/java/com/cannolicatfish/rankine/init/WGConfig.java +++ b/src/main/java/com/cannolicatfish/rankine/init/WGConfig.java @@ -1263,7 +1263,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Native Arsenic Ore Settings").push("nativeArsenicOre"); NATIVE_ARSENIC_ORE_HL = b.comment("Harvest Level of Native Arsenic Ore.") - .defineInRange("nativeArsenicOreHL", 1, 0, 4); + .defineInRange("nativeArsenicOreHL", 2, 0, 4); NATIVE_ARSENIC_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Native Arsenic Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Native Arsenic Ore generation.") .define("nativeArsenicOreDimList", new ArrayList<>(Arrays.asList("nether"))); NATIVE_ARSENIC_ORE_STONE_SPECIFIC = b.comment("If true Native Arsenic Ore will only spawn in the blocks listed under nativeArsenicOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in nativeArsenicOreDimList.") @@ -1317,7 +1317,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Native Sulfur Ore Settings").push("nativeSulfurOre"); NATIVE_SULFUR_ORE_HL = b.comment("Harvest Level of Native Sulfur Ore.") - .defineInRange("nativeSulfurOreHL", 1, 0, 4); + .defineInRange("nativeSulfurOreHL", 2, 0, 4); NATIVE_SULFUR_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Native Sulfur Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Native Sulfur Ore generation.") .define("nativeSulfurOreDimList", new ArrayList<>(Arrays.asList("nether"))); NATIVE_SULFUR_ORE_STONE_SPECIFIC = b.comment("If true Native Sulfur Ore will only spawn in the blocks listed under nativeSulfurOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in nativeSulfurOreDimList.") @@ -1344,7 +1344,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Native Gallium Ore Settings").push("nativeGalliumOre"); NATIVE_GALLIUM_ORE_HL = b.comment("Harvest Level of Native Gallium Ore.") - .defineInRange("nativeGalliumOreHL", 3, 0, 4); + .defineInRange("nativeGalliumOreHL", 4, 0, 4); NATIVE_GALLIUM_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Native Gallium Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Native Gallium Ore generation.") .define("nativeGalliumOreDimList", new ArrayList<>(Arrays.asList("end"))); NATIVE_GALLIUM_ORE_STONE_SPECIFIC = b.comment("If true Native Gallium Ore will only spawn in the blocks listed under nativeGalliumOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in nativeGalliumOreDimList.") @@ -1371,7 +1371,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Native Indium Ore Settings").push("nativeIndiumOre"); NATIVE_INDIUM_ORE_HL = b.comment("Harvest Level of Native Indium Ore.") - .defineInRange("nativeIndiumOreHL", 3, 0, 4); + .defineInRange("nativeIndiumOreHL", 4, 0, 4); NATIVE_INDIUM_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Native Indium Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Native Indium Ore generation.") .define("nativeIndiumOreDimList", new ArrayList<>(Arrays.asList("end"))); NATIVE_INDIUM_ORE_STONE_SPECIFIC = b.comment("If true Native Indium Ore will only spawn in the blocks listed under nativeIndiumOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in nativeIndiumOreDimList.") @@ -1398,7 +1398,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Native Tellurium Ore Settings").push("nativeTelluriumOre"); NATIVE_TELLURIUM_ORE_HL = b.comment("Harvest Level of Native Tellurium Ore.") - .defineInRange("nativeTelluriumOreHL", 3, 0, 4); + .defineInRange("nativeTelluriumOreHL", 4, 0, 4); NATIVE_TELLURIUM_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Native Tellurium Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Native Tellurium Ore generation.") .define("nativeTelluriumOreDimList", new ArrayList<>(Arrays.asList("end"))); NATIVE_TELLURIUM_ORE_STONE_SPECIFIC = b.comment("If true Native Tellurium Ore will only spawn in the blocks listed under nativeTelluriumOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in nativeTelluriumOreDimList.") @@ -1425,7 +1425,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Native Selenium Ore Settings").push("nativeSeleniumOre"); NATIVE_SELENIUM_ORE_HL = b.comment("Harvest Level of Native Selenium Ore.") - .defineInRange("nativeSeleniumOreHL", 3, 0, 4); + .defineInRange("nativeSeleniumOreHL", 4, 0, 4); NATIVE_SELENIUM_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Native Selenium Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Native Selenium Ore generation.") .define("nativeSeleniumOreDimList", new ArrayList<>(Arrays.asList("end"))); NATIVE_SELENIUM_ORE_STONE_SPECIFIC = b.comment("If true Native Selenium Ore will only spawn in the blocks listed under nativeSeleniumOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in nativeSeleniumOreDimList.") @@ -1452,7 +1452,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Malachite Ore Settings").push("malachiteOre"); MALACHITE_ORE_HL = b.comment("Harvest Level of Malachite Ore.") - .defineInRange("malachiteOreHL", 1, 0, 4); + .defineInRange("malachiteOreHL", 2, 0, 4); MALACHITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Malachite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Malachite Ore generation.") .define("malachiteOreDimList", new ArrayList<>(Arrays.asList("overworld"))); MALACHITE_ORE_STONE_SPECIFIC = b.comment("If true Malachite Ore will only spawn in the blocks listed under malachiteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in malachiteOreDimList.") @@ -1479,7 +1479,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Cassiterite Ore Settings").push("cassiteriteOre"); CASSITERITE_ORE_HL = b.comment("Harvest Level of Cassiterite Ore.") - .defineInRange("cassiteriteOreHL", 1, 0, 4); + .defineInRange("cassiteriteOreHL", 2, 0, 4); CASSITERITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Cassiterite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Cassiterite Ore generation.") .define("cassiteriteOreDimList", new ArrayList<>(Arrays.asList("overworld"))); CASSITERITE_ORE_STONE_SPECIFIC = b.comment("If true Cassiterite Ore will only spawn in the blocks listed under cassiteriteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in cassiteriteOreDimList.") @@ -1506,7 +1506,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Bauxite Ore Settings").push("bauxiteOre"); BAUXITE_ORE_HL = b.comment("Harvest Level of Bauxite Ore.") - .defineInRange("bauxiteOreHL", 1, 0, 4); + .defineInRange("bauxiteOreHL", 2, 0, 4); BAUXITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Bauxite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Bauxite Ore generation.") .define("bauxiteOreDimList", new ArrayList<>(Arrays.asList("overworld"))); BAUXITE_ORE_STONE_SPECIFIC = b.comment("If true Bauxite Ore will only spawn in the blocks listed under bauxiteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in bauxiteOreDimList.") @@ -1533,7 +1533,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Sphalerite Ore Settings").push("sphaleriteOre"); SPHALERITE_ORE_HL = b.comment("Harvest Level of Sphalerite Ore.") - .defineInRange("sphaleriteOreHL", 1, 0, 4); + .defineInRange("sphaleriteOreHL", 2, 0, 4); SPHALERITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Sphalerite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Sphalerite Ore generation.") .define("sphaleriteOreDimList", new ArrayList<>(Arrays.asList("overworld"))); SPHALERITE_ORE_STONE_SPECIFIC = b.comment("If true Sphalerite Ore will only spawn in the blocks listed under sphaleriteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in sphaleriteOreDimList.") @@ -1560,7 +1560,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Cinnabar Ore Settings").push("cinnabarOre"); CINNABAR_ORE_HL = b.comment("Harvest Level of Cinnabar Ore.") - .defineInRange("cinnabarOreHL", 2, 0, 4); + .defineInRange("cinnabarOreHL", 3, 0, 4); CINNABAR_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Cinnabar Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Cinnabar Ore generation.") .define("cinnabarOreDimList", new ArrayList<>(Arrays.asList("overworld"))); CINNABAR_ORE_STONE_SPECIFIC = b.comment("If true Cinnabar Ore will only spawn in the blocks listed under cinnabarOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in cinnabarOreDimList.") @@ -1587,7 +1587,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Magnetite Ore Settings").push("magnetiteOre"); MAGNETITE_ORE_HL = b.comment("Harvest Level of Magnetite Ore.") - .defineInRange("magnetiteOreHL", 2, 0, 4); + .defineInRange("magnetiteOreHL", 3, 0, 4); MAGNETITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Magnetite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Magnetite Ore generation.") .define("magnetiteOreDimList", new ArrayList<>(Arrays.asList("overworld"))); MAGNETITE_ORE_STONE_SPECIFIC = b.comment("If true Magnetite Ore will only spawn in the blocks listed under magnetiteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in magnetiteOreDimList.") @@ -1614,7 +1614,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Pentlandite Ore Settings").push("pentlanditeOre"); PENTLANDITE_ORE_HL = b.comment("Harvest Level of Pentlandite Ore.") - .defineInRange("pentlanditeOreHL", 2, 0, 4); + .defineInRange("pentlanditeOreHL", 3, 0, 4); PENTLANDITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Pentlandite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Pentlandite Ore generation.") .define("pentlanditeOreDimList", new ArrayList<>(Arrays.asList("overworld"))); PENTLANDITE_ORE_STONE_SPECIFIC = b.comment("If true Pentlandite Ore will only spawn in the blocks listed under pentlanditeOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in pentlanditeOreDimList.") @@ -1641,7 +1641,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Magnesite Ore Settings").push("magnesiteOre"); MAGNESITE_ORE_HL = b.comment("Harvest Level of Magnesite Ore.") - .defineInRange("magnesiteOreHL", 2, 0, 4); + .defineInRange("magnesiteOreHL", 3, 0, 4); MAGNESITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Magnesite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Magnesite Ore generation.") .define("magnesiteOreDimList", new ArrayList<>(Arrays.asList("overworld"))); MAGNESITE_ORE_STONE_SPECIFIC = b.comment("If true Magnesite Ore will only spawn in the blocks listed under magnesiteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in magnesiteOreDimList.") @@ -1668,7 +1668,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Galena Ore Settings").push("galenaOre"); GALENA_ORE_HL = b.comment("Harvest Level of Galena Ore.") - .defineInRange("galenaOreHL", 2, 0, 4); + .defineInRange("galenaOreHL", 3, 0, 4); GALENA_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Galena Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Galena Ore generation.") .define("galenaOreDimList", new ArrayList<>(Arrays.asList("overworld"))); GALENA_ORE_STONE_SPECIFIC = b.comment("If true Galena Ore will only spawn in the blocks listed under galenaOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in galenaOreDimList.") @@ -1695,7 +1695,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Vanadinite Ore Settings").push("vanadiniteOre"); VANADINITE_ORE_HL = b.comment("Harvest Level of Vanadinite Ore.") - .defineInRange("vanadiniteOreHL", 2, 0, 4); + .defineInRange("vanadiniteOreHL", 3, 0, 4); VANADINITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Vanadinite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Vanadinite Ore generation.") .define("vanadiniteOreDimList", new ArrayList<>(Arrays.asList("overworld"))); VANADINITE_ORE_STONE_SPECIFIC = b.comment("If true Vanadinite Ore will only spawn in the blocks listed under vanadiniteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in vanadiniteOreDimList.") @@ -1722,7 +1722,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Bismuthinite Ore Settings").push("bismuthiniteOre"); BISMUTHINITE_ORE_HL = b.comment("Harvest Level of Bismuthinite Ore.") - .defineInRange("bismuthiniteOreHL", 2, 0, 4); + .defineInRange("bismuthiniteOreHL", 3, 0, 4); BISMUTHINITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Bismuthinite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Bismuthinite Ore generation.") .define("bismuthiniteOreDimList", new ArrayList<>(Arrays.asList("nether"))); BISMUTHINITE_ORE_STONE_SPECIFIC = b.comment("If true Bismuthinite Ore will only spawn in the blocks listed under bismuthiniteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in bismuthiniteOreDimList.") @@ -1749,7 +1749,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Acanthite Ore Settings").push("acanthiteOre"); ACANTHITE_ORE_HL = b.comment("Harvest Level of Acanthite Ore.") - .defineInRange("acanthiteOreHL", 2, 0, 4); + .defineInRange("acanthiteOreHL", 3, 0, 4); ACANTHITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Acanthite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Acanthite Ore generation.") .define("acanthiteOreDimList", new ArrayList<>(Arrays.asList("overworld"))); ACANTHITE_ORE_STONE_SPECIFIC = b.comment("If true Acanthite Ore will only spawn in the blocks listed under acanthiteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in acanthiteOreDimList.") @@ -1776,7 +1776,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Pyrolusite Ore Settings").push("pyrolusiteOre"); PYROLUSITE_ORE_HL = b.comment("Harvest Level of Pyrolusite Ore.") - .defineInRange("pyrolusiteOreHL", 2, 0, 4); + .defineInRange("pyrolusiteOreHL", 3, 0, 4); PYROLUSITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Pyrolusite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Pyrolusite Ore generation.") .define("pyrolusiteOreDimList", new ArrayList<>(Arrays.asList("overworld"))); PYROLUSITE_ORE_STONE_SPECIFIC = b.comment("If true Pyrolusite Ore will only spawn in the blocks listed under pyrolusiteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in pyrolusiteOreDimList.") @@ -1803,7 +1803,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Chromite Ore Settings").push("chromiteOre"); CHROMITE_ORE_HL = b.comment("Harvest Level of Chromite Ore.") - .defineInRange("chromiteOreHL", 3, 0, 4); + .defineInRange("chromiteOreHL", 4, 0, 4); CHROMITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Chromite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Chromite Ore generation.") .define("chromiteOreDimList", new ArrayList<>(Arrays.asList("overworld"))); CHROMITE_ORE_STONE_SPECIFIC = b.comment("If true Chromite Ore will only spawn in the blocks listed under chromiteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in chromiteOreDimList.") @@ -1857,7 +1857,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Ilmenite Ore Settings").push("ilmeniteOre"); ILMENITE_ORE_HL = b.comment("Harvest Level of Ilmenite Ore.") - .defineInRange("ilmeniteOreHL", 3, 0, 4); + .defineInRange("ilmeniteOreHL", 4, 0, 4); ILMENITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Ilmenite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Ilmenite Ore generation.") .define("ilmeniteOreDimList", new ArrayList<>(Arrays.asList("nether"))); ILMENITE_ORE_STONE_SPECIFIC = b.comment("If true Ilmenite Ore will only spawn in the blocks listed under ilmeniteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in ilmeniteOreDimList.") @@ -1884,7 +1884,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Columbite Ore Settings").push("columbiteOre"); COLUMBITE_ORE_HL = b.comment("Harvest Level of Columbite Ore.") - .defineInRange("columbiteOreHL", 3, 0, 4); + .defineInRange("columbiteOreHL", 4, 0, 4); COLUMBITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Columbite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Columbite Ore generation.") .define("columbiteOreDimList", new ArrayList<>(Arrays.asList("nether"))); COLUMBITE_ORE_STONE_SPECIFIC = b.comment("If true Columbite Ore will only spawn in the blocks listed under columbiteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in columbiteOreDimList.") @@ -1911,7 +1911,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Wolframite Ore Settings").push("wolframiteOre"); WOLFRAMITE_ORE_HL = b.comment("Harvest Level of Wolframite Ore.") - .defineInRange("wolframiteOreHL", 3, 0, 4); + .defineInRange("wolframiteOreHL", 4, 0, 4); WOLFRAMITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Wolframite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Wolframite Ore generation.") .define("wolframiteOreDimList", new ArrayList<>(Arrays.asList("nether"))); WOLFRAMITE_ORE_STONE_SPECIFIC = b.comment("If true Wolframite Ore will only spawn in the blocks listed under wolframiteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in wolframiteOreDimList.") @@ -1938,7 +1938,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Tantalite Ore Settings").push("tantaliteOre"); TANTALITE_ORE_HL = b.comment("Harvest Level of Tantalite Ore.") - .defineInRange("tantaliteOreHL", 3, 0, 4); + .defineInRange("tantaliteOreHL", 4, 0, 4); TANTALITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Tantalite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Tantalite Ore generation.") .define("tantaliteOreDimList", new ArrayList<>(Arrays.asList("nether"))); TANTALITE_ORE_STONE_SPECIFIC = b.comment("If true Tantalite Ore will only spawn in the blocks listed under tantaliteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in tantaliteOreDimList.") @@ -1965,7 +1965,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Plumbago Ore Settings").push("plumbagoOre"); PLUMBAGO_ORE_HL = b.comment("Harvest Level of Plumbago Ore.") - .defineInRange("plumbagoOreHL", 2, 0, 4); + .defineInRange("plumbagoOreHL", 3, 0, 4); PLUMBAGO_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Plumbago Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Plumbago Ore generation.") .define("plumbagoOreDimList", new ArrayList<>(Arrays.asList("overworld"))); PLUMBAGO_ORE_STONE_SPECIFIC = b.comment("If true Plumbago Ore will only spawn in the blocks listed under plumbagoOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in plumbagoOreDimList.") @@ -1992,7 +1992,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Moissanite Ore Settings").push("moissaniteOre"); MOISSANITE_ORE_HL = b.comment("Harvest Level of Moissanite Ore.") - .defineInRange("moissaniteOreHL", 2, 0, 4); + .defineInRange("moissaniteOreHL", 3, 0, 4); MOISSANITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Moissanite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Moissanite Ore generation.") .define("moissaniteOreDimList", new ArrayList<>(Arrays.asList("nether"))); MOISSANITE_ORE_STONE_SPECIFIC = b.comment("If true Moissanite Ore will only spawn in the blocks listed under moissaniteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in moissaniteOreDimList.") @@ -2073,7 +2073,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Subbituminous Ore Settings").push("subbituminousOre"); SUBBITUMINOUS_ORE_HL = b.comment("Harvest Level of Subbituminous Ore.") - .defineInRange("subbituminousOreHL", 1, 0, 4); + .defineInRange("subbituminousOreHL", 2, 0, 4); SUBBITUMINOUS_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Subbituminous Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Subbituminous Ore generation.") .define("subbituminousOreDimList", new ArrayList<>(Arrays.asList("overworld"))); SUBBITUMINOUS_ORE_STONE_SPECIFIC = b.comment("If true Subbituminous Ore will only spawn in the blocks listed under subbituminousOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in subbituminousOreDimList.") @@ -2100,7 +2100,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Bituminous Ore Settings").push("bituminousOre"); BITUMINOUS_ORE_HL = b.comment("Harvest Level of Bituminous Ore.") - .defineInRange("bituminousOreHL", 2, 0, 4); + .defineInRange("bituminousOreHL", 3, 0, 4); BITUMINOUS_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Bituminous Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Bituminous Ore generation.") .define("bituminousOreDimList", new ArrayList<>(Arrays.asList("overworld"))); BITUMINOUS_ORE_STONE_SPECIFIC = b.comment("If true Bituminous Ore will only spawn in the blocks listed under bituminousOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in bituminousOreDimList.") @@ -2127,7 +2127,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Anthracite Ore Settings").push("anthraciteOre"); ANTHRACITE_ORE_HL = b.comment("Harvest Level of Anthracite Ore.") - .defineInRange("anthraciteOreHL", 3, 0, 4); + .defineInRange("anthraciteOreHL", 4, 0, 4); ANTHRACITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Anthracite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Anthracite Ore generation.") .define("anthraciteOreDimList", new ArrayList<>(Arrays.asList("nether"))); ANTHRACITE_ORE_STONE_SPECIFIC = b.comment("If true Anthracite Ore will only spawn in the blocks listed under anthraciteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in anthraciteOreDimList.") @@ -2154,7 +2154,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Lazurite Ore Settings").push("lazuriteOre"); LAZURITE_ORE_HL = b.comment("Harvest Level of Lazurite Ore.") - .defineInRange("lazuriteOreHL", 1, 0, 4); + .defineInRange("lazuriteOreHL", 2, 0, 4); LAZURITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Lazurite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Lazurite Ore generation.") .define("lazuriteOreDimList", new ArrayList<>(Arrays.asList("overworld"))); LAZURITE_ORE_STONE_SPECIFIC = b.comment("If true Lazurite Ore will only spawn in the blocks listed under lazuriteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in lazuriteOreDimList.") @@ -2181,7 +2181,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Diamond Ore Settings").push("diamondOre"); DIAMOND_ORE_HL = b.comment("Harvest Level of Diamond Ore.") - .defineInRange("diamondOreHL", 3, 0, 4); + .defineInRange("diamondOreHL", 4, 0, 4); DIAMOND_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Diamond Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Diamond Ore generation.") .define("diamondOreDimList", new ArrayList<>(Arrays.asList(""))); DIAMOND_ORE_STONE_SPECIFIC = b.comment("If true Diamond Ore will only spawn in the blocks listed under diamondOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in diamondOreDimList.") @@ -2208,7 +2208,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Greenockite Ore Settings").push("greenockiteOre"); GREENOCKITE_ORE_HL = b.comment("Harvest Level of Greenockite Ore.") - .defineInRange("greenockiteOreHL", 3, 0, 4); + .defineInRange("greenockiteOreHL", 4, 0, 4); GREENOCKITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Greenockite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Greenockite Ore generation.") .define("greenockiteOreDimList", new ArrayList<>(Arrays.asList("end"))); GREENOCKITE_ORE_STONE_SPECIFIC = b.comment("If true Greenockite Ore will only spawn in the blocks listed under greenockiteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in greenockiteOreDimList.") @@ -2235,7 +2235,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Emerald Ore Settings").push("emeraldOre"); EMERALD_ORE_HL = b.comment("Harvest Level of Emerald Ore.") - .defineInRange("emeraldOreHL", 2, 0, 4); + .defineInRange("emeraldOreHL", 3, 0, 4); EMERALD_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Emerald Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Emerald Ore generation.") .define("emeraldOreDimList", new ArrayList<>(Arrays.asList("overworld"))); EMERALD_ORE_STONE_SPECIFIC = b.comment("If true Emerald Ore will only spawn in the blocks listed under emeraldOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in emeraldOreDimList.") @@ -2262,7 +2262,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Aquamarine Ore Settings").push("aquamarineOre"); AQUAMARINE_ORE_HL = b.comment("Harvest Level of Aquamarine Ore.") - .defineInRange("aquamarineOreHL", 2, 0, 4); + .defineInRange("aquamarineOreHL", 3, 0, 4); AQUAMARINE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Aquamarine Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Aquamarine Ore generation.") .define("aquamarineOreDimList", new ArrayList<>(Arrays.asList("overworld"))); AQUAMARINE_ORE_STONE_SPECIFIC = b.comment("If true Aquamarine Ore will only spawn in the blocks listed under aquamarineOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in aquamarineOreDimList.") @@ -2289,7 +2289,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Quartz Ore Settings").push("quartzOre"); QUARTZ_ORE_HL = b.comment("Harvest Level of Quartz Ore.") - .defineInRange("quartzOreHL", 1, 0, 4); + .defineInRange("quartzOreHL", 2, 0, 4); QUARTZ_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Quartz Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Quartz Ore generation.") .define("quartzOreDimList", new ArrayList<>(Arrays.asList("nether"))); QUARTZ_ORE_STONE_SPECIFIC = b.comment("If true Quartz Ore will only spawn in the blocks listed under quartzOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in quartzOreDimList.") @@ -2316,7 +2316,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Opal Ore Settings").push("opalOre"); OPAL_ORE_HL = b.comment("Harvest Level of Opal Ore.") - .defineInRange("opalOreHL", 2, 0, 4); + .defineInRange("opalOreHL", 3, 0, 4); OPAL_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Opal Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Opal Ore generation.") .define("opalOreDimList", new ArrayList<>(Arrays.asList("overworld"))); OPAL_ORE_STONE_SPECIFIC = b.comment("If true Opal Ore will only spawn in the blocks listed under opalOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in opalOreDimList.") @@ -2343,7 +2343,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Majorite Ore Settings").push("majoriteOre"); MAJORITE_ORE_HL = b.comment("Harvest Level of Majorite Ore.") - .defineInRange("majoriteOreHL", 2, 0, 4); + .defineInRange("majoriteOreHL", 3, 0, 4); MAJORITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Majorite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Majorite Ore generation.") .define("majoriteOreDimList", new ArrayList<>(Arrays.asList("overworld"))); MAJORITE_ORE_STONE_SPECIFIC = b.comment("If true Majorite Ore will only spawn in the blocks listed under majoriteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in majoriteOreDimList.") @@ -2370,7 +2370,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Fluorite Ore Settings").push("fluoriteOre"); FLUORITE_ORE_HL = b.comment("Harvest Level of Fluorite Ore.") - .defineInRange("fluoriteOreHL", 3, 0, 4); + .defineInRange("fluoriteOreHL", 4, 0, 4); FLUORITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Fluorite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Fluorite Ore generation.") .define("fluoriteOreDimList", new ArrayList<>(Arrays.asList("end"))); FLUORITE_ORE_STONE_SPECIFIC = b.comment("If true Fluorite Ore will only spawn in the blocks listed under fluoriteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in fluoriteOreDimList.") @@ -2532,7 +2532,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Interspinifex Ore Settings").push("interspinifexOre"); INTERSPINIFEX_ORE_HL = b.comment("Harvest Level of Interspinifex Ore.") - .defineInRange("interspinifexOreHL", 2, 0, 4); + .defineInRange("interspinifexOreHL", 3, 0, 4); INTERSPINIFEX_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Interspinifex Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Interspinifex Ore generation.") .define("interspinifexOreDimList", new ArrayList<>(Arrays.asList())); INTERSPINIFEX_ORE_STONE_SPECIFIC = b.comment("If true Interspinifex Ore will only spawn in the blocks listed under interspinifexOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in interspinifexOreDimList.") @@ -2559,7 +2559,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Petalite Ore Settings").push("petaliteOre"); PETALITE_ORE_HL = b.comment("Harvest Level of Petalite Ore.") - .defineInRange("petaliteOreHL", 3, 0, 4); + .defineInRange("petaliteOreHL", 4, 0, 4); PETALITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Petalite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Petalite Ore generation.") .define("petaliteOreDimList", new ArrayList<>(Arrays.asList())); PETALITE_ORE_STONE_SPECIFIC = b.comment("If true Petalite Ore will only spawn in the blocks listed under petaliteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in petaliteOreDimList.") @@ -2586,7 +2586,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Cobaltite Ore Settings").push("cobaltiteOre"); COBALTITE_ORE_HL = b.comment("Harvest Level of Cobaltite Ore.") - .defineInRange("cobaltiteOreHL", 3, 0, 4); + .defineInRange("cobaltiteOreHL", 4, 0, 4); COBALTITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Cobaltite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Cobaltite Ore generation.") .define("cobaltiteOreDimList", new ArrayList<>(Arrays.asList("nether"))); COBALTITE_ORE_STONE_SPECIFIC = b.comment("If true Cobaltite Ore will only spawn in the blocks listed under cobaltiteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in cobaltiteOreDimList.") @@ -2613,7 +2613,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Cryolite Ore Settings").push("cryoliteOre"); CRYOLITE_ORE_HL = b.comment("Harvest Level of Cryolite Ore.") - .defineInRange("cryoliteOreHL", 3, 0, 4); + .defineInRange("cryoliteOreHL", 4, 0, 4); CRYOLITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Cryolite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Cryolite Ore generation.") .define("cryoliteOreDimList", new ArrayList<>(Arrays.asList("overworld"))); CRYOLITE_ORE_STONE_SPECIFIC = b.comment("If true Cryolite Ore will only spawn in the blocks listed under cryoliteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in cryoliteOreDimList.") @@ -2640,7 +2640,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Pyrite Ore Settings").push("pyriteOre"); PYRITE_ORE_HL = b.comment("Harvest Level of Pyrite Ore.") - .defineInRange("pyriteOreHL", 1, 0, 4); + .defineInRange("pyriteOreHL", 2, 0, 4); PYRITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Pyrite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Pyrite Ore generation.") .define("pyriteOreDimList", new ArrayList<>(Arrays.asList("overworld"))); PYRITE_ORE_STONE_SPECIFIC = b.comment("If true Pyrite Ore will only spawn in the blocks listed under pyriteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in pyriteOreDimList.") @@ -2667,7 +2667,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Celestine Ore Settings").push("celestineOre"); CELESTINE_ORE_HL = b.comment("Harvest Level of Celestine Ore.") - .defineInRange("celestineOreHL", 2, 0, 4); + .defineInRange("celestineOreHL", 3, 0, 4); CELESTINE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Celestine Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Celestine Ore generation.") .define("celestineOreDimList", new ArrayList<>(Arrays.asList("overworld"))); CELESTINE_ORE_STONE_SPECIFIC = b.comment("If true Celestine Ore will only spawn in the blocks listed under celestineOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in celestineOreDimList.") @@ -2721,7 +2721,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Kamacite Ore Settings").push("kamaciteOre"); KAMACITE_ORE_HL = b.comment("Harvest Level of Kamacite Ore.") - .defineInRange("kamaciteOreHL", 1, 0, 4); + .defineInRange("kamaciteOreHL", 2, 0, 4); KAMACITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Kamacite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Kamacite Ore generation.") .define("kamaciteOreDimList", new ArrayList<>(Arrays.asList("end"))); KAMACITE_ORE_STONE_SPECIFIC = b.comment("If true Kamacite Ore will only spawn in the blocks listed under kamaciteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in kamaciteOreDimList.") @@ -2748,7 +2748,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Antitaenite Ore Settings").push("antitaeniteOre"); ANTITAENITE_ORE_HL = b.comment("Harvest Level of Antitaenite Ore.") - .defineInRange("antitaeniteOreHL", 1, 0, 4); + .defineInRange("antitaeniteOreHL", 2, 0, 4); ANTITAENITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Antitaenite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Antitaenite Ore generation.") .define("antitaeniteOreDimList", new ArrayList<>(Arrays.asList("end"))); ANTITAENITE_ORE_STONE_SPECIFIC = b.comment("If true Antitaenite Ore will only spawn in the blocks listed under antitaeniteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in antitaeniteOreDimList.") @@ -2775,7 +2775,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("taenite Ore Settings").push("taeniteOre"); TAENITE_ORE_HL = b.comment("Harvest Level of taenite Ore.") - .defineInRange("taeniteOreHL", 1, 0, 4); + .defineInRange("taeniteOreHL", 2, 0, 4); TAENITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate taenite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable taenite Ore generation.") .define("taeniteOreDimList", new ArrayList<>(Arrays.asList("end"))); TAENITE_ORE_STONE_SPECIFIC = b.comment("If true taenite Ore will only spawn in the blocks listed under taeniteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in taeniteOreDimList.") @@ -2802,7 +2802,7 @@ public Ores(ForgeConfigSpec.Builder b) { b.comment("Tetrataenite Ore Settings").push("tetrataeniteOre"); TETRATAENITE_ORE_HL = b.comment("Harvest Level of Tetrataenite Ore.") - .defineInRange("tetrataeniteOreHL", 1, 0, 4); + .defineInRange("tetrataeniteOreHL", 2, 0, 4); TETRATAENITE_ORE_DIMENSION_LIST = b.comment("Dimensions to generate Tetrataenite Ore in (supports overworld / nether / end). The same spawning parameters are used if multiple dimenstions are listed. Leave empty to disable Tetrataenite Ore generation.") .define("tetrataeniteOreDimList", new ArrayList<>(Arrays.asList("end"))); TETRATAENITE_ORE_STONE_SPECIFIC = b.comment("If true Tetrataenite Ore will only spawn in the blocks listed under tetrataeniteOreBlockList If false it will generate in blocks with the tag #minecraft:base_stone_overworld or #minecraft:base_stone_nether or #forge:base_stone_end depending on the dimensions listed in tetrataeniteOreDimList.") diff --git a/src/main/java/com/cannolicatfish/rankine/items/alloys/AlloyArmorItem.java b/src/main/java/com/cannolicatfish/rankine/items/alloys/AlloyArmorItem.java index 24ea0b8b58..a35a2fa720 100644 --- a/src/main/java/com/cannolicatfish/rankine/items/alloys/AlloyArmorItem.java +++ b/src/main/java/com/cannolicatfish/rankine/items/alloys/AlloyArmorItem.java @@ -2,15 +2,20 @@ import com.cannolicatfish.rankine.ProjectRankine; import com.cannolicatfish.rankine.init.Config; +import com.cannolicatfish.rankine.init.RankineRecipeTypes; +import com.cannolicatfish.rankine.recipe.AlloyCraftingRecipe; import com.cannolicatfish.rankine.recipe.helper.AlloyRecipeHelper; import com.cannolicatfish.rankine.util.alloys.AlloyUtils; import com.cannolicatfish.rankine.util.colors.AlloyItemColor; +import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.*; +import net.minecraft.item.crafting.ICraftingRecipe; +import net.minecraft.item.crafting.IRecipeType; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.INBT; import net.minecraft.util.NonNullList; @@ -29,6 +34,7 @@ import java.text.DecimalFormatSymbols; import java.util.List; import java.util.Locale; +import java.util.stream.Collectors; public class AlloyArmorItem extends DyeableArmorItem implements IAlloyArmor, IDyeableArmorItem { private final AlloyUtils alloy; @@ -98,7 +104,19 @@ public void addInformation(ItemStack stack, @Nullable World worldIn, List items) { - if (group == ItemGroup.SEARCH || group == ProjectRankine.setup.rankineMetals) { + if (group == ItemGroup.SEARCH || group == ProjectRankine.setup.rankineTools) { + World worldIn = Minecraft.getInstance().world; + if (worldIn != null) { + List s = worldIn.getRecipeManager().getRecipesForType(IRecipeType.CRAFTING).stream().filter(iCraftingRecipe -> iCraftingRecipe.getRecipeOutput().getItem() == this.getItem()).collect(Collectors.toList()); + for (ICraftingRecipe recipe : s) { + if (recipe instanceof AlloyCraftingRecipe && !items.contains(recipe.getRecipeOutput())) { + items.add(recipe.getRecipeOutput()); + } + } + } else { + items.add(getAlloyItemStack(new AlloyData(this.alloy.getDefComposition()),this.getItem())); + } + items.add(getAlloyItemStack(new AlloyData(this.alloy.getDefComposition()),this.getItem())); } } diff --git a/src/main/java/com/cannolicatfish/rankine/items/alloys/AlloyHammerItem.java b/src/main/java/com/cannolicatfish/rankine/items/alloys/AlloyHammerItem.java index 4927f3e05c..f6b98e02df 100644 --- a/src/main/java/com/cannolicatfish/rankine/items/alloys/AlloyHammerItem.java +++ b/src/main/java/com/cannolicatfish/rankine/items/alloys/AlloyHammerItem.java @@ -262,14 +262,14 @@ public ActionResultType onItemUse(ItemUseContext context) { worldIn.setBlockState(pos,Blocks.ANVIL.getDefaultState().with(HorizontalBlock.HORIZONTAL_FACING,anvil.get(HorizontalBlock.HORIZONTAL_FACING)),2); worldIn.playSound(context.getPlayer(),pos, SoundEvents.ENTITY_IRON_GOLEM_REPAIR,SoundCategory.BLOCKS,1.0f,worldIn.getRandom().nextFloat() * 0.4F + 0.8F); context.getItem().damageItem(100, context.getPlayer(), (entity) -> entity.sendBreakAnimation(EquipmentSlotType.MAINHAND)); - return ActionResultType.PASS; + return ActionResultType.SUCCESS; } else if (anvil.getBlock() == Blocks.DAMAGED_ANVIL && (getAlloyDurability(returnCompositionString(context.getItem(),this.alloy),this.alloy) - context.getItem().getDamage()) >= 100) { worldIn.setBlockState(pos,Blocks.CHIPPED_ANVIL.getDefaultState().with(HorizontalBlock.HORIZONTAL_FACING,anvil.get(HorizontalBlock.HORIZONTAL_FACING)),2); worldIn.playSound(context.getPlayer(),pos, SoundEvents.ENTITY_IRON_GOLEM_REPAIR,SoundCategory.BLOCKS,1.0f,worldIn.getRandom().nextFloat() * 0.4F + 0.8F); context.getItem().damageItem(100, context.getPlayer(), (entity) -> entity.sendBreakAnimation(EquipmentSlotType.MAINHAND)); - return ActionResultType.PASS; + return ActionResultType.SUCCESS; } } - return ActionResultType.FAIL; + return super.onItemUse(context); } } diff --git a/src/main/java/com/cannolicatfish/rankine/items/alloys/AlloyItem.java b/src/main/java/com/cannolicatfish/rankine/items/alloys/AlloyItem.java index ac2cd3a993..674e97679a 100644 --- a/src/main/java/com/cannolicatfish/rankine/items/alloys/AlloyItem.java +++ b/src/main/java/com/cannolicatfish/rankine/items/alloys/AlloyItem.java @@ -1,12 +1,17 @@ package com.cannolicatfish.rankine.items.alloys; import com.cannolicatfish.rankine.ProjectRankine; +import com.cannolicatfish.rankine.init.RankineRecipeTypes; +import com.cannolicatfish.rankine.recipe.AlloyCraftingRecipe; +import com.cannolicatfish.rankine.recipe.ElementRecipe; import com.cannolicatfish.rankine.recipe.helper.AlloyRecipeHelper; import com.cannolicatfish.rankine.util.PeriodicTableUtils; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.*; +import net.minecraft.item.crafting.ICraftingRecipe; +import net.minecraft.item.crafting.IRecipeType; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.ListNBT; import net.minecraft.util.NonNullList; @@ -20,7 +25,9 @@ import javax.annotation.Nullable; import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; public class AlloyItem extends Item { @@ -115,6 +122,21 @@ public List getPercents(String c) public void fillItemGroup(ItemGroup group, NonNullList items) { if (group == ItemGroup.SEARCH || group == ProjectRankine.setup.rankineMetals) { + /*if (Minecraft.getInstance().world != null) { + World worldIn = Minecraft.getInstance().world; + List s = worldIn.getRecipeManager().getRecipesForType(IRecipeType.CRAFTING).stream().filter(iCraftingRecipe -> iCraftingRecipe.getRecipeOutput().getItem() == this).collect(Collectors.toList()); + for (ICraftingRecipe recipe : s) { + System.out.println("looking at recipes"); + if (recipe instanceof AlloyCraftingRecipe && !items.contains(recipe.getRecipeOutput())) { + items.add(recipe.getRecipeOutput()); + } + + } + ItemStack stack = getAlloyItemStack(new AlloyData(defComp)); + if (!items.contains(stack)) { + items.add(stack); + } + }*/ items.add(getAlloyItemStack(new AlloyData(defComp))); } } diff --git a/src/main/java/com/cannolicatfish/rankine/items/alloys/IAlloyTool.java b/src/main/java/com/cannolicatfish/rankine/items/alloys/IAlloyTool.java index 29ca1deffa..e2973b7b0c 100644 --- a/src/main/java/com/cannolicatfish/rankine/items/alloys/IAlloyTool.java +++ b/src/main/java/com/cannolicatfish/rankine/items/alloys/IAlloyTool.java @@ -1,8 +1,12 @@ package com.cannolicatfish.rankine.items.alloys; import com.cannolicatfish.rankine.init.Config; +import com.cannolicatfish.rankine.init.RankineRecipeTypes; +import com.cannolicatfish.rankine.recipe.ElementRecipe; +import com.cannolicatfish.rankine.util.ElementUtils; import com.cannolicatfish.rankine.util.PeriodicTableUtils; import com.cannolicatfish.rankine.util.alloys.AlloyUtils; +import net.minecraft.client.Minecraft; import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.LivingEntity; import net.minecraft.item.Item; @@ -13,13 +17,15 @@ import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; +import javax.annotation.Nullable; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Random; public interface IAlloyTool { - PeriodicTableUtils utils = PeriodicTableUtils.getInstance(); + ElementUtils utils = ElementUtils.getInstance(); /* default double getDurabilityForDisplay(ItemStack stack,) { @@ -33,21 +39,21 @@ default double getDurabilityForDisplay(ItemStack stack,) { default int getAlloyDurability(String comp, AlloyUtils alloy) { - return utils.calcDurability(getElements(comp),getPercents(comp)) + alloy.getDurabilityBonus(); + return utils.calcDurability(getElementRecipes(comp,null),getPercents(comp)) + alloy.getDurabilityBonus(); } default float getAlloyEfficiency(String comp, AlloyUtils alloy) { - return utils.calcMiningSpeed(getElements(comp), getPercents(comp)) + alloy.getMiningSpeedBonus(); + return utils.calcMiningSpeed(getElementRecipes(comp,null), getPercents(comp)) + alloy.getMiningSpeedBonus(); } default int getAlloyEnchantability(String comp, AlloyUtils alloy) { - return utils.calcEnchantability(getElements(comp), getPercents(comp)) + alloy.getEnchantabilityBonus(); + return utils.calcEnchantability(getElementRecipes(comp,null), getPercents(comp)) + alloy.getEnchantabilityBonus(); } default int getAlloyMiningLevel(String comp, AlloyUtils alloy) { - return utils.calcMiningLevel(getElements(comp), getPercents(comp)) + alloy.getMiningLevelBonus(); + return utils.calcMiningLevel(getElementRecipes(comp,null), getPercents(comp)) + alloy.getMiningLevelBonus(); } @@ -74,11 +80,11 @@ default float getWearAsPercent(float modstat, float wear) } default float getAlloyAttackDamage(String comp, AlloyUtils alloy) { - return utils.calcDamage(getElements(comp), getPercents(comp)) + alloy.getAttackDamageBonus(); + return utils.calcDamage(getElementRecipes(comp,null), getPercents(comp)) + alloy.getAttackDamageBonus(); } default float getAlloyAttackSpeed(String comp, AlloyUtils alloy) { - return Math.max(utils.calcAttackSpeed(getElements(comp), getPercents(comp)) + alloy.getAttackSpeedBonus(), 0); + return Math.max(utils.calcAttackSpeed(getElementRecipes(comp,null), getPercents(comp)) + alloy.getAttackSpeedBonus(), 0); } default float getCorrResist(ItemStack stack, AlloyUtils alloy) @@ -90,7 +96,7 @@ default float getCorrResist(ItemStack stack, AlloyUtils alloy) if (getComposition(stack).size() != 0) { String comp = getComposition(stack).getCompound(0).get("comp").getString(); - return Math.max(Math.min(utils.calcCorrResist(getElements(comp),getPercents(comp)) + alloy.getCorrResistBonus(), 1),0); + return Math.max(Math.min(utils.calcCorrResist(getElementRecipes(comp,null),getPercents(comp)) + alloy.getCorrResistBonus(), 1),0); } else { return alloy.getCorrResistBonus(); @@ -108,7 +114,7 @@ default float getHeatResist(ItemStack stack, AlloyUtils alloy) if (getComposition(stack).size() != 0) { String comp = getComposition(stack).getCompound(0).get("comp").getString(); - return Math.max(Math.min(utils.calcHeatResist(getElements(comp),getPercents(comp)) + alloy.getHeatResistBonus(),1),0); + return Math.max(Math.min(utils.calcHeatResist(getElementRecipes(comp,null),getPercents(comp)) + alloy.getHeatResistBonus(),1),0); } else { return alloy.getHeatResistBonus(); @@ -124,7 +130,7 @@ default float getToughness(ItemStack stack, AlloyUtils alloy) if (getComposition(stack).size() != 0) { String comp = getComposition(stack).getCompound(0).get("comp").getString(); - return utils.calcToughness(getElements(comp),getPercents(comp)) + alloy.getToughnessBonus(); + return utils.calcToughness(getElementRecipes(comp,null),getPercents(comp)) + alloy.getToughnessBonus(); } else { return alloy.getToughnessBonus(); @@ -216,18 +222,26 @@ default ItemStack getAlloyItemStack(AlloyData alloyData, Item item) { return itemstack; } - default List getElements(String c) - { - //String c = getComposition(stack).getCompound(0).get("comp").getString(); - PeriodicTableUtils utils = PeriodicTableUtils.getInstance(); - String[] comp = c.split("-"); - List list = new ArrayList<>(); - for (String e: comp) - { - String str = e.replaceAll("[^A-Za-z]+", ""); - list.add(utils.getElementBySymbol(str)); + + + default List getElementRecipes(String c, @Nullable World worldIn) { + World w = Minecraft.getInstance().world; + if (worldIn == null && w != null) { + worldIn = w; } - return list; + if (worldIn != null) { + String[] comp = c.split("-"); + List list = new ArrayList<>(); + for (String e: comp) + { + String str = e.replaceAll("[^A-Za-z]+", ""); + worldIn.getRecipeManager().getRecipesForType(RankineRecipeTypes.ELEMENT).stream().filter(elementRecipe -> elementRecipe.getSymbol().equals(str)).findFirst().ifPresent(list::add); + } + return list; + } else { + return Collections.emptyList(); + } + } default List getPercents(String c) @@ -245,7 +259,7 @@ default List getPercents(String c) default List getEnchantments(String c, Item item, AlloyUtils alloy) { List enchantments = new ArrayList<>(); - List elementEn = utils.getEnchantments(getElements(c),getPercents(c)); + List elementEn = utils.getToolEnchantments(getElementRecipes(c, null),getPercents(c)); for (Enchantment e: elementEn) { if (e != null && !enchantments.contains(e)) diff --git a/src/main/java/com/cannolicatfish/rankine/items/indexer/ElementIndexerContainer.java b/src/main/java/com/cannolicatfish/rankine/items/indexer/ElementIndexerContainer.java index c0b5513d8d..0920d408a0 100644 --- a/src/main/java/com/cannolicatfish/rankine/items/indexer/ElementIndexerContainer.java +++ b/src/main/java/com/cannolicatfish/rankine/items/indexer/ElementIndexerContainer.java @@ -1,6 +1,8 @@ package com.cannolicatfish.rankine.items.indexer; +import com.cannolicatfish.rankine.recipe.ElementRecipe; import com.cannolicatfish.rankine.util.PeriodicTableUtils; +import net.minecraft.client.Minecraft; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.Container; @@ -8,6 +10,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.*; +import net.minecraft.world.World; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.SlotItemHandler; import net.minecraftforge.items.wrapper.InvWrapper; @@ -45,16 +48,16 @@ public void onContainerClosed(PlayerEntity playerIn) { } - public PeriodicTableUtils.Element getSlotItem() { + public ElementRecipe getSlotItem() { ItemStack stack = this.handler.getStackInSlot(0); - if (utils.hasElement(stack.getItem())) + World worldIn = Minecraft.getInstance().world; + if (utils.hasElementRecipe(stack, worldIn)) { - return utils.getElementFromItem(stack.getItem()); + return utils.getElementRecipe(stack, worldIn); } else { return null; } - } public ItemStack transferStackInSlot(PlayerEntity playerIn, int index) { diff --git a/src/main/java/com/cannolicatfish/rankine/items/indexer/ElementIndexerItem.java b/src/main/java/com/cannolicatfish/rankine/items/indexer/ElementIndexerItem.java index acf294dfed..f2b51a4dbc 100644 --- a/src/main/java/com/cannolicatfish/rankine/items/indexer/ElementIndexerItem.java +++ b/src/main/java/com/cannolicatfish/rankine/items/indexer/ElementIndexerItem.java @@ -54,7 +54,7 @@ public static class ElementIndexerIItemHandler extends ItemStackHandler { @Override public boolean isItemValid(int slot, @Nonnull ItemStack stack) { - return utils.hasElement(stack.getItem()); + return true; } } diff --git a/src/main/java/com/cannolicatfish/rankine/items/indexer/ElementIndexerScreen.java b/src/main/java/com/cannolicatfish/rankine/items/indexer/ElementIndexerScreen.java index 88c58758da..b0e11cf797 100644 --- a/src/main/java/com/cannolicatfish/rankine/items/indexer/ElementIndexerScreen.java +++ b/src/main/java/com/cannolicatfish/rankine/items/indexer/ElementIndexerScreen.java @@ -1,20 +1,21 @@ package com.cannolicatfish.rankine.items.indexer; import com.cannolicatfish.rankine.ProjectRankine; +import com.cannolicatfish.rankine.recipe.ElementRecipe; import com.cannolicatfish.rankine.util.PeriodicTableUtils; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.platform.GlStateManager; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.AbstractGui; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.screen.inventory.ContainerScreen; import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Util; import net.minecraft.util.math.MathHelper; import net.minecraft.util.text.ITextComponent; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import org.lwjgl.opengl.GL11; import java.text.DecimalFormat; @@ -22,9 +23,10 @@ import java.util.Collections; import java.util.Locale; +@OnlyIn(Dist.CLIENT) public class ElementIndexerScreen extends ContainerScreen { private int currentScroll = 100; - private PeriodicTableUtils.Element element = null; + private ElementRecipe element = null; private static final PeriodicTableUtils utils = new PeriodicTableUtils(); private ResourceLocation GUI = new ResourceLocation(ProjectRankine.MODID, "textures/gui/element_indexer.png"); public ElementIndexerScreen(ElementIndexerContainer screenContainer, PlayerInventory inv, ITextComponent titleIn) { @@ -48,22 +50,23 @@ protected void drawGuiContainerForegroundLayer(MatrixStack matrixStack, int x, i DecimalFormat df = Util.make(new DecimalFormat("##.#"), (p_234699_0_) -> { p_234699_0_.setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.ROOT)); }); + if (element != this.container.getSlotItem()) { element = this.container.getSlotItem(); } if (element != null) { - int durability = utils.calcDurability(Collections.singletonList(element),Collections.singletonList(this.currentScroll)); - int harvest = utils.calcMiningLevel(Collections.singletonList(element),Collections.singletonList(this.currentScroll)); - float mspeed = utils.calcMiningSpeed(Collections.singletonList(element),Collections.singletonList(this.currentScroll)); - float damage = utils.calcDamage(Collections.singletonList(element),Collections.singletonList(this.currentScroll)); - float attspeed = utils.calcAttackSpeed(Collections.singletonList(element),Collections.singletonList(this.currentScroll)); - int enchant = utils.calcEnchantability(Collections.singletonList(element),Collections.singletonList(this.currentScroll)); - float corr = utils.calcCorrResist(Collections.singletonList(element),Collections.singletonList(this.currentScroll)); - float heat = utils.calcHeatResist(Collections.singletonList(element),Collections.singletonList(this.currentScroll)); - float tough = utils.calcToughness(Collections.singletonList(element),Collections.singletonList(this.currentScroll)); - float elec = element.element.getElectrodePotentialFromPercent(this.currentScroll); + int durability = element.getDurability(this.currentScroll); + int harvest = element.getMiningLevel(this.currentScroll); + float mspeed = element.getMiningSpeed(this.currentScroll); + float damage = element.getDamage(this.currentScroll); + float attspeed = element.getAttackSpeed(this.currentScroll); + int enchant = element.getEnchantability(this.currentScroll); + float corr = element.getCorrosionResistance(this.currentScroll); + float heat = element.getHeatResistance(this.currentScroll); + float tough = element.getToughness(this.currentScroll); + float elec = element.getElectrodePotential(); drawString(matrixStack,Minecraft.getInstance().fontRenderer,"Durability: " + durability,12,30,(durability > 0 ? 0x55FF55 : durability < 0 ? 0xFF5555 : 0xffffff)); drawString(matrixStack,Minecraft.getInstance().fontRenderer,"Harvest Level: "+ harvest,12,42,(harvest > 0 ? 0x55FF55 : harvest < 0 ? 0xFF5555 : 0xffffff)); drawString(matrixStack,Minecraft.getInstance().fontRenderer,"Mining Speed: "+ df.format(mspeed),12,54,(mspeed > 0 ? 0x55FF55 : mspeed < 0 ? 0xFF5555 : 0xffffff)); @@ -75,17 +78,12 @@ protected void drawGuiContainerForegroundLayer(MatrixStack matrixStack, int x, i drawString(matrixStack,Minecraft.getInstance().fontRenderer,"Toughness: "+ df.format(tough * 100) + "%",12,126,(tough > 0 ? 0x55FF55 : tough < 0 ? 0xFF5555 : 0xffffff)); drawString(matrixStack,Minecraft.getInstance().fontRenderer,"E: "+ elec +"V",110,126,0x55FFFF); - int ylvl = 0; - for (Enchantment e : utils.getEnchantments(Collections.singletonList(element),Collections.singletonList(this.currentScroll))) { - if (e != null) { - drawCenteredString(matrixStack,Minecraft.getInstance().fontRenderer,e.getDisplayName(1).getString(),125,66 + ylvl,0x55FF55); - ylvl += 10; - } - if (ylvl == 30) { - break; - } + Enchantment e = element.getToolEnchantment(this.currentScroll); + if (e != null) { + drawCenteredString(matrixStack,Minecraft.getInstance().fontRenderer,e.getDisplayName(1).getString(),125,66,0x55FF55); } - drawString(matrixStack,Minecraft.getInstance().fontRenderer,element.toString(),32,10,0xffffff); + + drawString(matrixStack,Minecraft.getInstance().fontRenderer,element.getName().toUpperCase(Locale.ROOT),32,10,0xffffff); drawString(matrixStack,Minecraft.getInstance().fontRenderer,String.valueOf(element.getAtomicNumber()),138,32,0xffffff); drawScaledString(matrixStack,Minecraft.getInstance().fontRenderer,String.valueOf(element.getSymbol()),138,42, 2,0xffffff); } else diff --git a/src/main/java/com/cannolicatfish/rankine/items/tools/CrowbarItem.java b/src/main/java/com/cannolicatfish/rankine/items/tools/CrowbarItem.java index 2845c9af90..539014e73d 100644 --- a/src/main/java/com/cannolicatfish/rankine/items/tools/CrowbarItem.java +++ b/src/main/java/com/cannolicatfish/rankine/items/tools/CrowbarItem.java @@ -13,13 +13,13 @@ import net.minecraft.entity.LivingEntity; import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.fluid.FluidState; import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.IItemTier; import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; import net.minecraft.item.ToolItem; -import net.minecraft.util.Hand; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.SoundCategory; +import net.minecraft.util.*; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.RayTraceContext; @@ -108,20 +108,32 @@ public boolean onEntitySwing(ItemStack stack, LivingEntity entity) } return false; } - +/* + @Override + public ActionResultType onItemUse(ItemUseContext context) { + World worldIn = context.getWorld(); + BlockPos blockpos = context.getPos(); + BlockState bs = worldIn.getBlockState(blockpos); + if (worldIn.getTileEntity(blockpos) == null && worldIn.getFluidState(blockpos).isEmpty() && bs.isSolid() && context.getFace() != Direction.UP && context.getFace() != Direction.DOWN && bs.getBlockHardness(worldIn,blockpos) >= 0) { + if (context.getPlayer() == null || context.getPlayer().getPosition().getY() <= blockpos.getY()){ + worldIn.setBlockState(blockpos.offset(context.getFace()),worldIn.getBlockState(blockpos),2); + worldIn.setBlockState(blockpos,Blocks.AIR.getDefaultState(),2); + SoundType soundtype = worldIn.getBlockState(blockpos).getSoundType(worldIn, blockpos, null); + worldIn.playSound(blockpos.getX(),blockpos.getY(),blockpos.getZ(), soundtype.getPlaceSound(), SoundCategory.BLOCKS, (soundtype.getVolume() + 1.0F) / 2.0F, soundtype.getPitch() * 0.8F, false); + } + } + return super.onItemUse(context); + } +*/ public static int getSwingModifier(ItemStack stack) { return EnchantmentHelper.getEnchantmentLevel(RankineEnchantments.SWING, stack); } @Override public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) { - if (enchantment == RankineEnchantments.SWING || enchantment == Enchantments.MENDING || enchantment == Enchantments.VANISHING_CURSE) - { - return true; - } - else - { + if (enchantment == Enchantments.EFFICIENCY || enchantment == Enchantments.SILK_TOUCH || enchantment == Enchantments.FORTUNE ) { return false; } + return super.canApplyAtEnchantingTable(stack,enchantment); } } diff --git a/src/main/java/com/cannolicatfish/rankine/items/tools/HammerItem.java b/src/main/java/com/cannolicatfish/rankine/items/tools/HammerItem.java index fa7231363e..9df3d25d1a 100644 --- a/src/main/java/com/cannolicatfish/rankine/items/tools/HammerItem.java +++ b/src/main/java/com/cannolicatfish/rankine/items/tools/HammerItem.java @@ -103,7 +103,7 @@ public boolean hitEntity(ItemStack stack, LivingEntity target, LivingEntity atta LightningBoltEntity ent = new LightningBoltEntity(EntityType.LIGHTNING_BOLT,attacker.world); //ent.func_233576_c_(Vector3d.func_237492_c_(new BlockPos(target.getPosX(),target.getPosY(),target.getPosZ()))); ent.setPosition(target.getPosX(),target.getPosY(),target.getPosZ()); - ((ServerWorld)target.getEntityWorld()).addEntity(ent); + target.getEntityWorld().addEntity(ent); } if (getDazeModifier(stack) != 0) { @@ -127,19 +127,7 @@ public boolean hitEntity(ItemStack stack, LivingEntity target, LivingEntity atta return true; } - @Override - public void inventoryTick(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) { - if (entityIn instanceof PlayerEntity && isSelected) - { - PlayerEntity player = (PlayerEntity) entityIn; - if (player.swingingHand == Hand.OFF_HAND) - { - player.resetCooldown(); - player.swingingHand = Hand.MAIN_HAND; - } - } - } - +/* @Override public boolean onEntitySwing(ItemStack stack, LivingEntity entity) { @@ -171,7 +159,7 @@ public boolean onEntitySwing(ItemStack stack, LivingEntity entity) } return false; } - +*/ public void getExcavationResult(BlockPos pos, World worldIn, PlayerEntity player, ItemStack stack) { BlockRayTraceResult raytraceresult = rayTrace(worldIn, player, RayTraceContext.FluidMode.ANY); List positions = new ArrayList<>(); @@ -256,14 +244,14 @@ public ActionResultType onItemUse(ItemUseContext context) { worldIn.setBlockState(pos,Blocks.ANVIL.getDefaultState().with(HorizontalBlock.HORIZONTAL_FACING,anvil.get(HorizontalBlock.HORIZONTAL_FACING)),2); worldIn.playSound(context.getPlayer(),pos, SoundEvents.ENTITY_IRON_GOLEM_REPAIR,SoundCategory.BLOCKS,1.0f,worldIn.getRandom().nextFloat() * 0.4F + 0.8F); context.getItem().damageItem(100, context.getPlayer(), (entity) -> entity.sendBreakAnimation(EquipmentSlotType.MAINHAND)); - return ActionResultType.PASS; + return ActionResultType.SUCCESS; } else if (anvil.getBlock() == Blocks.DAMAGED_ANVIL && (context.getItem().getMaxDamage() - context.getItem().getDamage()) >= 100) { worldIn.setBlockState(pos,Blocks.CHIPPED_ANVIL.getDefaultState().with(HorizontalBlock.HORIZONTAL_FACING,anvil.get(HorizontalBlock.HORIZONTAL_FACING)),2); worldIn.playSound(context.getPlayer(),pos, SoundEvents.ENTITY_IRON_GOLEM_REPAIR,SoundCategory.BLOCKS,1.0f,worldIn.getRandom().nextFloat() * 0.4F + 0.8F); context.getItem().damageItem(100, context.getPlayer(), (entity) -> entity.sendBreakAnimation(EquipmentSlotType.MAINHAND)); - return ActionResultType.PASS; + return ActionResultType.SUCCESS; } } - return ActionResultType.FAIL; + return super.onItemUse(context); } } diff --git a/src/main/java/com/cannolicatfish/rankine/items/tools/OreCyclerItem.java b/src/main/java/com/cannolicatfish/rankine/items/tools/OreCyclerItem.java index b2078b7cc7..52d41a5b3f 100644 --- a/src/main/java/com/cannolicatfish/rankine/items/tools/OreCyclerItem.java +++ b/src/main/java/com/cannolicatfish/rankine/items/tools/OreCyclerItem.java @@ -1,11 +1,24 @@ package com.cannolicatfish.rankine.items.tools; import com.cannolicatfish.rankine.blocks.RankineOreBlock; +import com.cannolicatfish.rankine.init.RankineRecipeTypes; +import com.cannolicatfish.rankine.recipe.CrushingRecipe; +import com.cannolicatfish.rankine.recipe.ElementRecipe; +import com.cannolicatfish.rankine.util.ElementEquation; import net.minecraft.item.Item; import net.minecraft.item.ItemUseContext; +import net.minecraft.item.Items; import net.minecraft.util.ActionResultType; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Util; import net.minecraft.world.World; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.util.List; +import java.util.Locale; +import java.util.Random; + public class OreCyclerItem extends Item { public OreCyclerItem(Properties properties) { super(properties); diff --git a/src/main/java/com/cannolicatfish/rankine/items/tools/RankineToolMaterials.java b/src/main/java/com/cannolicatfish/rankine/items/tools/RankineToolMaterials.java index 14490ca0a5..15c01c40d9 100644 --- a/src/main/java/com/cannolicatfish/rankine/items/tools/RankineToolMaterials.java +++ b/src/main/java/com/cannolicatfish/rankine/items/tools/RankineToolMaterials.java @@ -9,7 +9,7 @@ import java.util.function.Supplier; public enum RankineToolMaterials implements IItemTier { - FLINT(0, 81, 2.0F, 0.0F, 5, () -> { + FLINT(1, 81, 3.0F, 1.0F, 8, () -> { return Ingredient.fromItems(Items.FLINT); }), ALLOY(0, 63, 2.0F, 0.0F, 5, () -> { diff --git a/src/main/java/com/cannolicatfish/rankine/recipe/AlloyCraftingRecipe.java b/src/main/java/com/cannolicatfish/rankine/recipe/AlloyCraftingRecipe.java index c8d3977ce6..46099c083b 100644 --- a/src/main/java/com/cannolicatfish/rankine/recipe/AlloyCraftingRecipe.java +++ b/src/main/java/com/cannolicatfish/rankine/recipe/AlloyCraftingRecipe.java @@ -17,7 +17,6 @@ import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.INBT; import net.minecraft.network.PacketBuffer; -import net.minecraft.server.MinecraftServer; import net.minecraft.util.JSONUtils; import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; @@ -49,8 +48,10 @@ public static void setCraftingSize(int width, int height) { private final String group; private final boolean inherit; public static final AlloyCraftingRecipe.Serializer SERIALIZER = new AlloyCraftingRecipe.Serializer(); + private final String displayComp; - public AlloyCraftingRecipe(ResourceLocation idIn, String groupIn, int recipeWidthIn, int recipeHeightIn, NonNullList recipeItemsIn, ItemStack recipeOutputIn, boolean inherit) { + public AlloyCraftingRecipe(ResourceLocation idIn, String groupIn, int recipeWidthIn, int recipeHeightIn, NonNullList recipeItemsIn, ItemStack recipeOutputIn, boolean inherit, + String displayCompIn) { this.id = idIn; this.group = groupIn; this.recipeWidth = recipeWidthIn; @@ -58,6 +59,7 @@ public AlloyCraftingRecipe(ResourceLocation idIn, String groupIn, int recipeWidt this.recipeItems = recipeItemsIn; this.recipeOutput = recipeOutputIn; this.inherit = inherit; + this.displayComp = displayCompIn; } public ResourceLocation getId() { @@ -80,6 +82,16 @@ public String getGroup() { * possible result (e.g. it's dynamic and depends on its inputs), then return an empty stack. */ public ItemStack getRecipeOutput() { + ItemStack stack = this.recipeOutput; + if (!this.displayComp.equals("")) + { + AlloyItem.addAlloy(stack,new AlloyData(this.displayComp)); + CompoundNBT nbt = stack.getTag(); + World worldIn = Minecraft.getInstance().world; + if (nbt != null && nbt.getString("nameAdd").isEmpty() && worldIn != null) { + nbt.putString("nameAdd", AlloyRecipeHelper.getAlloyFromComposition(this.displayComp,worldIn)); + } + } return this.recipeOutput; } @@ -373,7 +385,8 @@ public AlloyCraftingRecipe read(ResourceLocation recipeId, JsonObject json) { NonNullList nonnulllist = AlloyCraftingRecipe.deserializeIngredients(astring, map, i, j); ItemStack itemstack = AlloyCraftingRecipe.deserializeItem(JSONUtils.getJsonObject(json, "result")); boolean e = json.has("inherit") && JSONUtils.getBoolean(json, "inherit"); - return new AlloyCraftingRecipe(recipeId, s, i, j, nonnulllist, itemstack, e); + String dis = JSONUtils.getString(json, "displayComp", ""); + return new AlloyCraftingRecipe(recipeId, s, i, j, nonnulllist, itemstack, e,dis); } public AlloyCraftingRecipe read(ResourceLocation recipeId, PacketBuffer buffer) { @@ -388,7 +401,8 @@ public AlloyCraftingRecipe read(ResourceLocation recipeId, PacketBuffer buffer) ItemStack itemstack = buffer.readItemStack(); boolean e = buffer.readBoolean(); - return new AlloyCraftingRecipe(recipeId, s, i, j, nonnulllist, itemstack, e); + String dis = buffer.readString(); + return new AlloyCraftingRecipe(recipeId, s, i, j, nonnulllist, itemstack, e,dis); } public void write(PacketBuffer buffer, AlloyCraftingRecipe recipe) { @@ -402,6 +416,7 @@ public void write(PacketBuffer buffer, AlloyCraftingRecipe recipe) { } buffer.writeItemStack(recipe.recipeOutput); buffer.writeBoolean(recipe.inherit); + buffer.writeString(recipe.displayComp); } } } \ No newline at end of file diff --git a/src/main/java/com/cannolicatfish/rankine/recipe/CrucibleRecipe.java b/src/main/java/com/cannolicatfish/rankine/recipe/CrucibleRecipe.java new file mode 100644 index 0000000000..b70f2524cb --- /dev/null +++ b/src/main/java/com/cannolicatfish/rankine/recipe/CrucibleRecipe.java @@ -0,0 +1,4 @@ +package com.cannolicatfish.rankine.recipe; + +public class CrucibleRecipe { +} diff --git a/src/main/java/com/cannolicatfish/rankine/recipe/ElementRecipe.java b/src/main/java/com/cannolicatfish/rankine/recipe/ElementRecipe.java new file mode 100644 index 0000000000..4fe759a74e --- /dev/null +++ b/src/main/java/com/cannolicatfish/rankine/recipe/ElementRecipe.java @@ -0,0 +1,503 @@ +package com.cannolicatfish.rankine.recipe; + +import com.cannolicatfish.rankine.init.RankineItems; +import com.cannolicatfish.rankine.init.RankineRecipeTypes; +import com.cannolicatfish.rankine.util.ElementEquation; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.item.crafting.IRecipeSerializer; +import net.minecraft.item.crafting.IRecipeType; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.network.PacketBuffer; +import net.minecraft.tags.ITag; +import net.minecraft.tags.ItemTags; +import net.minecraft.util.JSONUtils; +import net.minecraft.util.NonNullList; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.ForgeRegistryEntry; + +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +public class ElementRecipe implements IRecipe { + public static final ElementRecipe.Serializer SERIALIZER = new ElementRecipe.Serializer(); + private final ResourceLocation id; + private final String name; + private final String symbol; + private final int num; + private final int color; + private final float potential; + private final List items; + private final List values; + private final List stats; + private final ResourceLocation toolEnchantment; + private final int toolEnchantmentMin; + private final ResourceLocation armorEnchantment; + private final int armorEnchantmentMin; + private final String arrowType; + private final int arrowTypeIn; + + public ElementRecipe(ResourceLocation idIn, String nameIn, String symbolIn, int numIn, int colorIn, float potentialIn, List items, List values, List statsIn, + ResourceLocation toolEnchantmentsIn, int toolEnchantMinIn, ResourceLocation armorEnchantmentsIn, int armorEnchantMinIn, + String arrowTypeIn, int arrowTypeMinIn) { + this.id = idIn; + this.num = numIn; + this.color = colorIn; + this.potential = potentialIn; + this.items = items; + this.values = values; + this.name = nameIn; + this.symbol = symbolIn; + this.stats = statsIn; + this.toolEnchantment = toolEnchantmentsIn; + this.toolEnchantmentMin =toolEnchantMinIn; + this.armorEnchantment = armorEnchantmentsIn; + this.armorEnchantmentMin = armorEnchantMinIn; + this.arrowType = arrowTypeIn; + this.arrowTypeIn = arrowTypeMinIn; + } + + @Override + public boolean matches(IInventory inv, World worldIn) { + Item reg = inv.getStackInSlot(0).getItem(); + if (reg != Items.AIR) { + for (String s : items) { + if (s.contains("T#")) { + ITag tag = ItemTags.getCollection().get(new ResourceLocation(s.split("T#")[1])); + if (tag != null && tag.contains(reg)){ + return true; + } + } else if (s.contains("I#")) { + Item item = ForgeRegistries.ITEMS.getValue(new ResourceLocation(s.split("I#")[1])); + if (item != Items.AIR && item == reg) { + return true; + } + } + } + } + return false; + } + + @Override + public boolean isDynamic() { + return true; + } + + public String getGroup() { + return ""; + } + + @Override + public ItemStack getCraftingResult(IInventory inv) { + return ItemStack.EMPTY; + } + + @Override + public boolean canFit(int width, int height) { + return false; + } + + @Override + public ItemStack getRecipeOutput() { + return new ItemStack(RankineItems.ELEMENT.get()); + } + + @Override + public NonNullList getIngredients() { + NonNullList list = NonNullList.withSize(items.size(),Ingredient.EMPTY); + int count = 0; + for (String s : getItems()) { + + if (s.contains("T#")) { + ITag tag = ItemTags.getCollection().get(new ResourceLocation(s.split("T#")[1])); + + if (tag != null){ + list.set(count,Ingredient.fromTag(tag)); + } + } else if (s.contains("I#")) { + Item item = ForgeRegistries.ITEMS.getValue(new ResourceLocation(s.split("I#")[1])); + if (item != null) { + list.set(count,Ingredient.fromItems(() -> item)); + } + } + count++; + } + return list; + } + + @Override + public IRecipeType getType() { + return RankineRecipeTypes.ELEMENT; + } + + public String getName() { + return this.name; + } + + public String getSymbol() { + return this.symbol; + } + + public int getAtomicNumber() { + return this.num; + } + + public int getColor() { + return this.color; + } + + public float getElectrodePotential() { + return potential; + } + + public List getStats() { + return stats; + } + + public ElementEquation getDurabilityFormula() { + return this.getStats().get(0); + } + + public int getDurability(int x) { return this.getDurabilityFormula().calculateRounded(x);} + + public ElementEquation getMiningSpeedFormula() { + return this.getStats().get(1); + } + + public float getMiningSpeed(int x) { return this.getMiningSpeedFormula().calculateFloat(x);} + + public ElementEquation getMiningLevelFormula() { + return this.getStats().get(2); + } + + public int getMiningLevel(int x) { return this.getMiningLevelFormula().calculateRounded(x);} + + public ElementEquation getEnchantabilityFormula() { + return this.getStats().get(3); + } + + public int getEnchantability(int x) { return this.getEnchantabilityFormula().calculateRounded(x);} + + public ElementEquation getDamageFormula() { + return this.getStats().get(4); + } + + public float getDamage(int x) { return this.getDamageFormula().calculateFloat(x);} + + public ElementEquation getAttackSpeedFormula() { + return this.getStats().get(5); + } + + public float getAttackSpeed(int x) { return this.getAttackSpeedFormula().calculateFloat(x);} + + public ElementEquation getCorrosionResistanceFormula() { + return this.getStats().get(6); + } + + public float getCorrosionResistance(int x) { return this.getCorrosionResistanceFormula().calculateFloat(x);} + + public ElementEquation getHeatResistanceFormula() { + return this.getStats().get(7); + } + + public float getHeatResistance(int x) { return this.getHeatResistanceFormula().calculateFloat(x);} + + public ElementEquation getKnockbackResistanceFormula() { + return this.getStats().get(8); + } + + public float getKnockbackResistance(int x) { return this.getKnockbackResistanceFormula().calculateFloat(x);} + + public ElementEquation getToughnessFormula() { + return this.getStats().get(9); + } + + public float getToughness(int x) { return this.getToughnessFormula().calculateFloat(x);} + + public ResourceLocation getToolEnchantmentVar() { + return toolEnchantment; + } + + public int getToolEnchantmentMin() { + return toolEnchantmentMin; + } + + public ResourceLocation getArmorEnchantmentVar() { + return armorEnchantment; + } + + public int getArmorEnchantmentMin() { + return armorEnchantmentMin; + } + + public String getArrowTypeVar() { + return arrowType; + } + + public int getArrowTypeMin() { + return arrowTypeIn; + } + + public Enchantment getToolEnchantment(int x) { + if (x >= getToolEnchantmentMin()) { + return ForgeRegistries.ENCHANTMENTS.getValue(this.toolEnchantment); + } else { + return null; + } + } + + public Enchantment getArmorEnchantment(int x) { + if (x >= getArmorEnchantmentMin()) { + return ForgeRegistries.ENCHANTMENTS.getValue(this.armorEnchantment); + } else { + return null; + } + } + + public Enchantment getArrowType(int x) { + if (x >= getArrowTypeMin()) { + return null; + } else { + return null; + } + } + + public List getItems() { + return items; + } + + public List getValues() { + return values; + } + + @Override + public ResourceLocation getId() { + return this.id; + } + + @Override + public IRecipeSerializer getSerializer() { + return SERIALIZER; + } + + + + public int getMaterialCount(Item reg) { + for (int i = 0; i < getItems().size(); i++) { + String s = getItems().get(i); + if (s.contains("T#")) { + ITag tag = ItemTags.getCollection().get(new ResourceLocation(s.split("T#")[1])); + if (tag != null && tag.contains(reg)){ + return getValues().get(i); + } + } else if (s.contains("I#")) { + Item item = ForgeRegistries.ITEMS.getValue(new ResourceLocation(s.split("I#")[1])); + if (item != Items.AIR && reg == item) { + return getValues().get(i); + } + } + } + return 0; + } + + public static class Serializer extends ForgeRegistryEntry> implements IRecipeSerializer { + + @Override + public ElementRecipe read(ResourceLocation elementId, JsonObject json) { + String n = json.get("name").getAsString().toLowerCase(Locale.ROOT); + String s = json.get("symbol").getAsString(); + int t = json.get("atomic").getAsInt(); + int c; + if (json.has("color")) { + c = Math.max(0,json.get("color").getAsInt()); + } else { + c = 16777215; + } + float p; + if (json.has("potential")) { + p = json.get("potential").getAsFloat(); + } else { + p = 0; + } + JsonArray it = JSONUtils.getJsonArray(json,"items"); + JsonArray val = JSONUtils.getJsonArray(json,"values"); + List itemList = new ArrayList<>(); + List valueList = new ArrayList<>(); + for (int i = 0; i < it.size(); i++) { + itemList.add(i,it.get(i).getAsString()); + valueList.add(i,val.get(i).getAsInt()); + } + String[] stats = new String[]{"durability","miningspeed","mininglevel","enchantability","damage","attackspeed", + "corrosionresist","heatresist","knockbackresist","toughness"}; + List equations = new ArrayList<>(); + int index = 0; + for (String stat : stats) { + if (json.has(stat)) { + JsonObject object = JSONUtils.getJsonObject(json, stat); + JsonArray breaks = JSONUtils.getJsonArray(object,"breaks"); + JsonArray formulas = JSONUtils.getJsonArray(object,"formulas"); + JsonArray a = JSONUtils.getJsonArray(object,"a"); + JsonArray b = JSONUtils.getJsonArray(object,"b"); + JsonArray modifiers = JSONUtils.getJsonArray(object,"modifiers"); + JsonArray limit = JSONUtils.getJsonArray(object,"limit"); + + int[] breaksIn = new int[breaks.size()]; + ElementEquation.FormulaType[] formulasIn = new ElementEquation.FormulaType[breaks.size()]; + float[] aIn = new float[breaks.size()]; + float[] bIn = new float[breaks.size()]; + ElementEquation.FormulaModifier[] modifiersIn = new ElementEquation.FormulaModifier[breaks.size()]; + float[] limitIn = new float[breaks.size()]; + for (int i = 0; i < breaks.size(); i++) { + breaksIn[i] = breaks.get(i).getAsInt(); + formulasIn[i] = ElementEquation.FormulaType.valueOf(formulas.get(i).getAsString().toUpperCase(Locale.ROOT)); + aIn[i] = a.get(i).getAsFloat(); + bIn[i] = b.get(i).getAsFloat(); + modifiersIn[i] = ElementEquation.FormulaModifier.valueOf(modifiers.get(i).getAsString().toUpperCase(Locale.ROOT)); + limitIn[i] = limit.get(i).getAsFloat(); + } + equations.add(index,new ElementEquation(breaksIn,formulasIn,aIn,bIn,modifiersIn,limitIn)); + } else { + equations.add(index,new ElementEquation()); + } + index++; + } + ResourceLocation toolEnch; + int toolEnchMin; + ResourceLocation armorEnch; + int armorEnchMin; + String arrowType; + int arrowTypeMin; + if (json.has("toolenchantment")) { + toolEnch = new ResourceLocation(json.get("toolenchantment").getAsString()); + } else { + toolEnch = null; + } + if (json.has("toolenchantmentmin")) { + toolEnchMin = json.get("toolenchantmentmin").getAsInt(); + } else { + toolEnchMin = 0; + } + if (json.has("armorenchantment")) { + armorEnch = new ResourceLocation(json.get("armorenchantment").getAsString()); + } else { + armorEnch = null; + } + if (json.has("armorenchantmentmin")) { + armorEnchMin = json.get("armorenchantmentmin").getAsInt(); + } else { + armorEnchMin = 0; + } + if (json.has("arrowtype")) { + arrowType = json.get("arrowtype").getAsString(); + } else { + arrowType = null; + } + if (json.has("arrowtypemin")) { + arrowTypeMin = json.get("arrowtypemin").getAsInt(); + } else { + arrowTypeMin = 0; + } + return new ElementRecipe(elementId,n,s,t,c,p,itemList,valueList,equations,toolEnch,toolEnchMin,armorEnch,armorEnchMin,arrowType,arrowTypeMin); + } + + @Nullable + @Override + public ElementRecipe read(ResourceLocation elementId, PacketBuffer buffer) { + List equations = new ArrayList<>(); + String name = buffer.readString(); + String sym = buffer.readString(); + int atomic = buffer.readInt(); + int color = Math.max(0,buffer.readInt()); + float potential = buffer.readFloat(); + + int itemSize = buffer.readInt(); + List itemList = new ArrayList<>(); + List valueList = new ArrayList<>(); + for (int i = 0; i < itemSize; i++) { + itemList.add(i,buffer.readString()); + valueList.add(i,buffer.readInt()); + } + + for (int j = 0; j < 10; j++) { + boolean stat = buffer.readBoolean(); + if (stat) { + int breaks_dur = buffer.readInt(); + int[] breaksIn = new int[breaks_dur]; + ElementEquation.FormulaType[] formulasIn = new ElementEquation.FormulaType[breaks_dur]; + float[] aIn = new float[breaks_dur]; + float[] bIn = new float[breaks_dur]; + ElementEquation.FormulaModifier[] modifiersIn = new ElementEquation.FormulaModifier[breaks_dur]; + float[] limitIn = new float[breaks_dur]; + for (int i = 0; i < breaks_dur; i++) { + breaksIn[i] = buffer.readInt(); + formulasIn[i] = ElementEquation.FormulaType.valueOf(buffer.readString().toUpperCase(Locale.ROOT)); + aIn[i] = buffer.readFloat(); + bIn[i] = buffer.readFloat(); + modifiersIn[i] = ElementEquation.FormulaModifier.valueOf(buffer.readString().toUpperCase(Locale.ROOT)); + limitIn[i] = buffer.readFloat(); + } + equations.add(j,new ElementEquation(breaksIn,formulasIn,aIn,bIn,modifiersIn,limitIn)); + } else { + equations.add(j,new ElementEquation()); + } + } + + ResourceLocation toolEnch = new ResourceLocation(buffer.readString()); + int toolEnchMin = buffer.readInt(); + ResourceLocation armorEnch = new ResourceLocation(buffer.readString()); + int armorEnchMin = buffer.readInt(); + String arrowType = buffer.readString(); + int arrowTypeMin = buffer.readInt(); + + + return new ElementRecipe(elementId,name,sym,atomic,color,potential,itemList,valueList,equations,toolEnch,toolEnchMin,armorEnch,armorEnchMin,arrowType,arrowTypeMin); + } + + @Override + public void write(PacketBuffer buffer, ElementRecipe element) { + buffer.writeString(element.getName()); + buffer.writeString(element.getSymbol()); + buffer.writeInt(element.getAtomicNumber()); + buffer.writeInt(element.getColor()); + buffer.writeFloat(element.getElectrodePotential()); + + buffer.writeInt(element.getItems().size()); + for (int i = 0; i < element.getItems().size(); i++) { + buffer.writeString(element.getItems().get(i)); + buffer.writeInt(element.getValues().get(i)); + } + + for (int j = 0; j < 10; j++) { + ElementEquation formula = element.getStats().get(j); + buffer.writeBoolean(!formula.isEmpty()); + if (!formula.isEmpty()) { + buffer.writeInt(formula.getBreaks().length); + for (int i = 0; i < formula.getBreaks().length; i++) { + buffer.writeInt(formula.getBreaks()[i]); + buffer.writeString(formula.getFormulaTypes()[i].toString().toUpperCase(Locale.ROOT)); + buffer.writeFloat(formula.getA()[i]); + buffer.writeFloat(formula.getB()[i]); + buffer.writeString(formula.getFormulaModifiers()[i].toString().toUpperCase(Locale.ROOT)); + buffer.writeFloat(formula.getLimit()[i]); + } + } + } + buffer.writeString(element.getToolEnchantmentVar().toString()); + buffer.writeInt(element.getToolEnchantmentMin()); + buffer.writeString(element.getArmorEnchantmentVar().toString()); + buffer.writeInt(element.getArmorEnchantmentMin()); + buffer.writeString(element.getArrowTypeVar()); + buffer.writeInt(element.getArrowTypeMin()); + } + } +} diff --git a/src/main/java/com/cannolicatfish/rankine/recipe/helper/AlloyRecipeHelper.java b/src/main/java/com/cannolicatfish/rankine/recipe/helper/AlloyRecipeHelper.java index 32f0b4b1a1..c6e07db0e4 100644 --- a/src/main/java/com/cannolicatfish/rankine/recipe/helper/AlloyRecipeHelper.java +++ b/src/main/java/com/cannolicatfish/rankine/recipe/helper/AlloyRecipeHelper.java @@ -136,6 +136,9 @@ public static String getAlloyFromComposition(String comp, World worldIn) { if (name.contains(" Ingot")) { name = name.split(" Ingot")[0]; } + if (name.contains(" Alloy") && !name.contains("Heavy Alloy")) { + name = name.split(" Alloy")[0]; + } return name; } } diff --git a/src/main/java/com/cannolicatfish/rankine/util/ElementEquation.java b/src/main/java/com/cannolicatfish/rankine/util/ElementEquation.java new file mode 100644 index 0000000000..3f5d47f264 --- /dev/null +++ b/src/main/java/com/cannolicatfish/rankine/util/ElementEquation.java @@ -0,0 +1,131 @@ +package com.cannolicatfish.rankine.util; + + +public class ElementEquation { + + int[] breaks; + FormulaType[] formulaTypes; + FormulaModifier[] formulaModifiers; + float[] a; + float[] b; + float[] limit; + public ElementEquation(int[] breaksIn, FormulaType[] formulaTypesIn, float[] aIn, float[] bIn, FormulaModifier[] formulaModifiersIn, float[] limitIn) { + this.breaks = breaksIn; + this.formulaTypes = formulaTypesIn; + this.a = aIn; + this.b = bIn; + this.formulaModifiers = formulaModifiersIn; + this.limit = limitIn; + } + + public ElementEquation() { + this(new int[]{},new FormulaType[]{},new float[]{},new float[]{},new FormulaModifier[]{},new float[]{}); + } + + public float calculateFloat(int x) { + int index = 0; + for (int br : breaks) { + if (x <= br) { + return applyFormulaModifier(constructFormula(x,index),index); + } + index += 1; + } + return 0; + } + + + public int calculateRounded(int x) { + int index = 0; + for (int br : breaks) { + if (x <= br) { + return Math.round(applyFormulaModifier(constructFormula(x,index),index)); + } + index += 1; + } + return 0; + } + + public float applyFormulaModifier(float output, int index) { + switch (formulaModifiers[index]) { + case ABSOLUTE_VALUE: + return Math.abs(output); + case CEILING: + return (float) Math.ceil(output); + case FLOOR: + return (float) Math.floor(output); + case MAX: + return Math.max(output,limit[index]); + case MIN: + return Math.min(output,limit[index]); + default: + case NONE: + return output; + } + } + + public float constructFormula(int x, int index) { + switch (formulaTypes[index]) { + case LINEAR: + default: + return a[index] * x + b[index]; + case POWER: + return (float) (Math.pow(x,a[index]) + b[index]); + case EXPONENTIAL: + return (float) (Math.pow(a[index],x) + b[index]); + case LOGARITHMIC: + return (float) (a[index]*Math.log(x) + b[index]); + case LOG10: + return (float) (a[index]*Math.log10(x) + b[index]); + case CONSTANT: + return (a[index]); + } + + } + + public boolean isEmpty() { + return breaks.length == 0; + } + + public int[] getBreaks() { + return breaks; + } + + public FormulaType[] getFormulaTypes() { + return formulaTypes; + } + + public float[] getA() { + return a; + } + + public float[] getB() { + return b; + } + + public FormulaModifier[] getFormulaModifiers() { + return formulaModifiers; + } + + public float[] getLimit() { + return limit; + } + + public enum FormulaType { + LINEAR, + POWER, + EXPONENTIAL, + LOGARITHMIC, + LOG10, + CONSTANT + + } + + public enum FormulaModifier { + ABSOLUTE_VALUE, + FLOOR, + CEILING, + MAX, + MIN, + NONE + } +} diff --git a/src/main/java/com/cannolicatfish/rankine/util/ElementUtils.java b/src/main/java/com/cannolicatfish/rankine/util/ElementUtils.java new file mode 100644 index 0000000000..ee0b4629a6 --- /dev/null +++ b/src/main/java/com/cannolicatfish/rankine/util/ElementUtils.java @@ -0,0 +1,257 @@ +package com.cannolicatfish.rankine.util; + +import com.cannolicatfish.rankine.recipe.ElementRecipe; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.inventory.EquipmentSlotType; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class ElementUtils { + + private static final ElementUtils INSTANCE = new ElementUtils(); + + public static ElementUtils getInstance() { + return INSTANCE; + } + + public int calcDurability(List elements, List percents) + { + int index = 0; + int durability = 0; + for (ElementRecipe e: elements) + { + durability += e.getDurability(percents.get(index)); + index++; + } + + return durability; + } + + public float calcMiningSpeed(List elements, List percents) + { + int index = 0; + float miningSpeed = 0f; + for (ElementRecipe e: elements) + { + miningSpeed += e.getMiningSpeed(percents.get(index)); + index++; + } + + return miningSpeed; + } + + public int calcMiningLevel(List elements, List percents) + { + int index = 0; + List levels = new ArrayList<>(); + for (ElementRecipe e: elements) + { + levels.add(e.getMiningLevel(percents.get(index))); + index++; + } + if (levels.size() > 0) { + int min = Math.min(Collections.min(levels),0); + return Collections.max(levels) - min; + } else { + return 0; + } + } + + public float calcArrowDamage(List elements, List percents) + { + int hl = calcMiningLevel(elements,percents); + float dmg = calcDamage(elements,percents); + + return 2f + 0.5f*hl + 0.5f*dmg; + } + + public int calcDamageReduceAmount(List elements, List percents, EquipmentSlotType slotType) + { + int base = slotType == EquipmentSlotType.CHEST ? 3 : slotType == EquipmentSlotType.LEGS ? 2 : 1; + int index = 0; + List levels = new ArrayList<>(); + for (ElementRecipe e: elements) + { + levels.add(e.getMiningLevel(percents.get(index))); + index++; + } + int dr = Collections.max(levels); + if (slotType == EquipmentSlotType.CHEST || slotType == EquipmentSlotType.LEGS) { + return Math.min(base + dr,10); + } else if (slotType == EquipmentSlotType.FEET) { + if (dr >= 5) { + return base + 2; + } else if (dr >= 3) { + return base + 1; + } else { + return base; + } + } else { + if (dr >= 5) { + return base + 3; + } else if (dr >= 3) { + return base + 2; + } else if (dr >= 1) { + return base + 1; + } else { + return base; + } + } + } + + public float calcDamage(List elements, List percents) // takes max; 0 -> 4 (strongest) + { + int index = 0; + List levels = new ArrayList<>(); + for (ElementRecipe e: elements) { + levels.add(e.getDamage(percents.get(index))); + index++; + } + if (levels.size() > 0) { + float min = Math.min(Collections.min(levels),0); + return Collections.max(levels) - min; + } else { + return 0; + } + + } + + public float calcAttackSpeed(List elements, List percents) // takes max; 0 -> 3 adds to preexisting attack speed (-3 -> 0 maximum attack speed); + { + int index = 0; + List levels = new ArrayList<>(); + for (ElementRecipe e: elements) + { + levels.add(e.getAttackSpeed(percents.get(index))); + index++; + } + if (levels.size() > 0) { + float min = Math.min(Collections.min(levels),0); + return Collections.max(levels) - min; + } else { + return 0; + } + } + + public int calcEnchantability(List elements, List percents) + { + int index = 0; + int enchant = 0; + for (ElementRecipe e: elements) + { + enchant += e.getEnchantability(percents.get(index)); + index++; + } + + return enchant; + } + + public float calcCorrResist(List elements, List percents) + { + int index = 0; + float corrResist = 0f; + for (ElementRecipe e: elements) + { + corrResist += e.getCorrosionResistance(percents.get(index)); + index++; + } + + return corrResist; + } + + public float calcHeatResist(List elements, List percents) + { + int index = 0; + float heatResist = 0f; + for (ElementRecipe e: elements) + { + heatResist += e.getHeatResistance(percents.get(index)); + index++; + } + + return heatResist; + } + + public float calcToughness(List elements, List percents) + { + int index = 0; + float tough = 0f; + for (ElementRecipe e: elements) + { + tough += e.getToughness(percents.get(index)); + index++; + } + + return tough; + } + + + public int calcArmorDurability(List elements, List percents, int extra, EquipmentSlotType slotType) + { + final int[] MAX_DAMAGE_ARRAY = new int[]{13, 15, 16, 11}; + int durability = calcDurability(elements,percents) + extra; + if (durability <= 100) { + return Math.round(MAX_DAMAGE_ARRAY[slotType.getIndex()] * durability/10f); + } else { + return Math.round(MAX_DAMAGE_ARRAY[slotType.getIndex()] * (10 + (durability-100)/50f)); + } + } + + public int calcArmorToughness(List elements, List percents) + { + int index = 0; + float tough = 0f; + for (ElementRecipe e: elements) + { + tough += e.getToughness(percents.get(index)); + index++; + } + if (tough >= 0.4) { + return 4; + } else if (tough >= 0.3) { + return 3; + } else if (tough >= 0.2){ + return 2; + } else if (tough >= 0.1){ + return 1; + } else { + return 0; + } + } + + public List getToolEnchantments(List elements, List percents) + { + int index = 0; + List enchantments = new ArrayList<>(); + for (ElementRecipe e: elements) + { + Enchantment en = e.getToolEnchantment(percents.get(index)); + if (en != null) + { + enchantments.add(en); + } + index++; + } + + return enchantments; + } + + public List getArmorEnchantments(List elements, List percents) + { + int index = 0; + List enchantments = new ArrayList<>(); + for (ElementRecipe e: elements) + { + Enchantment en = e.getToolEnchantment(percents.get(index)); + if (en != null && !enchantments.contains(en)) + { + enchantments.add(en); + } + index++; + } + + return enchantments; + } +} diff --git a/src/main/java/com/cannolicatfish/rankine/util/PeriodicTableUtils.java b/src/main/java/com/cannolicatfish/rankine/util/PeriodicTableUtils.java index fa30651e39..13851c2300 100644 --- a/src/main/java/com/cannolicatfish/rankine/util/PeriodicTableUtils.java +++ b/src/main/java/com/cannolicatfish/rankine/util/PeriodicTableUtils.java @@ -1,12 +1,22 @@ package com.cannolicatfish.rankine.util; import com.cannolicatfish.rankine.init.Config; +import com.cannolicatfish.rankine.init.RankineRecipeTypes; +import com.cannolicatfish.rankine.recipe.AlloyingRecipe; +import com.cannolicatfish.rankine.recipe.ElementRecipe; import com.cannolicatfish.rankine.util.elements.*; import net.minecraft.enchantment.Enchantment; import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Inventory; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.item.crafting.IRecipeType; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Util; +import net.minecraft.world.World; import net.minecraftforge.registries.ForgeRegistries; import java.util.*; @@ -19,12 +29,12 @@ public static PeriodicTableUtils getInstance() { return INSTANCE; } - public final List names = Arrays.asList("None","Hydrogen","Helium","Lithium","Beryllium","Boron","Carbon","Nitrogen","Oxygen","Flourine","Neon","Sodium","Magnesium","Aluminum","Silicon","Phosphorus","Sulfur","Chlorine", + public final List names = Arrays.asList("None","Hydrogen","Helium","Lithium","Beryllium","Boron","Carbon","Nitrogen","Oxygen","Fluorine","Neon","Sodium","Magnesium","Aluminum","Silicon","Phosphorus","Sulfur","Chlorine", "Argon", "Potassium","Calcium","Scandium", "Titanium","Vanadium","Chromium","Manganese","Iron","Cobalt","Nickel","Copper","Zinc","Gallium","Germanium","Arsenic","Selenium","Bromine","Krypton","Rubidium","Strontium", "Yttrium", "Zirconium","Niobium","Molybdenum", "Technetium","Ruthenium","Rhodium","Palladium","Silver","Cadmium","Indium","Tin","Antimony","Tellurium","Iodine","Xenon","Cesium","Barium","Lanthanum","Cerium", "Praseodymium", "Neodymium","Promethium","Samarium", "Europium","Gadolinium","Terbium","Dysprosium","Holmium","Erbium","Thulium","Ytterbium","Lutetium","Hafnium","Tantalum","Tungsten","Rhenium","Osmium","Iridium", - "Platinum","Gold", "Mercury","Thallium","Lead","Bismuth", "Polonium","Astatine","Radon","Francium","Radium","Actinium","Thorium","Proactinium","Uranium","Neptunium","Plutonium ","Americium","Curium","Berkelium", - "Californium","Einsteinium", "Fermium","Mendelevium","Nobelium", "Lawrencium","Rutherfordium","Dubnium","Seaborgium","Bohrium","Hassium","Meiterium","Darmstadtium","Roentgenium","Copernicium","Nihonium","Flerovium", + "Platinum","Gold", "Mercury","Thallium","Lead","Bismuth", "Polonium","Astatine","Radon","Francium","Radium","Actinium","Thorium","Protactinium","Uranium","Neptunium","Plutonium","Americium","Curium","Berkelium", + "Californium","Einsteinium", "Fermium","Mendelevium","Nobelium", "Lawrencium","Rutherfordium","Dubnium","Seaborgium","Bohrium","Hassium","Meitnerium","Darmstadtium","Roentgenium","Copernicium","Nihonium","Flerovium", "Moscovium","Livermorium", "Tennessine","Oganesson","Netherite"); //Index 0 for all lists are "None" and should not be used or appear public final List symbols = Arrays.asList("","H","He","Li","Be","B","C","N","O","F","Ne","Na","Mg","Al","Si","P","S","Cl","Ar","K","Ca","Sc","Ti","V","Cr","Mn","Fe","Co","Ni","Cu","Zn","Ga","Ge","As","Se","Br","Kr","Rb", @@ -82,6 +92,15 @@ public boolean hasElement(Item item) { return getElementFromItem(item) != Element.NONE; } + public boolean hasElementRecipe(ItemStack stack, World world) { + return world != null && getElementRecipe(stack,world) != null; + } + + public ElementRecipe getElementRecipe(ItemStack stack, World world) { + Inventory temp = new Inventory(stack); + return world.getRecipeManager().getRecipe(RankineRecipeTypes.ELEMENT, temp, world).orElse(null); + } + public List getElementSymbols() { return symbols; } diff --git a/src/main/java/com/cannolicatfish/rankine/util/elements/NetheriteElement.java b/src/main/java/com/cannolicatfish/rankine/util/elements/NetheriteElement.java index d3ed0c5a8b..173608c091 100644 --- a/src/main/java/com/cannolicatfish/rankine/util/elements/NetheriteElement.java +++ b/src/main/java/com/cannolicatfish/rankine/util/elements/NetheriteElement.java @@ -27,12 +27,7 @@ public float getDamageFromPercent(int x) { @Override public float getAttackSpeedFromPercent(int x) { - if (x <= 20) - { - return x/20f; - } else { - return 1; - } + return 0; } @Override @@ -60,7 +55,7 @@ public int getEnchantabilityFromPercent(int x) { @Override public float getCorrResistFromPercent(int x) { - return -x/100f; + return Math.min(-1,-x/50f); } @Override @@ -75,7 +70,7 @@ public float getHeatResistFromPercent(int x) { @Override public float getToughnessFromPercent(int x) { - return 0; + return x/300f; } @Override diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 2cd9384def..6eeba93f4a 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -16,7 +16,7 @@ issueTrackerURL="http://my.issue.tracker/" #optional # The modid of the mod modId="rankine" #mandatory # The version number of the mod - there's a few well known ${} variables useable here or just hardcode it -version="1.2.2" #mandatory +version="1.3" #mandatory # A display name for the mod displayName="Project Rankine" #mandatory # A URL to query for updates for this mod. See the JSON update specification diff --git a/src/main/resources/assets/rankine/lang/en_us.json b/src/main/resources/assets/rankine/lang/en_us.json index ffb0676fcd..4ff8c963a7 100644 --- a/src/main/resources/assets/rankine/lang/en_us.json +++ b/src/main/resources/assets/rankine/lang/en_us.json @@ -1247,6 +1247,8 @@ "enchantment.rankine.withering_curse.desc": "Taking damage (that isn't wither or magic related) causes you to receive the Wither effect for a short duration.", "enchantment.rankine.ghast_regeneration": "Ghastly Regeneration", "enchantment.rankine.ghast_regeneration.desc": "Regeneration potions restore durability.", + "enchantment.rankine.prying": "Prying", + "enchantment.rankine.prying.desc": "On hit, has a chance to cause the target to drop their held item. Chance is determined by rarity of the item.", "jei.description.crushing_basic": "Can be obtained by crushing ores using a machine or a Bronze Hammer.", "rankine.jei.crushing": "Crushing", @@ -1255,6 +1257,7 @@ "rankine.jei.sluicing": "Gold Panning", "rankine.jei.evaporation": "Evaporation", "rankine.jei.beeoven": "Beehive Oven", + "rankine.jei.element": "Element Details", "rankine.jei.finery": "Refining Iron", "itemGroup.rankine_world": "Project Rankine Building", "itemGroup.rankine_metallurgy": "Project Rankine Metallurgy", diff --git a/src/main/resources/assets/rankine/textures/block/barite_block.png b/src/main/resources/assets/rankine/textures/block/barite_block.png new file mode 100644 index 0000000000..15aac3a3c1 Binary files /dev/null and b/src/main/resources/assets/rankine/textures/block/barite_block.png differ diff --git a/src/main/resources/assets/rankine/textures/block/cobaltite_block.png b/src/main/resources/assets/rankine/textures/block/cobaltite_block.png new file mode 100644 index 0000000000..b878dcd437 Binary files /dev/null and b/src/main/resources/assets/rankine/textures/block/cobaltite_block.png differ diff --git a/src/main/resources/assets/rankine/textures/block/magnetite_block.png b/src/main/resources/assets/rankine/textures/block/magnetite_block.png new file mode 100644 index 0000000000..2f41d47a4f Binary files /dev/null and b/src/main/resources/assets/rankine/textures/block/magnetite_block.png differ diff --git a/src/main/resources/assets/rankine/textures/block/molybdenite_block.png b/src/main/resources/assets/rankine/textures/block/molybdenite_block.png new file mode 100644 index 0000000000..a057ed12ad Binary files /dev/null and b/src/main/resources/assets/rankine/textures/block/molybdenite_block.png differ diff --git a/src/main/resources/assets/rankine/textures/gui/element_jei.png b/src/main/resources/assets/rankine/textures/gui/element_jei.png new file mode 100644 index 0000000000..df18b5ec13 Binary files /dev/null and b/src/main/resources/assets/rankine/textures/gui/element_jei.png differ diff --git a/src/main/resources/assets/rankine/textures/item/antimony_ingot.png b/src/main/resources/assets/rankine/textures/item/antimony_ingot.png index c6e441f2a7..f5f44ad0fd 100644 Binary files a/src/main/resources/assets/rankine/textures/item/antimony_ingot.png and b/src/main/resources/assets/rankine/textures/item/antimony_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/argon_ingot.png b/src/main/resources/assets/rankine/textures/item/argon_ingot.png index 7c4dcaf4ef..0a86cc4518 100644 Binary files a/src/main/resources/assets/rankine/textures/item/argon_ingot.png and b/src/main/resources/assets/rankine/textures/item/argon_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/arsenic_ingot.png b/src/main/resources/assets/rankine/textures/item/arsenic_ingot.png index 08506952b3..e034ce0606 100644 Binary files a/src/main/resources/assets/rankine/textures/item/arsenic_ingot.png and b/src/main/resources/assets/rankine/textures/item/arsenic_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/bohrium_ingot.png b/src/main/resources/assets/rankine/textures/item/bohrium_ingot.png index 2aaa2fd86c..b7b43d5522 100644 Binary files a/src/main/resources/assets/rankine/textures/item/bohrium_ingot.png and b/src/main/resources/assets/rankine/textures/item/bohrium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/boron_ingot.png b/src/main/resources/assets/rankine/textures/item/boron_ingot.png index bf602036be..613ecd79a7 100644 Binary files a/src/main/resources/assets/rankine/textures/item/boron_ingot.png and b/src/main/resources/assets/rankine/textures/item/boron_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/bromine_ingot.png b/src/main/resources/assets/rankine/textures/item/bromine_ingot.png index 1ce3b44a7d..32c7497272 100644 Binary files a/src/main/resources/assets/rankine/textures/item/bromine_ingot.png and b/src/main/resources/assets/rankine/textures/item/bromine_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/cesium_ingot.png b/src/main/resources/assets/rankine/textures/item/cesium_ingot.png index cc419b79e9..f037660ecb 100644 Binary files a/src/main/resources/assets/rankine/textures/item/cesium_ingot.png and b/src/main/resources/assets/rankine/textures/item/cesium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/copernicium_ingot.png b/src/main/resources/assets/rankine/textures/item/copernicium_ingot.png index 2f4b3721dd..61c2aa4306 100644 Binary files a/src/main/resources/assets/rankine/textures/item/copernicium_ingot.png and b/src/main/resources/assets/rankine/textures/item/copernicium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/darmstadtium_ingot.png b/src/main/resources/assets/rankine/textures/item/darmstadtium_ingot.png index 44b4905b2e..211f2551c3 100644 Binary files a/src/main/resources/assets/rankine/textures/item/darmstadtium_ingot.png and b/src/main/resources/assets/rankine/textures/item/darmstadtium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/dubnium_ingot.png b/src/main/resources/assets/rankine/textures/item/dubnium_ingot.png index c032d881aa..60a6c45a99 100644 Binary files a/src/main/resources/assets/rankine/textures/item/dubnium_ingot.png and b/src/main/resources/assets/rankine/textures/item/dubnium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/flerovium_ingot.png b/src/main/resources/assets/rankine/textures/item/flerovium_ingot.png index fc5cb722cc..93af254217 100644 Binary files a/src/main/resources/assets/rankine/textures/item/flerovium_ingot.png and b/src/main/resources/assets/rankine/textures/item/flerovium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/francium_ingot.png b/src/main/resources/assets/rankine/textures/item/francium_ingot.png index f1bd2c118c..d285f9a4d3 100644 Binary files a/src/main/resources/assets/rankine/textures/item/francium_ingot.png and b/src/main/resources/assets/rankine/textures/item/francium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/germanium_ingot.png b/src/main/resources/assets/rankine/textures/item/germanium_ingot.png index 4a322b9038..896c0d6f6c 100644 Binary files a/src/main/resources/assets/rankine/textures/item/germanium_ingot.png and b/src/main/resources/assets/rankine/textures/item/germanium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/hassium_ingot.png b/src/main/resources/assets/rankine/textures/item/hassium_ingot.png index 5d4e6c7fd1..cdef327d45 100644 Binary files a/src/main/resources/assets/rankine/textures/item/hassium_ingot.png and b/src/main/resources/assets/rankine/textures/item/hassium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/lithium_ingot.png b/src/main/resources/assets/rankine/textures/item/lithium_ingot.png index b495ed2f7a..ef9d1f225c 100644 Binary files a/src/main/resources/assets/rankine/textures/item/lithium_ingot.png and b/src/main/resources/assets/rankine/textures/item/lithium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/livermorium_ingot.png b/src/main/resources/assets/rankine/textures/item/livermorium_ingot.png index 9ead5012da..b29f44ded6 100644 Binary files a/src/main/resources/assets/rankine/textures/item/livermorium_ingot.png and b/src/main/resources/assets/rankine/textures/item/livermorium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/meitnerium_ingot.png b/src/main/resources/assets/rankine/textures/item/meitnerium_ingot.png index a44c49e34f..880b7bd1d9 100644 Binary files a/src/main/resources/assets/rankine/textures/item/meitnerium_ingot.png and b/src/main/resources/assets/rankine/textures/item/meitnerium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/mercury_ingot.png b/src/main/resources/assets/rankine/textures/item/mercury_ingot.png index 6590bf8fa5..ed4e7978cb 100644 Binary files a/src/main/resources/assets/rankine/textures/item/mercury_ingot.png and b/src/main/resources/assets/rankine/textures/item/mercury_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/moscovium_ingot.png b/src/main/resources/assets/rankine/textures/item/moscovium_ingot.png index 18649f32c6..5f6d74809c 100644 Binary files a/src/main/resources/assets/rankine/textures/item/moscovium_ingot.png and b/src/main/resources/assets/rankine/textures/item/moscovium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/nihonium_ingot.png b/src/main/resources/assets/rankine/textures/item/nihonium_ingot.png index 1affb0f6cc..86960cebaa 100644 Binary files a/src/main/resources/assets/rankine/textures/item/nihonium_ingot.png and b/src/main/resources/assets/rankine/textures/item/nihonium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/oganesson_ingot.png b/src/main/resources/assets/rankine/textures/item/oganesson_ingot.png index 3a40d23c4e..817dcdac82 100644 Binary files a/src/main/resources/assets/rankine/textures/item/oganesson_ingot.png and b/src/main/resources/assets/rankine/textures/item/oganesson_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/potassium_ingot.png b/src/main/resources/assets/rankine/textures/item/potassium_ingot.png index 4968936b28..6fe6a55a01 100644 Binary files a/src/main/resources/assets/rankine/textures/item/potassium_ingot.png and b/src/main/resources/assets/rankine/textures/item/potassium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/roentgenium_ingot.png b/src/main/resources/assets/rankine/textures/item/roentgenium_ingot.png index 5ecd2dbbfd..69bbab0ffd 100644 Binary files a/src/main/resources/assets/rankine/textures/item/roentgenium_ingot.png and b/src/main/resources/assets/rankine/textures/item/roentgenium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/rubidium_ingot.png b/src/main/resources/assets/rankine/textures/item/rubidium_ingot.png index 47e42f9c12..13e4f866cb 100644 Binary files a/src/main/resources/assets/rankine/textures/item/rubidium_ingot.png and b/src/main/resources/assets/rankine/textures/item/rubidium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/rutherfordium_ingot.png b/src/main/resources/assets/rankine/textures/item/rutherfordium_ingot.png index 54c01b6efd..03591f44a3 100644 Binary files a/src/main/resources/assets/rankine/textures/item/rutherfordium_ingot.png and b/src/main/resources/assets/rankine/textures/item/rutherfordium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/seaborgium_ingot.png b/src/main/resources/assets/rankine/textures/item/seaborgium_ingot.png index 5eb4e8ca83..b2e6a1a66c 100644 Binary files a/src/main/resources/assets/rankine/textures/item/seaborgium_ingot.png and b/src/main/resources/assets/rankine/textures/item/seaborgium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/sodium_ingot.png b/src/main/resources/assets/rankine/textures/item/sodium_ingot.png index a667cfd54e..76c3faca6d 100644 Binary files a/src/main/resources/assets/rankine/textures/item/sodium_ingot.png and b/src/main/resources/assets/rankine/textures/item/sodium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/tellurium_ingot.png b/src/main/resources/assets/rankine/textures/item/tellurium_ingot.png index c3bbd9b3d0..b0032eceb0 100644 Binary files a/src/main/resources/assets/rankine/textures/item/tellurium_ingot.png and b/src/main/resources/assets/rankine/textures/item/tellurium_ingot.png differ diff --git a/src/main/resources/assets/rankine/textures/item/tennessine_ingot.png b/src/main/resources/assets/rankine/textures/item/tennessine_ingot.png index b04cc69bfb..5d9eab6068 100644 Binary files a/src/main/resources/assets/rankine/textures/item/tennessine_ingot.png and b/src/main/resources/assets/rankine/textures/item/tennessine_ingot.png differ diff --git a/src/main/resources/data/rankine/loot_tables/blocks/bronze_block.json b/src/main/resources/data/rankine/loot_tables/blocks/bronze_block.json index 87f7fa4e8f..e274f3a1a4 100644 --- a/src/main/resources/data/rankine/loot_tables/blocks/bronze_block.json +++ b/src/main/resources/data/rankine/loot_tables/blocks/bronze_block.json @@ -1 +1,32 @@ -{ "type": "minecraft:block", "pools": [ { "rolls": 1, "entries": [ { "type": "minecraft:item", "name": "rankine:bronze_block" } ], "conditions": [ { "condition": "minecraft:survives_explosion" } ] } ] } \ No newline at end of file +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "comp", + "target": "StoredComposition.comp", + "op": "append" + } + ] + } + ], + "name": "rankine:bronze_block" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/bronze_alloy.json b/src/main/resources/data/rankine/recipes/bronze_alloy.json new file mode 100644 index 0000000000..e7b656e69d --- /dev/null +++ b/src/main/resources/data/rankine/recipes/bronze_alloy.json @@ -0,0 +1,16 @@ +{ + "type": "rankine:alloy_crafting", + "inherit": true, + "pattern": [ + "#" + ], + "key": { + "#": { + "item": "rankine:bronze_block" + } + }, + "result": { + "item": "rankine:bronze_alloy", + "count": 9 + } +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/bronze_block.json b/src/main/resources/data/rankine/recipes/bronze_block.json index a7f722aff8..4b81965d08 100644 --- a/src/main/resources/data/rankine/recipes/bronze_block.json +++ b/src/main/resources/data/rankine/recipes/bronze_block.json @@ -1,17 +1,18 @@ { - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###", - "###" - ], - "key": { - "#": { - "tag": "forge:ingots/bronze" - } - }, - "result": { - "item": "rankine:bronze_block", - "count": 1 - } - } \ No newline at end of file + "type": "rankine:alloy_crafting", + "inherit": true, + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "rankine:bronze_alloy" + } + }, + "result": { + "item": "rankine:bronze_block", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/bronze_boots.json b/src/main/resources/data/rankine/recipes/bronze_boots.json index 49531e1f49..8d0072601e 100644 --- a/src/main/resources/data/rankine/recipes/bronze_boots.json +++ b/src/main/resources/data/rankine/recipes/bronze_boots.json @@ -1,6 +1,7 @@ { "type": "rankine:alloy_crafting", "inherit": "true", + "displayComp": "80Cu-20Sn", "pattern": [ " ", "# #", diff --git a/src/main/resources/data/rankine/recipes/bronze_chestplate.json b/src/main/resources/data/rankine/recipes/bronze_chestplate.json index 1e48f61f9d..7a9e200e73 100644 --- a/src/main/resources/data/rankine/recipes/bronze_chestplate.json +++ b/src/main/resources/data/rankine/recipes/bronze_chestplate.json @@ -1,6 +1,7 @@ { "type": "rankine:alloy_crafting", "inherit": "true", + "displayComp": "80Cu-20Sn", "pattern": [ "# #", "###", diff --git a/src/main/resources/data/rankine/recipes/bronze_helmet.json b/src/main/resources/data/rankine/recipes/bronze_helmet.json index a9e35909c2..eab6362994 100644 --- a/src/main/resources/data/rankine/recipes/bronze_helmet.json +++ b/src/main/resources/data/rankine/recipes/bronze_helmet.json @@ -1,6 +1,7 @@ { "type": "rankine:alloy_crafting", "inherit": "true", + "displayComp": "80Cu-20Sn", "pattern": [ "###", "# #", diff --git a/src/main/resources/data/rankine/recipes/bronze_leggings.json b/src/main/resources/data/rankine/recipes/bronze_leggings.json index 421164194a..ed0e0f928c 100644 --- a/src/main/resources/data/rankine/recipes/bronze_leggings.json +++ b/src/main/resources/data/rankine/recipes/bronze_leggings.json @@ -1,6 +1,7 @@ { "type": "rankine:alloy_crafting", "inherit": "true", + "displayComp": "80Cu-20Sn", "pattern": [ "###", "# #", diff --git a/src/main/resources/data/rankine/recipes/elements/actinium.json b/src/main/resources/data/rankine/recipes/elements/actinium.json new file mode 100644 index 0000000000..672b9827dc --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/actinium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "actinium", + "symbol": "Ac", + "color": 16777215, + "atomic": 89, + "potential": 0, + "items": ["T#forge:nuggets/actinium","T#forge:ingots/actinium","T#forge:storage_blocks/actinium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/aluminum.json b/src/main/resources/data/rankine/recipes/elements/aluminum.json new file mode 100644 index 0000000000..aa51dce6b3 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/aluminum.json @@ -0,0 +1,50 @@ +{ + "type": "rankine:element", + "name": "aluminum", + "symbol": "Al", + "color": 15919335, + "atomic": 13, + "potential": -1.662, + "items": ["T#forge:nuggets/aluminum","T#forge:ingots/aluminum","T#forge:storage_blocks/aluminum"], + "values": [1,9,81], + "durability": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [2], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "miningspeed": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.2], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "mininglevel": { + "breaks": [17,100], + "formulas": ["CONSTANT","CONSTANT"], + "a": [0,1], + "b": [0,0], + "modifiers": ["NONE","NONE"], + "limit": [0,0] + }, + "enchantability": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.090909], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "corrosionresist": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.02], + "b": [0], + "modifiers": ["MIN"], + "limit": [1] + } +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/americium.json b/src/main/resources/data/rankine/recipes/elements/americium.json new file mode 100644 index 0000000000..b6c9932332 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/americium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "americium", + "symbol": "Am", + "color": 16777215, + "atomic": 95, + "potential": 0, + "items": ["T#forge:nuggets/americium","T#forge:ingots/americium","T#forge:storage_blocks/americium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/antimony.json b/src/main/resources/data/rankine/recipes/elements/antimony.json new file mode 100644 index 0000000000..29bf7ab692 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/antimony.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "antimony", + "symbol": "Sb", + "color": 16777215, + "atomic": 51, + "potential": 0, + "items": ["T#forge:nuggets/antimony","T#forge:ingots/antimony","T#forge:storage_blocks/antimony"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/argon.json b/src/main/resources/data/rankine/recipes/elements/argon.json new file mode 100644 index 0000000000..67091d47dd --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/argon.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "argon", + "symbol": "Ar", + "color": 16777215, + "atomic": 18, + "potential": 0, + "items": ["T#forge:nuggets/argon","T#forge:ingots/argon","T#forge:storage_blocks/argon"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/arsenic.json b/src/main/resources/data/rankine/recipes/elements/arsenic.json new file mode 100644 index 0000000000..3c2a8fde48 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/arsenic.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "arsenic", + "symbol": "As", + "color": 16777215, + "atomic": 33, + "potential": 0, + "items": ["T#forge:nuggets/arsenic","T#forge:ingots/arsenic","T#forge:storage_blocks/arsenic"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/astatine.json b/src/main/resources/data/rankine/recipes/elements/astatine.json new file mode 100644 index 0000000000..5156227803 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/astatine.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "astatine", + "symbol": "At", + "color": 16777215, + "atomic": 85, + "potential": 0, + "items": ["T#forge:nuggets/astatine","T#forge:ingots/astatine","T#forge:storage_blocks/astatine"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/barium.json b/src/main/resources/data/rankine/recipes/elements/barium.json new file mode 100644 index 0000000000..eb950e4b79 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/barium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "barium", + "symbol": "Ba", + "color": 16777215, + "atomic": 56, + "potential": 0, + "items": ["T#forge:nuggets/barium","T#forge:ingots/barium","T#forge:storage_blocks/barium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/berkelium.json b/src/main/resources/data/rankine/recipes/elements/berkelium.json new file mode 100644 index 0000000000..cf88557daa --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/berkelium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "berkelium", + "symbol": "Bk", + "color": 16777215, + "atomic": 97, + "potential": 0, + "items": ["T#forge:nuggets/berkelium","T#forge:ingots/berkelium","T#forge:storage_blocks/berkelium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/beryllium.json b/src/main/resources/data/rankine/recipes/elements/beryllium.json new file mode 100644 index 0000000000..158a55a647 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/beryllium.json @@ -0,0 +1,44 @@ +{ + "type": "rankine:element", + "name": "beryllium", + "symbol": "Be", + "color": 6672537, + "atomic": 4, + "potential": -1.847, + "items": ["T#forge:nuggets/beryllium","T#forge:ingots/beryllium","T#forge:storage_blocks/beryllium"], + "values": [1,9,81], + "durability": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [1.5], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "miningspeed": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.04], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "enchantability": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.04], + "b": [1], + "modifiers": ["NONE"], + "limit": [0] + }, + "corrosionresist": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.004], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "toolenchantment": "minecraft:fortune", + "toolenchantmentmin": 10 +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/bismuth.json b/src/main/resources/data/rankine/recipes/elements/bismuth.json new file mode 100644 index 0000000000..f20e9d2632 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/bismuth.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "bismuth", + "symbol": "Bi", + "color": 16777215, + "atomic": 83, + "potential": 0, + "items": ["T#forge:nuggets/bismuth","T#forge:ingots/bismuth","T#forge:storage_blocks/bismuth"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/bohrium.json b/src/main/resources/data/rankine/recipes/elements/bohrium.json new file mode 100644 index 0000000000..46c1c7fa36 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/bohrium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "bohrium", + "symbol": "Bh", + "color": 16777215, + "atomic": 107, + "potential": 0, + "items": ["T#forge:nuggets/bohrium","T#forge:ingots/bohrium","T#forge:storage_blocks/bohrium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/boron.json b/src/main/resources/data/rankine/recipes/elements/boron.json new file mode 100644 index 0000000000..c63ea5e2c9 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/boron.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "boron", + "symbol": "B", + "color": 16777215, + "atomic": 5, + "potential": 0, + "items": ["T#forge:nuggets/boron","T#forge:ingots/boron","T#forge:storage_blocks/boron"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/bromine.json b/src/main/resources/data/rankine/recipes/elements/bromine.json new file mode 100644 index 0000000000..8a3b7c3879 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/bromine.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "bromine", + "symbol": "Br", + "color": 16777215, + "atomic": 35, + "potential": 0, + "items": ["T#forge:nuggets/bromine","T#forge:ingots/bromine","T#forge:storage_blocks/bromine"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/cadmium.json b/src/main/resources/data/rankine/recipes/elements/cadmium.json new file mode 100644 index 0000000000..e7733c985a --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/cadmium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "cadmium", + "symbol": "Cd", + "color": 16777215, + "atomic": 48, + "potential": 0, + "items": ["T#forge:nuggets/cadmium","T#forge:ingots/cadmium","T#forge:storage_blocks/cadmium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/calcium.json b/src/main/resources/data/rankine/recipes/elements/calcium.json new file mode 100644 index 0000000000..41889e6682 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/calcium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "calcium", + "symbol": "Ca", + "color": 16777215, + "atomic": 20, + "potential": 0, + "items": ["T#forge:nuggets/calcium","T#forge:ingots/calcium","T#forge:storage_blocks/calcium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/californium.json b/src/main/resources/data/rankine/recipes/elements/californium.json new file mode 100644 index 0000000000..57b703fd6c --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/californium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "californium", + "symbol": "Cf", + "color": 16777215, + "atomic": 98, + "potential": 0, + "items": ["T#forge:nuggets/californium","T#forge:ingots/californium","T#forge:storage_blocks/californium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/carbon.json b/src/main/resources/data/rankine/recipes/elements/carbon.json new file mode 100644 index 0000000000..9160c4b068 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/carbon.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "carbon", + "symbol": "C", + "color": 16777215, + "atomic": 6, + "potential": 0, + "items": ["T#forge:nuggets/carbon","T#forge:ingots/carbon","T#forge:storage_blocks/carbon"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/cerium.json b/src/main/resources/data/rankine/recipes/elements/cerium.json new file mode 100644 index 0000000000..fbd5a0af09 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/cerium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "cerium", + "symbol": "Ce", + "color": 16777215, + "atomic": 58, + "potential": 0, + "items": ["T#forge:nuggets/cerium","T#forge:ingots/cerium","T#forge:storage_blocks/cerium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/cesium.json b/src/main/resources/data/rankine/recipes/elements/cesium.json new file mode 100644 index 0000000000..80f4995dc2 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/cesium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "cesium", + "symbol": "Cs", + "color": 16777215, + "atomic": 55, + "potential": 0, + "items": ["T#forge:nuggets/cesium","T#forge:ingots/cesium","T#forge:storage_blocks/cesium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/chlorine.json b/src/main/resources/data/rankine/recipes/elements/chlorine.json new file mode 100644 index 0000000000..6e92e863d1 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/chlorine.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "chlorine", + "symbol": "Cl", + "color": 16777215, + "atomic": 17, + "potential": 0, + "items": ["T#forge:nuggets/chlorine","T#forge:ingots/chlorine","T#forge:storage_blocks/chlorine"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/chromium.json b/src/main/resources/data/rankine/recipes/elements/chromium.json new file mode 100644 index 0000000000..c7d73fbfd6 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/chromium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "chromium", + "symbol": "Cr", + "color": 16777215, + "atomic": 24, + "potential": 0, + "items": ["T#forge:nuggets/chromium","T#forge:ingots/chromium","T#forge:storage_blocks/chromium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/cobalt.json b/src/main/resources/data/rankine/recipes/elements/cobalt.json new file mode 100644 index 0000000000..eaf641a720 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/cobalt.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "cobalt", + "symbol": "Co", + "color": 16777215, + "atomic": 27, + "potential": 0, + "items": ["T#forge:nuggets/cobalt","T#forge:ingots/cobalt","T#forge:storage_blocks/cobalt"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/copernicium.json b/src/main/resources/data/rankine/recipes/elements/copernicium.json new file mode 100644 index 0000000000..6cb44b9d1e --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/copernicium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "copernicium", + "symbol": "Cn", + "color": 16777215, + "atomic": 112, + "potential": 0, + "items": ["T#forge:nuggets/copernicium","T#forge:ingots/copernicium","T#forge:storage_blocks/copernicium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/copper.json b/src/main/resources/data/rankine/recipes/elements/copper.json new file mode 100644 index 0000000000..bacb55937a --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/copper.json @@ -0,0 +1,58 @@ +{ + "type": "rankine:element", + "name": "copper", + "symbol": "Cu", + "color": 15382670, + "atomic": 29, + "potential": 0.52, + "items": ["T#forge:nuggets/copper","T#forge:ingots/copper","T#forge:storage_blocks/copper"], + "values": [1,9,81], + "durability": { + "breaks": [100], + "formulas": ["EXPONENTIAL"], + "a": [1.055], + "b": [-1], + "modifiers": ["NONE"], + "limit": [0] + }, + "miningspeed": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.05], + "b": [0], + "modifiers": ["MIN"], + "limit": [2.5] + }, + "mininglevel": { + "breaks": [9,19,100], + "formulas": ["CONSTANT","CONSTANT","CONSTANT"], + "a": [0,1,2], + "b": [0,0,0], + "modifiers": ["NONE","NONE","NONE"], + "limit": [0,0,0] + }, + "enchantability": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.1], + "b": [2], + "modifiers": ["MIN"], + "limit": [7] + }, + "corrosionresist": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.0025], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "toughness": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.0005], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + } +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/curium.json b/src/main/resources/data/rankine/recipes/elements/curium.json new file mode 100644 index 0000000000..70d4424fac --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/curium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "curium", + "symbol": "Cm", + "color": 16777215, + "atomic": 96, + "potential": 0, + "items": ["T#forge:nuggets/curium","T#forge:ingots/curium","T#forge:storage_blocks/curium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/darmstadtium.json b/src/main/resources/data/rankine/recipes/elements/darmstadtium.json new file mode 100644 index 0000000000..7c8a0aad47 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/darmstadtium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "darmstadtium", + "symbol": "Ds", + "color": 16777215, + "atomic": 110, + "potential": 0, + "items": ["T#forge:nuggets/darmstadtium","T#forge:ingots/darmstadtium","T#forge:storage_blocks/darmstadtium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/dubnium.json b/src/main/resources/data/rankine/recipes/elements/dubnium.json new file mode 100644 index 0000000000..3828060680 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/dubnium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "dubnium", + "symbol": "Db", + "color": 16777215, + "atomic": 105, + "potential": 0, + "items": ["T#forge:nuggets/dubnium","T#forge:ingots/dubnium","T#forge:storage_blocks/dubnium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/dysprosium.json b/src/main/resources/data/rankine/recipes/elements/dysprosium.json new file mode 100644 index 0000000000..a41676956f --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/dysprosium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "dysprosium", + "symbol": "Dy", + "color": 16777215, + "atomic": 66, + "potential": 0, + "items": ["T#forge:nuggets/dysprosium","T#forge:ingots/dysprosium","T#forge:storage_blocks/dysprosium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/einsteinium.json b/src/main/resources/data/rankine/recipes/elements/einsteinium.json new file mode 100644 index 0000000000..4bbb3fecc2 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/einsteinium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "einsteinium", + "symbol": "Es", + "color": 16777215, + "atomic": 99, + "potential": 0, + "items": ["T#forge:nuggets/einsteinium","T#forge:ingots/einsteinium","T#forge:storage_blocks/einsteinium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/erbium.json b/src/main/resources/data/rankine/recipes/elements/erbium.json new file mode 100644 index 0000000000..15cbfa6586 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/erbium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "erbium", + "symbol": "Er", + "color": 16777215, + "atomic": 68, + "potential": 0, + "items": ["T#forge:nuggets/erbium","T#forge:ingots/erbium","T#forge:storage_blocks/erbium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/europium.json b/src/main/resources/data/rankine/recipes/elements/europium.json new file mode 100644 index 0000000000..e087d0bbfe --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/europium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "europium", + "symbol": "Eu", + "color": 16777215, + "atomic": 63, + "potential": 0, + "items": ["T#forge:nuggets/europium","T#forge:ingots/europium","T#forge:storage_blocks/europium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/fermium.json b/src/main/resources/data/rankine/recipes/elements/fermium.json new file mode 100644 index 0000000000..cf237cbab6 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/fermium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "fermium", + "symbol": "Fm", + "color": 16777215, + "atomic": 100, + "potential": 0, + "items": ["T#forge:nuggets/fermium","T#forge:ingots/fermium","T#forge:storage_blocks/fermium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/flerovium.json b/src/main/resources/data/rankine/recipes/elements/flerovium.json new file mode 100644 index 0000000000..b12602d290 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/flerovium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "flerovium", + "symbol": "Ft", + "color": 16777215, + "atomic": 114, + "potential": 0, + "items": ["T#forge:nuggets/flerovium","T#forge:ingots/flerovium","T#forge:storage_blocks/flerovium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/fluorine.json b/src/main/resources/data/rankine/recipes/elements/fluorine.json new file mode 100644 index 0000000000..f697588278 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/fluorine.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "fluorine", + "symbol": "F", + "color": 16777215, + "atomic": 9, + "potential": 0, + "items": ["T#forge:nuggets/fluorine","T#forge:ingots/fluorine","T#forge:storage_blocks/fluorine"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/francium.json b/src/main/resources/data/rankine/recipes/elements/francium.json new file mode 100644 index 0000000000..7cf1aa15e8 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/francium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "francium", + "symbol": "Fr", + "color": 16777215, + "atomic": 87, + "potential": 0, + "items": ["T#forge:nuggets/francium","T#forge:ingots/francium","T#forge:storage_blocks/francium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/gadolinium.json b/src/main/resources/data/rankine/recipes/elements/gadolinium.json new file mode 100644 index 0000000000..b62019a87b --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/gadolinium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "gadolinium", + "symbol": "Gd", + "color": 16777215, + "atomic": 64, + "potential": 0, + "items": ["T#forge:nuggets/gadolinium","T#forge:ingots/gadolinium","T#forge:storage_blocks/gadolinium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/gallium.json b/src/main/resources/data/rankine/recipes/elements/gallium.json new file mode 100644 index 0000000000..7913d494d8 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/gallium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "gallium", + "symbol": "Ga", + "color": 16777215, + "atomic": 31, + "potential": 0, + "items": ["T#forge:nuggets/gallium","T#forge:ingots/gallium","T#forge:storage_blocks/gallium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/germanium.json b/src/main/resources/data/rankine/recipes/elements/germanium.json new file mode 100644 index 0000000000..d2ae0da9fd --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/germanium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "germanium", + "symbol": "Ge", + "color": 16777215, + "atomic": 32, + "potential": 0, + "items": ["T#forge:nuggets/germanium","T#forge:ingots/germanium","T#forge:storage_blocks/germanium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/gold.json b/src/main/resources/data/rankine/recipes/elements/gold.json new file mode 100644 index 0000000000..c6ea5d5bcc --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/gold.json @@ -0,0 +1,58 @@ +{ + "type": "rankine:element", + "name": "gold", + "symbol": "Au", + "color": 16643423, + "atomic": 79, + "potential": 1.83, + "items": ["T#forge:nuggets/gold","T#forge:ingots/gold","T#forge:storage_blocks/gold"], + "values": [1,9,81], + "durability": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.8], + "b": [-48], + "modifiers": ["MAX"], + "limit": [0] + }, + "miningspeed": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.1], + "b": [2], + "modifiers": ["NONE"], + "limit": [0] + }, + "enchantability": { + "breaks": [50,100], + "formulas": ["LINEAR","LINEAR"], + "a": [0.2,0.2], + "b": [0,2], + "modifiers": ["NONE","NONE"], + "limit": [0,0] + }, + "corrosionresist": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.01], + "b": [0], + "modifiers": ["MIN"], + "limit": [1] + }, + "heatresist": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.0025], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "toughness": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [-0.0025], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + } +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/hafnium.json b/src/main/resources/data/rankine/recipes/elements/hafnium.json new file mode 100644 index 0000000000..799ade798e --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/hafnium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "hafnium", + "symbol": "Hf", + "color": 16777215, + "atomic": 72, + "potential": 0, + "items": ["T#forge:nuggets/hafnium","T#forge:ingots/hafnium","T#forge:storage_blocks/hafnium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/hassium.json b/src/main/resources/data/rankine/recipes/elements/hassium.json new file mode 100644 index 0000000000..36dca89dc9 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/hassium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "hassium", + "symbol": "Hs", + "color": 16777215, + "atomic": 108, + "potential": 0, + "items": ["T#forge:nuggets/hassium","T#forge:ingots/hassium","T#forge:storage_blocks/hassium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/helium.json b/src/main/resources/data/rankine/recipes/elements/helium.json new file mode 100644 index 0000000000..7aa5b15a9c --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/helium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "helium", + "symbol": "He", + "color": 16777215, + "atomic": 2, + "potential": 0, + "items": ["T#forge:nuggets/helium","T#forge:ingots/helium","T#forge:storage_blocks/helium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/holmium.json b/src/main/resources/data/rankine/recipes/elements/holmium.json new file mode 100644 index 0000000000..b6ae1a39ec --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/holmium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "holmium", + "symbol": "Ho", + "color": 16777215, + "atomic": 67, + "potential": 0, + "items": ["T#forge:nuggets/holmium","T#forge:ingots/holmium","T#forge:storage_blocks/holmium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/hydrogen.json b/src/main/resources/data/rankine/recipes/elements/hydrogen.json new file mode 100644 index 0000000000..604e3b9ff8 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/hydrogen.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "hydrogen", + "symbol": "H", + "color": 16777215, + "atomic": 1, + "potential": 0, + "items": ["T#forge:nuggets/hydrogen","T#forge:ingots/hydrogen","T#forge:storage_blocks/hydrogen"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/indium.json b/src/main/resources/data/rankine/recipes/elements/indium.json new file mode 100644 index 0000000000..7705dc1d3f --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/indium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "indium", + "symbol": "In", + "color": 16777215, + "atomic": 49, + "potential": 0, + "items": ["T#forge:nuggets/indium","T#forge:ingots/indium","T#forge:storage_blocks/indium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/iodine.json b/src/main/resources/data/rankine/recipes/elements/iodine.json new file mode 100644 index 0000000000..92fcb47494 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/iodine.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "iodine", + "symbol": "I", + "color": 16777215, + "atomic": 53, + "potential": 0, + "items": ["T#forge:nuggets/iodine","T#forge:ingots/iodine","T#forge:storage_blocks/iodine"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/iridium.json b/src/main/resources/data/rankine/recipes/elements/iridium.json new file mode 100644 index 0000000000..08f056765e --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/iridium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "iridium", + "symbol": "Ir", + "color": 16777215, + "atomic": 77, + "potential": 0, + "items": ["T#forge:nuggets/iridium","T#forge:ingots/iridium","T#forge:storage_blocks/iridium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/iron.json b/src/main/resources/data/rankine/recipes/elements/iron.json new file mode 100644 index 0000000000..44c44e5257 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/iron.json @@ -0,0 +1,42 @@ +{ + "type": "rankine:element", + "name": "iron", + "symbol": "Fe", + "color": 14211288, + "atomic": 26, + "potential": 0.44, + "items": ["T#forge:nuggets/iron","T#forge:ingots/iron","T#forge:storage_blocks/iron"], + "values": [1,9,81], + "durability": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [2.5], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "miningspeed": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.1], + "b": [-4], + "modifiers": ["MAX"], + "limit": [0] + }, + "mininglevel": { + "breaks": [4,14,100], + "formulas": ["CONSTANT","CONSTANT","CONSTANT"], + "a": [0,1,2], + "b": [0,0,0], + "modifiers": ["NONE","NONE","NONE"], + "limit": [0,0,0] + }, + "enchantability": { + "breaks": [50,100], + "formulas": ["LINEAR","LINEAR"], + "a": [0.1,0.2], + "b": [-1,-6], + "modifiers": ["MAX","NONE"], + "limit": [0,0] + } +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/krypton.json b/src/main/resources/data/rankine/recipes/elements/krypton.json new file mode 100644 index 0000000000..6f09567b5a --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/krypton.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "krypton", + "symbol": "Kr", + "color": 16777215, + "atomic": 36, + "potential": 0, + "items": ["T#forge:nuggets/krypton","T#forge:ingots/krypton","T#forge:storage_blocks/krypton"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/lanthanum.json b/src/main/resources/data/rankine/recipes/elements/lanthanum.json new file mode 100644 index 0000000000..47196e58a6 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/lanthanum.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "lanthanum", + "symbol": "La", + "color": 16777215, + "atomic": 57, + "potential": 0, + "items": ["T#forge:nuggets/lanthanum","T#forge:ingots/lanthanum","T#forge:storage_blocks/lanthanum"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/lawrencium.json b/src/main/resources/data/rankine/recipes/elements/lawrencium.json new file mode 100644 index 0000000000..b9457e99e1 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/lawrencium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "lawrencium", + "symbol": "Lr", + "color": 16777215, + "atomic": 103, + "potential": 0, + "items": ["T#forge:nuggets/lawrencium","T#forge:ingots/lawrencium","T#forge:storage_blocks/lawrencium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/lead.json b/src/main/resources/data/rankine/recipes/elements/lead.json new file mode 100644 index 0000000000..9c1d3dad68 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/lead.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "lead", + "symbol": "Pb", + "color": 16777215, + "atomic": 82, + "potential": 0, + "items": ["T#forge:nuggets/lead","T#forge:ingots/lead","T#forge:storage_blocks/lead"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/lithium.json b/src/main/resources/data/rankine/recipes/elements/lithium.json new file mode 100644 index 0000000000..473ec19a9d --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/lithium.json @@ -0,0 +1,50 @@ +{ + "type": "rankine:element", + "name": "lithium", + "symbol": "Li", + "color": 14087935, + "atomic": 3, + "potential": -3.0401, + "items": ["T#forge:nuggets/lithium","T#forge:ingots/lithium","T#forge:storage_blocks/lithium"], + "values": [1,9,81], + "attackspeed": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.1], + "b": [0], + "modifiers": ["MIN"], + "limit": [1] + }, + "miningspeed": { + "breaks": [100], + "formulas": ["POWER"], + "a": [0.5], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "corrosionresist": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [-0.04], + "b": [0], + "modifiers": ["MAX"], + "limit": [-1] + }, + "heatresist": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.02], + "b": [0], + "modifiers": ["MIN"], + "limit": [1] + }, + "toughness": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [-0.01], + "b": [0.05], + "modifiers": ["MAX"], + "limit": [-0.05] + } +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/livermorium.json b/src/main/resources/data/rankine/recipes/elements/livermorium.json new file mode 100644 index 0000000000..657ad4761d --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/livermorium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "livermorium", + "symbol": "Lv", + "color": 16777215, + "atomic": 116, + "potential": 0, + "items": ["T#forge:nuggets/livermorium","T#forge:ingots/livermorium","T#forge:storage_blocks/livermorium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/lutetium.json b/src/main/resources/data/rankine/recipes/elements/lutetium.json new file mode 100644 index 0000000000..7c11836c33 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/lutetium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "lutetium", + "symbol": "Lu", + "color": 16777215, + "atomic": 71, + "potential": 0, + "items": ["T#forge:nuggets/lutetium","T#forge:ingots/lutetium","T#forge:storage_blocks/lutetium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/magnesium.json b/src/main/resources/data/rankine/recipes/elements/magnesium.json new file mode 100644 index 0000000000..03ea0f3bf6 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/magnesium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "magnesium", + "symbol": "Mg", + "color": 16777215, + "atomic": 12, + "potential": 0, + "items": ["T#forge:nuggets/magnesium","T#forge:ingots/magnesium","T#forge:storage_blocks/magnesium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/manganese.json b/src/main/resources/data/rankine/recipes/elements/manganese.json new file mode 100644 index 0000000000..63753c8495 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/manganese.json @@ -0,0 +1,50 @@ +{ + "type": "rankine:element", + "name": "manganese", + "symbol": "Mn", + "color": 15450555, + "atomic": 25, + "potential": 0.52, + "items": ["T#forge:nuggets/manganese","T#forge:ingots/manganese","T#forge:storage_blocks/manganese"], + "values": [1,9,81], + "durability": { + "breaks": [2,10,12,16,100], + "formulas": ["LINEAR","LINEAR","LINEAR","LINEAR","LINEAR"], + "a": [50,-25,200,-10,-0.5], + "b": [0,100,-2150,250,90], + "modifiers": ["NONE","NONE","NONE","NONE","NONE"], + "limit": [0,0,0,0,0] + }, + "miningspeed": { + "breaks": [2,10,12,16,100], + "formulas": ["LINEAR","LINEAR","LINEAR","LINEAR","LINEAR"], + "a": [0.25,-0.2,1,-0.05,-0.002], + "b": [0,1,-11,1,0.21], + "modifiers": ["NONE","NONE","NONE","NONE","NONE"], + "limit": [0,0,0,0,0] + }, + "mininglevel": { + "breaks": [4,9,16,100], + "formulas": ["CONSTANT","CONSTANT","CONSTANT","CONSTANT"], + "a": [1,0,2,0], + "b": [0,0,0,0], + "modifiers": ["NONE","NONE","NONE","NONE"], + "limit": [0,0,0,0] + }, + "enchantability": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [-0.2], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "toughness": { + "breaks": [9,16,100], + "formulas": ["CONSTANT","CONSTANT","CONSTANT"], + "a": [0,0.05,0], + "b": [0,0,0], + "modifiers": ["NONE","NONE","NONE"], + "limit": [0,0,0] + } +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/meitnerium.json b/src/main/resources/data/rankine/recipes/elements/meitnerium.json new file mode 100644 index 0000000000..dbb82ca5ea --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/meitnerium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "meitnerium", + "symbol": "Mt", + "color": 16777215, + "atomic": 109, + "potential": 0, + "items": ["T#forge:nuggets/meitnerium","T#forge:ingots/meitnerium","T#forge:storage_blocks/meitnerium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/mendelevium.json b/src/main/resources/data/rankine/recipes/elements/mendelevium.json new file mode 100644 index 0000000000..eff8e0abb6 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/mendelevium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "mendelevium", + "symbol": "Md", + "color": 16777215, + "atomic": 101, + "potential": 0, + "items": ["T#forge:nuggets/mendelevium","T#forge:ingots/mendelevium","T#forge:storage_blocks/mendelevium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/mercury.json b/src/main/resources/data/rankine/recipes/elements/mercury.json new file mode 100644 index 0000000000..64bad17888 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/mercury.json @@ -0,0 +1,18 @@ +{ + "type": "rankine:element", + "name": "mercury", + "symbol": "Hg", + "color": 15721704, + "atomic": 80, + "potential": 0.85, + "items": ["T#forge:nuggets/mercury","T#forge:ingots/mercury","T#forge:storage_blocks/mercury"], + "values": [1,9,81], + "durability": { + "breaks": [100], + "formulas": ["CONSTANT"], + "a": [15], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + } +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/molybdenum.json b/src/main/resources/data/rankine/recipes/elements/molybdenum.json new file mode 100644 index 0000000000..5fe8243499 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/molybdenum.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "molybdenum", + "symbol": "Mo", + "color": 16777215, + "atomic": 42, + "potential": 0, + "items": ["T#forge:nuggets/molybdenum","T#forge:ingots/molybdenum","T#forge:storage_blocks/molybdenum"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/moscovium.json b/src/main/resources/data/rankine/recipes/elements/moscovium.json new file mode 100644 index 0000000000..ec9dc841b4 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/moscovium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "moscovium", + "symbol": "Mc", + "color": 16777215, + "atomic": 115, + "potential": 0, + "items": ["T#forge:nuggets/moscovium","T#forge:ingots/moscovium","T#forge:storage_blocks/moscovium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/neodymium.json b/src/main/resources/data/rankine/recipes/elements/neodymium.json new file mode 100644 index 0000000000..019e3ab6d3 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/neodymium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "neodymium", + "symbol": "Nd", + "color": 16777215, + "atomic": 60, + "potential": 0, + "items": ["T#forge:nuggets/neodymium","T#forge:ingots/neodymium","T#forge:storage_blocks/neodymium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/neon.json b/src/main/resources/data/rankine/recipes/elements/neon.json new file mode 100644 index 0000000000..4603e73d8a --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/neon.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "neon", + "symbol": "Ne", + "color": 16777215, + "atomic": 10, + "potential": 0, + "items": ["T#forge:nuggets/neon","T#forge:ingots/neon","T#forge:storage_blocks/neon"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/neptunium.json b/src/main/resources/data/rankine/recipes/elements/neptunium.json new file mode 100644 index 0000000000..9964b7b32e --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/neptunium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "neptunium", + "symbol": "Np", + "color": 16777215, + "atomic": 93, + "potential": 0, + "items": ["T#forge:nuggets/neptunium","T#forge:ingots/neptunium","T#forge:storage_blocks/neptunium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/netherite.json b/src/main/resources/data/rankine/recipes/elements/netherite.json new file mode 100644 index 0000000000..7e79b9d21c --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/netherite.json @@ -0,0 +1,82 @@ +{ + "type": "rankine:element", + "name": "netherite", + "symbol": "Nr", + "color": 4997443, + "atomic": 161, + "potential": -0.04, + "items": ["T#forge:nuggets/netherite","I#minecraft:netherite_scrap","T#forge:ingots/netherite","T#forge:storage_blocks/netherite"], + "values": [1,2,9,81], + "durability": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [20.31], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "miningspeed": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.1], + "b": [-1], + "modifiers": ["NONE"], + "limit": [0] + }, + "mininglevel": { + "breaks": [10,100], + "formulas": ["CONSTANT","CONSTANT"], + "a": [3,4], + "b": [0,0], + "modifiers": ["NONE","NONE"], + "limit": [0,0] + }, + "enchantability": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.15], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "damage": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.1], + "b": [0], + "modifiers": ["MIN"], + "limit": [2] + }, + "corrosionresist": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [-0.02], + "b": [0], + "modifiers": ["MAX"], + "limit": [-1] + }, + "heatresist": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.04], + "b": [0], + "modifiers": ["MIN"], + "limit": [1] + }, + "toughness": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.003333], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "knockbackresist": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.01], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + } +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/nickel.json b/src/main/resources/data/rankine/recipes/elements/nickel.json new file mode 100644 index 0000000000..452cdf4677 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/nickel.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "nickel", + "symbol": "Ni", + "color": 16777215, + "atomic": 28, + "potential": 0, + "items": ["T#forge:nuggets/nickel","T#forge:ingots/nickel","T#forge:storage_blocks/nickel"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/nihonium.json b/src/main/resources/data/rankine/recipes/elements/nihonium.json new file mode 100644 index 0000000000..7eb3907939 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/nihonium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "nihonium", + "symbol": "Nh", + "color": 16777215, + "atomic": 113, + "potential": 0, + "items": ["T#forge:nuggets/nihonium","T#forge:ingots/nihonium","T#forge:storage_blocks/nihonium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/niobium.json b/src/main/resources/data/rankine/recipes/elements/niobium.json new file mode 100644 index 0000000000..c6f47b2e15 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/niobium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "niobium", + "symbol": "Nb", + "color": 16777215, + "atomic": 41, + "potential": 0, + "items": ["T#forge:nuggets/niobium","T#forge:ingots/niobium","T#forge:storage_blocks/niobium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/nitrogen.json b/src/main/resources/data/rankine/recipes/elements/nitrogen.json new file mode 100644 index 0000000000..36044d55f5 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/nitrogen.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "nitrogen", + "symbol": "N", + "color": 16777215, + "atomic": 7, + "potential": 0, + "items": ["T#forge:nuggets/nitrogen","T#forge:ingots/nitrogen","T#forge:storage_blocks/nitrogen"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/nobelium.json b/src/main/resources/data/rankine/recipes/elements/nobelium.json new file mode 100644 index 0000000000..70508c16cc --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/nobelium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "nobelium", + "symbol": "No", + "color": 16777215, + "atomic": 102, + "potential": 0, + "items": ["T#forge:nuggets/nobelium","T#forge:ingots/nobelium","T#forge:storage_blocks/nobelium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/oganesson.json b/src/main/resources/data/rankine/recipes/elements/oganesson.json new file mode 100644 index 0000000000..22c38a257e --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/oganesson.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "oganesson", + "symbol": "Og", + "color": 16777215, + "atomic": 118, + "potential": 0, + "items": ["T#forge:nuggets/oganesson","T#forge:ingots/oganesson","T#forge:storage_blocks/oganesson"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/osmium.json b/src/main/resources/data/rankine/recipes/elements/osmium.json new file mode 100644 index 0000000000..36b49db8d6 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/osmium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "osmium", + "symbol": "Os", + "color": 16777215, + "atomic": 76, + "potential": 0, + "items": ["T#forge:nuggets/osmium","T#forge:ingots/osmium","T#forge:storage_blocks/osmium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/oxygen.json b/src/main/resources/data/rankine/recipes/elements/oxygen.json new file mode 100644 index 0000000000..3c50e648fd --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/oxygen.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "oxygen", + "symbol": "O", + "color": 16777215, + "atomic": 8, + "potential": 0, + "items": ["T#forge:nuggets/oxygen","T#forge:ingots/oxygen","T#forge:storage_blocks/oxygen"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/palladium.json b/src/main/resources/data/rankine/recipes/elements/palladium.json new file mode 100644 index 0000000000..f28ee0e273 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/palladium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "palladium", + "symbol": "Pd", + "color": 16777215, + "atomic": 46, + "potential": 0, + "items": ["T#forge:nuggets/palladium","T#forge:ingots/palladium","T#forge:storage_blocks/palladium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/phosphorus.json b/src/main/resources/data/rankine/recipes/elements/phosphorus.json new file mode 100644 index 0000000000..95229ac8af --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/phosphorus.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "phosphorus", + "symbol": "P", + "color": 16777215, + "atomic": 15, + "potential": 0, + "items": ["T#forge:nuggets/phosphorus","T#forge:ingots/phosphorus","T#forge:storage_blocks/phosphorus"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/platinum.json b/src/main/resources/data/rankine/recipes/elements/platinum.json new file mode 100644 index 0000000000..effd5e19b3 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/platinum.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "platinum", + "symbol": "Pt", + "color": 16777215, + "atomic": 78, + "potential": 0, + "items": ["T#forge:nuggets/platinum","T#forge:ingots/platinum","T#forge:storage_blocks/platinum"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/plutonium.json b/src/main/resources/data/rankine/recipes/elements/plutonium.json new file mode 100644 index 0000000000..be6ae7946a --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/plutonium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "plutonium", + "symbol": "Pu", + "color": 16777215, + "atomic": 94, + "potential": 0, + "items": ["T#forge:nuggets/plutonium","T#forge:ingots/plutonium","T#forge:storage_blocks/plutonium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/polonium.json b/src/main/resources/data/rankine/recipes/elements/polonium.json new file mode 100644 index 0000000000..aa1b2ebbe8 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/polonium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "polonium", + "symbol": "Po", + "color": 16777215, + "atomic": 84, + "potential": 0, + "items": ["T#forge:nuggets/polonium","T#forge:ingots/polonium","T#forge:storage_blocks/polonium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/potassium.json b/src/main/resources/data/rankine/recipes/elements/potassium.json new file mode 100644 index 0000000000..8839e602a2 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/potassium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "potassium", + "symbol": "K", + "color": 16777215, + "atomic": 19, + "potential": 0, + "items": ["T#forge:nuggets/potassium","T#forge:ingots/potassium","T#forge:storage_blocks/potassium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/praseodymium.json b/src/main/resources/data/rankine/recipes/elements/praseodymium.json new file mode 100644 index 0000000000..ae4a1d3eee --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/praseodymium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "praseodymium", + "symbol": "Pr", + "color": 16777215, + "atomic": 59, + "potential": 0, + "items": ["T#forge:nuggets/praseodymium","T#forge:ingots/praseodymium","T#forge:storage_blocks/praseodymium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/promethium.json b/src/main/resources/data/rankine/recipes/elements/promethium.json new file mode 100644 index 0000000000..182e067108 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/promethium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "promethium", + "symbol": "Pm", + "color": 16777215, + "atomic": 61, + "potential": 0, + "items": ["T#forge:nuggets/promethium","T#forge:ingots/promethium","T#forge:storage_blocks/promethium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/protactinium.json b/src/main/resources/data/rankine/recipes/elements/protactinium.json new file mode 100644 index 0000000000..b125679d84 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/protactinium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "protactinium", + "symbol": "Pa", + "color": 16777215, + "atomic": 91, + "potential": 0, + "items": ["T#forge:nuggets/protactinium","T#forge:ingots/protactinium","T#forge:storage_blocks/protactinium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/radium.json b/src/main/resources/data/rankine/recipes/elements/radium.json new file mode 100644 index 0000000000..a485cd2fa6 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/radium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "radium", + "symbol": "Ra", + "color": 16777215, + "atomic": 88, + "potential": 0, + "items": ["T#forge:nuggets/radium","T#forge:ingots/radium","T#forge:storage_blocks/radium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/radon.json b/src/main/resources/data/rankine/recipes/elements/radon.json new file mode 100644 index 0000000000..ddf2a0ff4b --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/radon.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "radon", + "symbol": "Rn", + "color": 16777215, + "atomic": 86, + "potential": 0, + "items": ["T#forge:nuggets/radon","T#forge:ingots/radon","T#forge:storage_blocks/radon"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/rhenium.json b/src/main/resources/data/rankine/recipes/elements/rhenium.json new file mode 100644 index 0000000000..1c6a4355fe --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/rhenium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "rhenium", + "symbol": "Re", + "color": 16777215, + "atomic": 75, + "potential": 0, + "items": ["T#forge:nuggets/rhenium","T#forge:ingots/rhenium","T#forge:storage_blocks/rhenium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/rhodium.json b/src/main/resources/data/rankine/recipes/elements/rhodium.json new file mode 100644 index 0000000000..92fce2dfb9 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/rhodium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "rhodium", + "symbol": "Rh", + "color": 16777215, + "atomic": 45, + "potential": 0, + "items": ["T#forge:nuggets/rhodium","T#forge:ingots/rhodium","T#forge:storage_blocks/rhodium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/roentgenium.json b/src/main/resources/data/rankine/recipes/elements/roentgenium.json new file mode 100644 index 0000000000..8d6aaf24d9 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/roentgenium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "roentgenium", + "symbol": "Rg", + "color": 16777215, + "atomic": 111, + "potential": 0, + "items": ["T#forge:nuggets/roentgenium","T#forge:ingots/roentgenium","T#forge:storage_blocks/roentgenium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/rubidium.json b/src/main/resources/data/rankine/recipes/elements/rubidium.json new file mode 100644 index 0000000000..1d99ff51ee --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/rubidium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "rubidium", + "symbol": "Rb", + "color": 16777215, + "atomic": 37, + "potential": 0, + "items": ["T#forge:nuggets/rubidium","T#forge:ingots/rubidium","T#forge:storage_blocks/rubidium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/ruthenium.json b/src/main/resources/data/rankine/recipes/elements/ruthenium.json new file mode 100644 index 0000000000..df4227481d --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/ruthenium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "ruthenium", + "symbol": "Ru", + "color": 16777215, + "atomic": 44, + "potential": 0, + "items": ["T#forge:nuggets/ruthenium","T#forge:ingots/ruthenium","T#forge:storage_blocks/ruthenium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/rutherfordium.json b/src/main/resources/data/rankine/recipes/elements/rutherfordium.json new file mode 100644 index 0000000000..3d9ff7e259 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/rutherfordium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "rutherfordium", + "symbol": "Rf", + "color": 16777215, + "atomic": 104, + "potential": 0, + "items": ["T#forge:nuggets/rutherfordium","T#forge:ingots/rutherfordium","T#forge:storage_blocks/rutherfordium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/samarium.json b/src/main/resources/data/rankine/recipes/elements/samarium.json new file mode 100644 index 0000000000..c883b0b5cd --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/samarium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "samarium", + "symbol": "Sm", + "color": 16777215, + "atomic": 62, + "potential": 0, + "items": ["T#forge:nuggets/samarium","T#forge:ingots/samarium","T#forge:storage_blocks/samarium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/scandium.json b/src/main/resources/data/rankine/recipes/elements/scandium.json new file mode 100644 index 0000000000..9718c0a307 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/scandium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "scandium", + "symbol": "Sc", + "color": 16777215, + "atomic": 21, + "potential": 0, + "items": ["T#forge:nuggets/scandium","T#forge:ingots/scandium","T#forge:storage_blocks/scandium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/seaborgium.json b/src/main/resources/data/rankine/recipes/elements/seaborgium.json new file mode 100644 index 0000000000..f6f590c227 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/seaborgium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "seaborgium", + "symbol": "Sg", + "color": 16777215, + "atomic": 106, + "potential": 0, + "items": ["T#forge:nuggets/seaborgium","T#forge:ingots/seaborgium","T#forge:storage_blocks/seaborgium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/selenium.json b/src/main/resources/data/rankine/recipes/elements/selenium.json new file mode 100644 index 0000000000..71be834297 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/selenium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "selenium", + "symbol": "Se", + "color": 16777215, + "atomic": 34, + "potential": 0, + "items": ["T#forge:nuggets/selenium","T#forge:ingots/selenium","T#forge:storage_blocks/selenium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/silicon.json b/src/main/resources/data/rankine/recipes/elements/silicon.json new file mode 100644 index 0000000000..c98020d1cc --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/silicon.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "silicon", + "symbol": "Si", + "color": 16777215, + "atomic": 14, + "potential": 0, + "items": ["T#forge:nuggets/silicon","T#forge:ingots/silicon","T#forge:storage_blocks/silicon"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/silver.json b/src/main/resources/data/rankine/recipes/elements/silver.json new file mode 100644 index 0000000000..8498c16e8b --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/silver.json @@ -0,0 +1,60 @@ +{ + "type": "rankine:element", + "name": "silver", + "symbol": "Ag", + "color": 15724527, + "atomic": 47, + "potential": 0.7996, + "items": ["T#forge:nuggets/silver","T#forge:ingots/silver","T#forge:storage_blocks/silver"], + "values": [1,9,81], + "durability": { + "breaks": [100], + "formulas": ["LOGARITHMIC"], + "a": [20.6], + "b": [-35], + "modifiers": ["MAX"], + "limit": [0] + }, + "miningspeed": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.08], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "enchantability": { + "breaks": [15,100], + "formulas": ["LINEAR","LINEAR"], + "a": [0.5,0.16], + "b": [0,5], + "modifiers": ["NONE","NONE"], + "limit": [0,0] + }, + "corrosionresist": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.01], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "heatresist": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.002], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "toughness": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [-0.002], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "toolenchantment": "minecraft:smite", + "toolenchantmentmin": 10 +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/sodium.json b/src/main/resources/data/rankine/recipes/elements/sodium.json new file mode 100644 index 0000000000..965ed251ae --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/sodium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "sodium", + "symbol": "Na", + "color": 16777215, + "atomic": 11, + "potential": 0, + "items": ["T#forge:nuggets/sodium","T#forge:ingots/sodium","T#forge:storage_blocks/sodium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/strontium.json b/src/main/resources/data/rankine/recipes/elements/strontium.json new file mode 100644 index 0000000000..34a4316872 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/strontium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "strontium", + "symbol": "Sr", + "color": 16777215, + "atomic": 38, + "potential": 0, + "items": ["T#forge:nuggets/strontium","T#forge:ingots/strontium","T#forge:storage_blocks/strontium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/sulfur.json b/src/main/resources/data/rankine/recipes/elements/sulfur.json new file mode 100644 index 0000000000..86b487add5 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/sulfur.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "sulfur", + "symbol": "S", + "color": 16777215, + "atomic": 16, + "potential": 0, + "items": ["T#forge:nuggets/sulfur","T#forge:ingots/sulfur","T#forge:storage_blocks/sulfur"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/tantalum.json b/src/main/resources/data/rankine/recipes/elements/tantalum.json new file mode 100644 index 0000000000..d587650c2f --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/tantalum.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "tantalum", + "symbol": "Ta", + "color": 16777215, + "atomic": 73, + "potential": 0, + "items": ["T#forge:nuggets/tantalum","T#forge:ingots/tantalum","T#forge:storage_blocks/tantalum"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/technetium.json b/src/main/resources/data/rankine/recipes/elements/technetium.json new file mode 100644 index 0000000000..0998d6f7a9 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/technetium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "technetium", + "symbol": "Tc", + "color": 16777215, + "atomic": 43, + "potential": 0, + "items": ["T#forge:nuggets/technetium","T#forge:ingots/technetium","T#forge:storage_blocks/technetium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/tellurium.json b/src/main/resources/data/rankine/recipes/elements/tellurium.json new file mode 100644 index 0000000000..c6198f07b1 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/tellurium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "tellurium", + "symbol": "Te", + "color": 16777215, + "atomic": 52, + "potential": 0, + "items": ["T#forge:nuggets/tellurium","T#forge:ingots/tellurium","T#forge:storage_blocks/tellurium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/tennessine.json b/src/main/resources/data/rankine/recipes/elements/tennessine.json new file mode 100644 index 0000000000..08a41f8cce --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/tennessine.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "tennessine", + "symbol": "Ts", + "color": 16777215, + "atomic": 117, + "potential": 0, + "items": ["T#forge:nuggets/tennessine","T#forge:ingots/tennessine","T#forge:storage_blocks/tennessine"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/terbium.json b/src/main/resources/data/rankine/recipes/elements/terbium.json new file mode 100644 index 0000000000..59cf3fb690 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/terbium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "terbium", + "symbol": "Tb", + "color": 16777215, + "atomic": 65, + "potential": 0, + "items": ["T#forge:nuggets/terbium","T#forge:ingots/terbium","T#forge:storage_blocks/terbium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/thallium.json b/src/main/resources/data/rankine/recipes/elements/thallium.json new file mode 100644 index 0000000000..36217e1a65 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/thallium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "thallium", + "symbol": "Tl", + "color": 16777215, + "atomic": 81, + "potential": 0, + "items": ["T#forge:nuggets/thallium","T#forge:ingots/thallium","T#forge:storage_blocks/thallium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/thorium.json b/src/main/resources/data/rankine/recipes/elements/thorium.json new file mode 100644 index 0000000000..076a57b54f --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/thorium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "thorium", + "symbol": "Th", + "color": 16777215, + "atomic": 90, + "potential": 0, + "items": ["T#forge:nuggets/thorium","T#forge:ingots/thorium","T#forge:storage_blocks/thorium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/thulium.json b/src/main/resources/data/rankine/recipes/elements/thulium.json new file mode 100644 index 0000000000..7d2885947d --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/thulium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "thulium", + "symbol": "Tm", + "color": 16777215, + "atomic": 69, + "potential": 0, + "items": ["T#forge:nuggets/thulium","T#forge:ingots/thulium","T#forge:storage_blocks/thulium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/tin.json b/src/main/resources/data/rankine/recipes/elements/tin.json new file mode 100644 index 0000000000..64ffac59be --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/tin.json @@ -0,0 +1,42 @@ +{ + "type": "rankine:element", + "name": "tin", + "symbol": "Sn", + "color": 11975882, + "atomic": 50, + "potential": -0.13, + "items": ["T#forge:nuggets/tin","T#forge:ingots/tin","T#forge:storage_blocks/tin"], + "values": [1,9,81], + "durability": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.5], + "b": [0], + "modifiers": ["NONE"], + "limit": [0] + }, + "miningspeed": { + "breaks": [100], + "formulas": ["LINEAR"], + "a": [0.1], + "b": [-0.5], + "modifiers": ["NONE"], + "limit": [0] + }, + "mininglevel": { + "breaks": [79,100], + "formulas": ["CONSTANT","CONSTANT"], + "a": [0,1], + "b": [0,0], + "modifiers": ["NONE","NONE"], + "limit": [0,0] + }, + "enchantability": { + "breaks": [50,100], + "formulas": ["LINEAR","LINEAR"], + "a": [0.05,0.0666], + "b": [2,3], + "modifiers": ["NONE","NONE"], + "limit": [0,0] + } +} \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/titanium.json b/src/main/resources/data/rankine/recipes/elements/titanium.json new file mode 100644 index 0000000000..f6a4e5e047 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/titanium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "titanium", + "symbol": "Ti", + "color": 16777215, + "atomic": 22, + "potential": 0, + "items": ["T#forge:nuggets/titanium","T#forge:ingots/titanium","T#forge:storage_blocks/titanium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/tungsten.json b/src/main/resources/data/rankine/recipes/elements/tungsten.json new file mode 100644 index 0000000000..1a878070f0 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/tungsten.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "tungsten", + "symbol": "W", + "color": 16777215, + "atomic": 74, + "potential": 0, + "items": ["T#forge:nuggets/tungsten","T#forge:ingots/tungsten","T#forge:storage_blocks/tungsten"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/uranium.json b/src/main/resources/data/rankine/recipes/elements/uranium.json new file mode 100644 index 0000000000..2c2ee0b92e --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/uranium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "uranium", + "symbol": "U", + "color": 16777215, + "atomic": 92, + "potential": 0, + "items": ["T#forge:nuggets/uranium","T#forge:ingots/uranium","T#forge:storage_blocks/uranium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/vanadium.json b/src/main/resources/data/rankine/recipes/elements/vanadium.json new file mode 100644 index 0000000000..8e60cbe6a0 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/vanadium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "vanadium", + "symbol": "V", + "color": 16777215, + "atomic": 23, + "potential": 0, + "items": ["T#forge:nuggets/vanadium","T#forge:ingots/vanadium","T#forge:storage_blocks/vanadium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/xenon.json b/src/main/resources/data/rankine/recipes/elements/xenon.json new file mode 100644 index 0000000000..cc1c393346 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/xenon.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "xenon", + "symbol": "Xe", + "color": 16777215, + "atomic": 54, + "potential": 0, + "items": ["T#forge:nuggets/xenon","T#forge:ingots/xenon","T#forge:storage_blocks/xenon"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/ytterbium.json b/src/main/resources/data/rankine/recipes/elements/ytterbium.json new file mode 100644 index 0000000000..ee5fc2c192 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/ytterbium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "ytterbium", + "symbol": "Yb", + "color": 16777215, + "atomic": 70, + "potential": 0, + "items": ["T#forge:nuggets/ytterbium","T#forge:ingots/ytterbium","T#forge:storage_blocks/ytterbium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/yttrium.json b/src/main/resources/data/rankine/recipes/elements/yttrium.json new file mode 100644 index 0000000000..e2ea6269f2 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/yttrium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "yttrium", + "symbol": "Y", + "color": 16777215, + "atomic": 39, + "potential": 0, + "items": ["T#forge:nuggets/yttrium","T#forge:ingots/yttrium","T#forge:storage_blocks/yttrium"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/zinc.json b/src/main/resources/data/rankine/recipes/elements/zinc.json new file mode 100644 index 0000000000..5d578a0bdf --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/zinc.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "zinc", + "symbol": "Zn", + "color": 16777215, + "atomic": 30, + "potential": 0, + "items": ["T#forge:nuggets/zinc","T#forge:ingots/zinc","T#forge:storage_blocks/zinc"], + "values": [1,9,81] + } \ No newline at end of file diff --git a/src/main/resources/data/rankine/recipes/elements/zirconium.json b/src/main/resources/data/rankine/recipes/elements/zirconium.json new file mode 100644 index 0000000000..1edfeb53a9 --- /dev/null +++ b/src/main/resources/data/rankine/recipes/elements/zirconium.json @@ -0,0 +1,10 @@ +{ + "type": "rankine:element", + "name": "zirconium", + "symbol": "Zr", + "color": 16777215, + "atomic": 40, + "potential": 0, + "items": ["T#forge:nuggets/zirconium","T#forge:ingots/zirconium","T#forge:storage_blocks/zirconium"], + "values": [1,9,81] + } \ No newline at end of file