Merge remote-tracking branch 'remotes/origin/1.12' into 1.13
# Conflicts: # build.gradle # src/main/java/techreborn/Core.java # src/main/java/techreborn/api/fluidreplicator/FluidReplicatorRecipe.java # src/main/java/techreborn/api/recipe/recipes/BlastFurnaceRecipe.java # src/main/java/techreborn/blocks/BlockMachineCasing.java # src/main/java/techreborn/blocks/cable/EnumCableType.java # src/main/java/techreborn/blocks/generator/solarpanel/BlockSolarPanel.java # src/main/java/techreborn/blocks/storage/BlockEnergyStorage.java # src/main/java/techreborn/blocks/transformers/BlockTransformer.java # src/main/java/techreborn/client/gui/GuiAESU.java # src/main/java/techreborn/client/gui/GuiManual.java # src/main/java/techreborn/client/gui/GuiVacuumFreezer.java # src/main/java/techreborn/command/TechRebornDevCommand.java # src/main/java/techreborn/compat/jei/RecipeUtil.java # src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java # src/main/java/techreborn/compat/jei/fusionReactor/FusionReactorRecipeWrapper.java # src/main/java/techreborn/compat/jei/industrialSawmill/IndustrialSawmillRecipeWrapper.java # src/main/java/techreborn/config/ConfigTechReborn.java # src/main/java/techreborn/init/IC2Duplicates.java # src/main/java/techreborn/init/ModRecipes.java # src/main/java/techreborn/init/OreDict.java # src/main/java/techreborn/init/recipes/CraftingTableRecipes.java # src/main/java/techreborn/init/recipes/FusionReactorRecipes.java # src/main/java/techreborn/init/recipes/IndustrialCentrifugeRecipes.java # src/main/java/techreborn/init/recipes/IndustrialGrinderRecipes.java # src/main/java/techreborn/init/recipes/SmeltingRecipes.java # src/main/java/techreborn/items/ItemUpgrades.java # src/main/java/techreborn/items/ingredients/ItemParts.java # src/main/java/techreborn/items/tool/industrial/ItemIndustrialChainsaw.java # src/main/java/techreborn/items/tool/industrial/ItemIndustrialDrill.java # src/main/java/techreborn/items/tools/ItemWrench.java # src/main/java/techreborn/tiles/TileAlarm.java # src/main/java/techreborn/tiles/fusionReactor/TileFusionControlComputer.java # src/main/java/techreborn/tiles/generator/TileCreativeSolarPanel.java # src/main/java/techreborn/tiles/generator/TileLightningRod.java # src/main/java/techreborn/tiles/machine/iron/TileIronAlloyFurnace.java # src/main/java/techreborn/tiles/machine/multiblock/TileIndustrialBlastFurnace.java # src/main/java/techreborn/tiles/machine/multiblock/TileVacuumFreezer.java # src/main/java/techreborn/tiles/machine/tier1/TileAutoCraftingTable.java # src/main/java/techreborn/tiles/machine/tier1/TileRecycler.java # src/main/java/techreborn/tiles/machine/tier1/TileRollingMachine.java # src/main/java/techreborn/tiles/machine/tier3/TileMatterFabricator.java # src/main/java/techreborn/tiles/storage/TileAdjustableSU.java # src/main/java/techreborn/world/TechRebornRetroGen.java # src/main/resources/assets/techreborn/blockstates/items/materials/part.json # src/main/resources/assets/techreborn/blockstates/items/misc/upgrades.json
This commit is contained in:
commit
6ab23c4c64
32 changed files with 668 additions and 54 deletions
|
@ -1,6 +1,6 @@
|
||||||
![](https://i.imgur.com/m0y21EK.png "Tech Reborn")
|
![](https://i.imgur.com/m0y21EK.png "Tech Reborn")
|
||||||
|
|
||||||
[![](http://cf.way2muchnoise.eu/full_233564_downloads.svg)](https://minecraft.curseforge.com/projects/techreborn) [![](http://cf.way2muchnoise.eu/versions/233564.svg)](https://minecraft.curseforge.com/projects/techreborn) [![](https://img.shields.io/badge/Discord-TeamReborn-738bd7.svg)](https://discord.gg/teamreborn) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/techreborn/localized.svg)](https://translate.techreborn.ovh/project/techreborn)
|
[![](http://cf.way2muchnoise.eu/full_233564_downloads.svg)](https://minecraft.curseforge.com/projects/techreborn) [![](http://cf.way2muchnoise.eu/packs/233564.svg)](https://minecraft.curseforge.com/projects/techreborn) [![](http://cf.way2muchnoise.eu/versions/233564.svg)](https://minecraft.curseforge.com/projects/techreborn) [![](https://img.shields.io/badge/Discord-TeamReborn-738bd7.svg)](https://discord.gg/teamreborn) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/techreborn/localized.svg)](https://translate.techreborn.ovh/project/techreborn)
|
||||||
|
|
||||||
# Tech Reborn for 1.13.1 (BUILD JOBS WILL NEED UPDATING) [![Build Status](https://jenkins.modmuss50.me/job/Team%20Reborn/job/TechReborn/job/1.12/badge/icon)](https://jenkins.modmuss50.me/job/Team%20Reborn/job/TechReborn/job/1.12/)
|
# Tech Reborn for 1.13.1 (BUILD JOBS WILL NEED UPDATING) [![Build Status](https://jenkins.modmuss50.me/job/Team%20Reborn/job/TechReborn/job/1.12/badge/icon)](https://jenkins.modmuss50.me/job/Team%20Reborn/job/TechReborn/job/1.12/)
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,11 @@ public class FusionReactorRecipe {
|
||||||
*/
|
*/
|
||||||
int tickTime;
|
int tickTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the minium reactor size that this recipe can work with
|
||||||
|
*/
|
||||||
|
int minSize;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param topInput This is the top slot stack
|
* @param topInput This is the top slot stack
|
||||||
* @param bottomInput This is the bottom slot stack
|
* @param bottomInput This is the bottom slot stack
|
||||||
|
@ -75,14 +80,31 @@ public class FusionReactorRecipe {
|
||||||
*/
|
*/
|
||||||
public FusionReactorRecipe(ItemStack topInput, ItemStack bottomInput, ItemStack output, double startEU,
|
public FusionReactorRecipe(ItemStack topInput, ItemStack bottomInput, ItemStack output, double startEU,
|
||||||
double euTick, int tickTime) {
|
double euTick, int tickTime) {
|
||||||
|
this(topInput, bottomInput, output, startEU, euTick, tickTime, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param topInput This is the top slot stack
|
||||||
|
* @param bottomInput This is the bottom slot stack
|
||||||
|
* @param output This is the output stack
|
||||||
|
* @param startEU This is the inital EU amount
|
||||||
|
* @param euTick This is the eu that is transfured every tick
|
||||||
|
* @param tickTime This is the time the recipe takes to process
|
||||||
|
* @param minSize This is the min size of reactor required for this recipe
|
||||||
|
*/
|
||||||
|
public FusionReactorRecipe(ItemStack topInput, ItemStack bottomInput, ItemStack output, double startEU,
|
||||||
|
double euTick, int tickTime, int minSize) {
|
||||||
this.topInput = topInput;
|
this.topInput = topInput;
|
||||||
this.bottomInput = bottomInput;
|
this.bottomInput = bottomInput;
|
||||||
this.output = output;
|
this.output = output;
|
||||||
this.startEU = startEU;
|
this.startEU = startEU;
|
||||||
this.euTick = euTick;
|
this.euTick = euTick;
|
||||||
this.tickTime = tickTime;
|
this.tickTime = tickTime;
|
||||||
|
this.minSize = minSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public ItemStack getTopInput() {
|
public ItemStack getTopInput() {
|
||||||
return topInput;
|
return topInput;
|
||||||
}
|
}
|
||||||
|
@ -106,4 +128,8 @@ public class FusionReactorRecipe {
|
||||||
public int getTickTime() {
|
public int getTickTime() {
|
||||||
return tickTime;
|
return tickTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getMinSize() {
|
||||||
|
return minSize;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@ import techreborn.TechReborn;
|
||||||
* Created by Rushmead
|
* Created by Rushmead
|
||||||
*/
|
*/
|
||||||
public abstract class BlockTransformer extends BaseTileBlock {
|
public abstract class BlockTransformer extends BaseTileBlock {
|
||||||
|
|
||||||
public static DirectionProperty FACING = BlockStateProperties.FACING;
|
public static DirectionProperty FACING = BlockStateProperties.FACING;
|
||||||
public String name;
|
public String name;
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ public abstract class BlockTransformer extends BaseTileBlock {
|
||||||
public EnumFacing getFacing(IBlockState state) {
|
public EnumFacing getFacing(IBlockState state) {
|
||||||
return state.get(FACING);
|
return state.get(FACING);
|
||||||
}
|
}
|
||||||
|
|
||||||
// BaseTileBlock
|
// BaseTileBlock
|
||||||
@Override
|
@Override
|
||||||
public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer,
|
public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer,
|
||||||
|
@ -89,7 +89,7 @@ public abstract class BlockTransformer extends BaseTileBlock {
|
||||||
protected void fillStateContainer(StateContainer.Builder<Block, IBlockState> builder) {
|
protected void fillStateContainer(StateContainer.Builder<Block, IBlockState> builder) {
|
||||||
builder.add(FACING);
|
builder.add(FACING);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
@Override
|
@Override
|
||||||
public boolean onBlockActivated(IBlockState state, World worldIn, BlockPos pos, EntityPlayer playerIn, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
public boolean onBlockActivated(IBlockState state, World worldIn, BlockPos pos, EntityPlayer playerIn, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
|
||||||
|
|
|
@ -30,10 +30,14 @@ import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import reborncore.client.gui.builder.widget.GuiButtonExtended;
|
import reborncore.client.gui.builder.widget.GuiButtonExtended;
|
||||||
|
import reborncore.common.network.NetworkManager;
|
||||||
|
|
||||||
import techreborn.items.ItemManual;
|
import techreborn.items.ItemManual;
|
||||||
|
import techreborn.packets.ServerboundPackets;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
|
|
||||||
public class GuiManual extends GuiScreen {
|
public class GuiManual extends GuiScreen {
|
||||||
|
|
||||||
ItemManual manual;
|
ItemManual manual;
|
||||||
|
@ -44,7 +48,7 @@ public class GuiManual extends GuiScreen {
|
||||||
int guiHeight = 195;
|
int guiHeight = 195;
|
||||||
private static final String text1 = I18n.format("techreborn.manual.wiki");
|
private static final String text1 = I18n.format("techreborn.manual.wiki");
|
||||||
private static final String text2 = I18n.format("techreborn.manual.discord");
|
private static final String text2 = I18n.format("techreborn.manual.discord");
|
||||||
|
private static final String text3 = I18n.format("techreborn.manual.refund");
|
||||||
|
|
||||||
public GuiManual(EntityPlayer player) {
|
public GuiManual(EntityPlayer player) {
|
||||||
this.player = player;
|
this.player = player;
|
||||||
|
@ -57,8 +61,12 @@ public class GuiManual extends GuiScreen {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initGui() {
|
public void initGui() {
|
||||||
buttons.add(new GuiButtonExtended(1, (width / 2 - 30), (height / 2 - (guiHeight / 4)) + 17, 60, 20, I18n.format("techreborn.manual.wikibtn")).clickHandler(this::onClick));
|
int y = height / 4;
|
||||||
buttons.add(new GuiButtonExtended(2, (width / 2 - 30), (height / 2) + 22, 60, 20, I18n.format("techreborn.manual.discordbtn")).clickHandler(this::onClick));
|
buttons.add(new GuiButtonExtended(1, (width / 2 - 30), y + 10, 60, 20, I18n.format("techreborn.manual.wikibtn")));
|
||||||
|
buttons.add(new GuiButtonExtended(2, (width / 2 - 30), y + 60, 60, 20, I18n.format("techreborn.manual.discordbtn")));
|
||||||
|
if(ItemManual.allowRefund){
|
||||||
|
buttons.add(new GuiButtonExtended(3, (width / 2 - 30), y + 110, 60, 20, I18n.format("techreborn.manual.refundbtn")));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -68,8 +76,12 @@ public class GuiManual extends GuiScreen {
|
||||||
int centerX = (width / 2) - guiWidth / 2;
|
int centerX = (width / 2) - guiWidth / 2;
|
||||||
int centerY = (height / 2) - guiHeight / 2;
|
int centerY = (height / 2) - guiHeight / 2;
|
||||||
drawTexturedModalRect(centerX, centerY, 0, 0, guiWidth, guiHeight);
|
drawTexturedModalRect(centerX, centerY, 0, 0, guiWidth, guiHeight);
|
||||||
|
int y = height / 4;
|
||||||
fontRenderer.drawString(text1, ((width / 2) - fontRenderer.getStringWidth(text1) / 2), height / 2 - (guiHeight / 4), 4210752);
|
fontRenderer.drawString(text1, ((width / 2) - fontRenderer.getStringWidth(text1) / 2), height / 2 - (guiHeight / 4), 4210752);
|
||||||
fontRenderer.drawString(text2, ((width / 2) - fontRenderer.getStringWidth(text2) / 2), height / 2 + 5, 4210752);
|
fontRenderer.drawString(text2, ((width / 2) - fontRenderer.getStringWidth(text2) / 2), height / 2 + 5, 4210752);
|
||||||
|
if(ItemManual.allowRefund){
|
||||||
|
fontRenderer.drawString(text3, ((width / 2) - fontRenderer.getStringWidth(text3) / 2), y + 100, 4210752);
|
||||||
|
}
|
||||||
super.render(mouseX, mouseY, partialTicks);
|
super.render(mouseX, mouseY, partialTicks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,6 +93,10 @@ public class GuiManual extends GuiScreen {
|
||||||
case 2:
|
case 2:
|
||||||
this.mc.displayGuiScreen(new GuiConfirmOpenLink(this, "https://discord.gg/teamreborn", 2, false));
|
this.mc.displayGuiScreen(new GuiConfirmOpenLink(this, "https://discord.gg/teamreborn", 2, false));
|
||||||
break;
|
break;
|
||||||
|
case 3:
|
||||||
|
mc.displayGuiScreen(null);
|
||||||
|
NetworkManager.sendToServer(ServerboundPackets.createRefundPacket());
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,7 @@ public class GuiVacuumFreezer extends GuiBase {
|
||||||
final Multiblock multiblock = new Multiblock();
|
final Multiblock multiblock = new Multiblock();
|
||||||
IBlockState advancedCasing = TRContent.MachineBlocks.ADVANCED.getCasing().getDefaultState();
|
IBlockState advancedCasing = TRContent.MachineBlocks.ADVANCED.getCasing().getDefaultState();
|
||||||
IBlockState industrialCasing = TRContent.MachineBlocks.INDUSTRIAL.getCasing().getDefaultState();
|
IBlockState industrialCasing = TRContent.MachineBlocks.INDUSTRIAL.getCasing().getDefaultState();
|
||||||
|
|
||||||
addComponent(0, -1, 0, advancedCasing, multiblock);
|
addComponent(0, -1, 0, advancedCasing, multiblock);
|
||||||
addComponent(1, -1, 0, advancedCasing, multiblock);
|
addComponent(1, -1, 0, advancedCasing, multiblock);
|
||||||
addComponent(0, -1, 1, advancedCasing, multiblock);
|
addComponent(0, -1, 1, advancedCasing, multiblock);
|
||||||
|
|
|
@ -90,7 +90,7 @@ public class ConfigTechReborn {
|
||||||
|
|
||||||
@ConfigRegistry(config = "items", category = "power", key = "clockingDeviceEnergyUsage", comment = "Cloacking device energy usesage (FE)")
|
@ConfigRegistry(config = "items", category = "power", key = "clockingDeviceEnergyUsage", comment = "Cloacking device energy usesage (FE)")
|
||||||
public static int CloackingDeviceUsage = 10;
|
public static int CloackingDeviceUsage = 10;
|
||||||
|
|
||||||
@ConfigRegistry(config = "generators", category = "solarPanelBasic", key = "basicDayRate", comment = "Generation rate during day for Basic Solar Panel (Value in FE)")
|
@ConfigRegistry(config = "generators", category = "solarPanelBasic", key = "basicDayRate", comment = "Generation rate during day for Basic Solar Panel (Value in FE)")
|
||||||
public static int basicGenerationRateD = 1;
|
public static int basicGenerationRateD = 1;
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ public class ConfigTechReborn {
|
||||||
public static int advancedGenerationRateD = 16;
|
public static int advancedGenerationRateD = 16;
|
||||||
|
|
||||||
@ConfigRegistry(config = "generators", category = "solarPanelAdvanced", key = "advancedNightRate", comment = "Generation rate during night for Advanced Solar Panel (Value in FE)")
|
@ConfigRegistry(config = "generators", category = "solarPanelAdvanced", key = "advancedNightRate", comment = "Generation rate during night for Advanced Solar Panel (Value in FE)")
|
||||||
public static int advancedGenerationRateN = 0;
|
public static int advancedGenerationRateN = 0;
|
||||||
|
|
||||||
@ConfigRegistry(config = "generators", category = "solarPanelIndustrial", key = "industrialDayRate", comment = "Generation rate during day for Industrial Solar Panel (Value in FE)")
|
@ConfigRegistry(config = "generators", category = "solarPanelIndustrial", key = "industrialDayRate", comment = "Generation rate during day for Industrial Solar Panel (Value in FE)")
|
||||||
public static int industrialGenerationRateD = 64;
|
public static int industrialGenerationRateD = 64;
|
||||||
|
|
|
@ -0,0 +1,98 @@
|
||||||
|
/*
|
||||||
|
* This file is part of TechReborn, licensed under the MIT License (MIT).
|
||||||
|
*
|
||||||
|
* Copyright (c) 2018 TechReborn
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package techreborn.init.recipes;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author drcrazy
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class BlastFurnaceRecipes extends RecipeMethods {
|
||||||
|
|
||||||
|
public static void init() {
|
||||||
|
// register(ItemDusts.getDustByName("titanium"), null, ItemIngots.getIngotByName("titanium"), null, 3600, 1500);
|
||||||
|
// register(ItemDustsSmall.getSmallDustByName("titanium", 4), null, ItemIngots.getIngotByName("titanium"), null,
|
||||||
|
// 3600, 1500);
|
||||||
|
// register(ItemDusts.getDustByName("aluminum"), null, ItemIngots.getIngotByName("aluminum"), null, 2200, 1700);
|
||||||
|
// register(ItemDustsSmall.getSmallDustByName("aluminum", 4), null, ItemIngots.getIngotByName("aluminum"), null,
|
||||||
|
// 2200, 1700);
|
||||||
|
// register(ItemDusts.getDustByName("tungsten"), null, ItemIngots.getIngotByName("tungsten"), null, 1800, 2500);
|
||||||
|
// register(ItemDustsSmall.getSmallDustByName("tungsten", 4), null, ItemIngots.getIngotByName("tungsten"), null,
|
||||||
|
// 1800, 2500);
|
||||||
|
// register(ItemDusts.getDustByName("chrome"), null, ItemIngots.getIngotByName("chrome"), null, 4420, 1700);
|
||||||
|
// register(ItemDustsSmall.getSmallDustByName("chrome", 4), null, ItemIngots.getIngotByName("chrome"), null, 4420,
|
||||||
|
// 1700);
|
||||||
|
// register(ItemDusts.getDustByName("steel"), null, ItemIngots.getIngotByName("steel"), null, 2800, 1000);
|
||||||
|
// register(ItemDustsSmall.getSmallDustByName("steel", 4), null, ItemIngots.getIngotByName("steel"), null, 2800,
|
||||||
|
// 1000);
|
||||||
|
// register(ItemDusts.getDustByName("galena", 2), null, ItemIngots.getIngotByName("silver"),
|
||||||
|
// ItemIngots.getIngotByName("lead"), 80, 1500);
|
||||||
|
// register(new ItemStack(Items.IRON_INGOT), ItemDusts.getDustByName("coal", 2),
|
||||||
|
// ItemIngots.getIngotByName("steel"), ItemDusts.getDustByName("dark_ashes", 2), 500, 1000);
|
||||||
|
// register(ItemIngots.getIngotByName("tungsten"), ItemIngots.getIngotByName("steel"),
|
||||||
|
// ItemIngots.getIngotByName("hot_tungstensteel"), ItemDusts.getDustByName("dark_ashes", 4), 500, 128,
|
||||||
|
// 3000);
|
||||||
|
// register(new ItemStack(Blocks.IRON_ORE), ItemDusts.getDustByName("calcite"), new ItemStack(Items.IRON_INGOT, 3),
|
||||||
|
// ItemDusts.getDustByName("dark_ashes"), 140, 1000);
|
||||||
|
// register(BlockOre.getOreByName("Pyrite"), ItemDusts.getDustByName("calcite"),
|
||||||
|
// new ItemStack(Items.IRON_INGOT, 2), ItemDusts.getDustByName("dark_ashes"), 140, 1000);
|
||||||
|
// register(new ItemStack(Items.DIAMOND_HELMET), new ItemStack(Blocks.SAND), new ItemStack(Items.DIAMOND, 5),
|
||||||
|
// ItemDusts.getDustByName("dark_ashes"), 140, 1000);
|
||||||
|
// register(new ItemStack(Items.DIAMOND_CHESTPLATE), new ItemStack(Blocks.SAND), new ItemStack(Items.DIAMOND, 8),
|
||||||
|
// ItemDusts.getDustByName("dark_ashes"), 140, 1000);
|
||||||
|
// register(new ItemStack(Items.DIAMOND_LEGGINGS), new ItemStack(Blocks.SAND), new ItemStack(Items.DIAMOND, 7),
|
||||||
|
// ItemDusts.getDustByName("dark_ashes"), 140, 1000);
|
||||||
|
// register(new ItemStack(Items.DIAMOND_BOOTS), new ItemStack(Blocks.SAND), new ItemStack(Items.DIAMOND, 4),
|
||||||
|
// ItemDusts.getDustByName("dark_ashes"), 140, 1000);
|
||||||
|
// register(new ItemStack(Items.GOLDEN_HELMET), new ItemStack(Blocks.SAND), new ItemStack(Items.GOLD_INGOT, 5),
|
||||||
|
// ItemDusts.getDustByName("dark_ashes"), 140, 1000);
|
||||||
|
// register(new ItemStack(Items.GOLDEN_CHESTPLATE), new ItemStack(Blocks.SAND), new ItemStack(Items.GOLD_INGOT, 8),
|
||||||
|
// ItemDusts.getDustByName("dark_ashes"), 140, 1000);
|
||||||
|
// register(new ItemStack(Items.GOLDEN_LEGGINGS), new ItemStack(Blocks.SAND), new ItemStack(Items.GOLD_INGOT, 7),
|
||||||
|
// ItemDusts.getDustByName("dark_ashes"), 140, 1000);
|
||||||
|
// register(new ItemStack(Items.GOLDEN_BOOTS), new ItemStack(Blocks.SAND), new ItemStack(Items.GOLD_INGOT, 4),
|
||||||
|
// ItemDusts.getDustByName("dark_ashes"), 140, 1000);
|
||||||
|
// register(new ItemStack(Items.IRON_HELMET), new ItemStack(Blocks.SAND), new ItemStack(Items.IRON_INGOT, 5),
|
||||||
|
// ItemDusts.getDustByName("dark_ashes"), 140, 1000);
|
||||||
|
// register(new ItemStack(Items.IRON_CHESTPLATE), new ItemStack(Blocks.SAND), new ItemStack(Items.IRON_INGOT, 8),
|
||||||
|
// ItemDusts.getDustByName("dark_ashes"), 140, 1000);
|
||||||
|
// register(new ItemStack(Items.IRON_LEGGINGS), new ItemStack(Blocks.SAND), new ItemStack(Items.IRON_INGOT, 7),
|
||||||
|
// ItemDusts.getDustByName("dark_ashes"), 140, 1000);
|
||||||
|
// register(new ItemStack(Items.IRON_BOOTS), new ItemStack(Blocks.SAND), new ItemStack(Items.IRON_INGOT, 4),
|
||||||
|
// ItemDusts.getDustByName("dark_ashes"), 140, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void register(ItemStack in1, ItemStack in2, ItemStack out1, ItemStack out2, int tickTime,
|
||||||
|
int euPerTick, int neededHeat) {
|
||||||
|
// RecipeHandler.addRecipe(new BlastFurnaceRecipe(in1, in2, out1, out2, tickTime, euPerTick, neededHeat));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void register(ItemStack in1, ItemStack in2, ItemStack out1, ItemStack out2, int tickTime,
|
||||||
|
int neededHeat) {
|
||||||
|
register(in1, in2, out1, out2, tickTime, 120, neededHeat);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
89
src/main/java/techreborn/init/recipes/CompressorRecipes.java
Normal file
89
src/main/java/techreborn/init/recipes/CompressorRecipes.java
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
/*
|
||||||
|
* This file is part of TechReborn, licensed under the MIT License (MIT).
|
||||||
|
*
|
||||||
|
* Copyright (c) 2018 TechReborn
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package techreborn.init.recipes;
|
||||||
|
|
||||||
|
import java.security.InvalidParameterException;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author drcrazy
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class CompressorRecipes extends RecipeMethods {
|
||||||
|
|
||||||
|
public static void init() {
|
||||||
|
// register(ItemIngots.getIngotByName("advanced_alloy"), ItemPlates.getPlateByName("advanced_alloy"), 400, 20);
|
||||||
|
// register(IC2Duplicates.CARBON_MESH.getStackBasedOnConfig(), ItemPlates.getPlateByName("carbon"), 400, 2);
|
||||||
|
// register(OreUtil.getStackFromName("plankWood"), OreUtil.getStackFromName("plateWood"));
|
||||||
|
// register(OreUtil.getStackFromName("dustLazurite"), ItemPlates.getPlateByName("lazurite"));
|
||||||
|
// register(OreUtil.getStackFromName("obsidian"), ItemPlates.getPlateByName("obsidian", 9));
|
||||||
|
// register(OreUtil.getStackFromName("dustObsidian"), ItemPlates.getPlateByName("obsidian"));
|
||||||
|
// register(OreUtil.getStackFromName("dustYellowGarnet"), ItemPlates.getPlateByName("YellowGarnet"));
|
||||||
|
// register(OreUtil.getStackFromName("blockYellowGarnet"), ItemPlates.getPlateByName("YellowGarnet", 9));
|
||||||
|
// register(OreUtil.getStackFromName("dustRedGarnet"), ItemPlates.getPlateByName("RedGarnet"));
|
||||||
|
// register(OreUtil.getStackFromName("blockRedGarnet"), ItemPlates.getPlateByName("RedGarnet", 9));
|
||||||
|
// register("ingotRefinedIron", ItemPlates.getPlateByName("RefinedIron"));
|
||||||
|
//
|
||||||
|
// ItemStack plate;
|
||||||
|
// for (String ore : OreUtil.oreNames) {
|
||||||
|
// if (ore.equals("iridium")) {
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
// if (!OreUtil.hasPlate(ore)) {
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// try {
|
||||||
|
// plate = ItemPlates.getPlateByName(ore, 1);
|
||||||
|
// } catch (InvalidParameterException e) {
|
||||||
|
// plate = OreUtil.getStackFromName("plate" + OreUtil.capitalizeFirstLetter(ore));
|
||||||
|
// }
|
||||||
|
// if (plate.isEmpty()) {
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
// if (OreUtil.hasIngot(ore)) {
|
||||||
|
// register(OreUtil.getStackFromName("ingot" + OreUtil.capitalizeFirstLetter(ore)), plate);
|
||||||
|
// }
|
||||||
|
// if (OreUtil.hasGem(ore) && OreUtil.hasDust(ore)) {
|
||||||
|
// register(OreUtil.getStackFromName("dust" + OreUtil.capitalizeFirstLetter(ore)), plate);
|
||||||
|
// }
|
||||||
|
// if (OreUtil.hasBlock(ore)) {
|
||||||
|
// ItemStack morePlates = plate.copy();
|
||||||
|
// morePlates.setCount(9);
|
||||||
|
// register(OreUtil.getStackFromName("block" + OreUtil.capitalizeFirstLetter(ore)), morePlates);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
static void register(Object input, ItemStack output) {
|
||||||
|
register(input, output, 300, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void register(Object input, ItemStack output, int tickTime, int euPerTick) {
|
||||||
|
//RecipeHandler.addRecipe(new CompressorRecipe(input, output, tickTime, euPerTick));
|
||||||
|
}
|
||||||
|
}
|
|
@ -30,10 +30,14 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.ActionResult;
|
import net.minecraft.util.ActionResult;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import reborncore.common.registration.config.ConfigRegistry;
|
||||||
import techreborn.TechReborn;
|
import techreborn.TechReborn;
|
||||||
|
|
||||||
public class ItemManual extends Item {
|
public class ItemManual extends Item {
|
||||||
|
|
||||||
|
@ConfigRegistry(config = "misc", category = "general", key = "manualRefund", comment = "Allow refunding items used to craft the manual")
|
||||||
|
public static boolean allowRefund = true;
|
||||||
|
|
||||||
public ItemManual() {
|
public ItemManual() {
|
||||||
super(new Item.Properties().group(TechReborn.ITEMGROUP).maxStackSize(1));
|
super(new Item.Properties().group(TechReborn.ITEMGROUP).maxStackSize(1));
|
||||||
}
|
}
|
||||||
|
|
|
@ -154,4 +154,8 @@ public class ItemChainsaw extends ItemAxe implements IEnergyItemInfo {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemEnchantability() {
|
||||||
|
return 20;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,27 +25,47 @@
|
||||||
package techreborn.items.tool.industrial;
|
package techreborn.items.tool.industrial;
|
||||||
|
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
import net.minecraft.client.resources.I18n;
|
||||||
|
import net.minecraft.client.util.ITooltipFlag;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
import net.minecraft.entity.item.EntityItem;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.init.Items;
|
import net.minecraft.init.Items;
|
||||||
|
import net.minecraft.inventory.InventoryHelper;
|
||||||
import net.minecraft.item.ItemGroup;
|
import net.minecraft.item.ItemGroup;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.ItemTier;
|
import net.minecraft.item.ItemTier;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tags.BlockTags;
|
import net.minecraft.tags.BlockTags;
|
||||||
import net.minecraft.util.NonNullList;
|
import net.minecraft.util.*;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.text.ITextComponent;
|
||||||
|
import net.minecraft.util.text.TextComponentString;
|
||||||
|
import net.minecraft.util.text.TextFormatting;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
import net.minecraftforge.common.IShearable;
|
||||||
import reborncore.common.powerSystem.ExternalPowerSystems;
|
import reborncore.common.powerSystem.ExternalPowerSystems;
|
||||||
import reborncore.common.powerSystem.forge.ForgePowerItemManager;
|
import reborncore.common.powerSystem.forge.ForgePowerItemManager;
|
||||||
|
import reborncore.common.util.ChatUtils;
|
||||||
|
import reborncore.common.util.ItemUtils;
|
||||||
import techreborn.config.ConfigTechReborn;
|
import techreborn.config.ConfigTechReborn;
|
||||||
import techreborn.init.TRContent;
|
import techreborn.init.TRContent;
|
||||||
import techreborn.items.tool.ItemChainsaw;
|
import techreborn.items.tool.ItemChainsaw;
|
||||||
|
import techreborn.utils.MessageIDs;
|
||||||
import techreborn.utils.TagUtils;
|
import techreborn.utils.TagUtils;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class ItemIndustrialChainsaw extends ItemChainsaw {
|
public class ItemIndustrialChainsaw extends ItemChainsaw {
|
||||||
|
|
||||||
|
private static final EnumFacing[] SEARCH_ORDER = new EnumFacing[]{EnumFacing.NORTH, EnumFacing.SOUTH, EnumFacing.EAST, EnumFacing.WEST, EnumFacing.UP};
|
||||||
|
|
||||||
|
|
||||||
// 4M FE max charge with 1k charge rate
|
// 4M FE max charge with 1k charge rate
|
||||||
public ItemIndustrialChainsaw() {
|
public ItemIndustrialChainsaw() {
|
||||||
super(ItemTier.DIAMOND, ConfigTechReborn.IndustrialChainsawCharge, 1.0F);
|
super(ItemTier.DIAMOND, ConfigTechReborn.IndustrialChainsawCharge, 1.0F);
|
||||||
|
@ -70,16 +90,108 @@ public class ItemIndustrialChainsaw extends ItemChainsaw {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onBlockDestroyed(ItemStack stack, World worldIn, IBlockState blockIn, BlockPos pos, EntityLivingBase entityLiving) {
|
public boolean onBlockDestroyed(ItemStack stack, World worldIn, IBlockState blockIn, BlockPos pos, EntityLivingBase entityLiving) {
|
||||||
for (int i = 1; i < 10; i++) {
|
if(ItemUtils.isActive(stack) && !worldIn.isRemote){
|
||||||
BlockPos nextPos = pos.up(i);
|
IBlockState state = worldIn.getBlockState(pos);
|
||||||
IBlockState nextState = worldIn.getBlockState(nextPos);
|
if(state.getBlock() instanceof IShearable){
|
||||||
if(TagUtils.hasTag(nextState.getBlock(), BlockTags.LOGS)){
|
if(((IShearable) state.getBlock()).isShearable(stack, worldIn, pos)){
|
||||||
breakBlock(nextPos, stack, worldIn, entityLiving, pos);
|
List<ItemStack> results = ((IShearable) state.getBlock()).onSheared(stack, worldIn, pos, 0);
|
||||||
|
results.forEach(itemStack -> InventoryHelper.spawnItemStack(worldIn, (double) pos.getX(), (double) pos.getY(), (double) pos.getZ(), itemStack));
|
||||||
|
return super.onBlockDestroyed(stack, worldIn, blockIn, pos, entityLiving);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<BlockPos> wood = new ArrayList<>();
|
||||||
|
findWood(worldIn, pos, wood, new ArrayList<>());
|
||||||
|
wood.forEach(pos1 -> breakBlock(pos1, stack, worldIn, entityLiving, pos));
|
||||||
return super.onBlockDestroyed(stack, worldIn, blockIn, pos, entityLiving);
|
return super.onBlockDestroyed(stack, worldIn, blockIn, pos, entityLiving);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void findWood(World world, BlockPos pos, List<BlockPos> wood, List<BlockPos> leaves){
|
||||||
|
//Limit the amount of wood to be broken to 64 blocks.
|
||||||
|
if(wood.size() >= 64){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//Search 150 leaves for wood
|
||||||
|
if(leaves.size() >= 150){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for(EnumFacing facing : SEARCH_ORDER){
|
||||||
|
BlockPos checkPos = pos.offset(facing);
|
||||||
|
if(!wood.contains(checkPos) && !leaves.contains(checkPos)){
|
||||||
|
IBlockState state = world.getBlockState(checkPos);
|
||||||
|
if(TagUtils.hasTag(state.getBlock(), BlockTags.LOGS)){
|
||||||
|
wood.add(checkPos);
|
||||||
|
findWood(world, checkPos, wood, leaves);
|
||||||
|
} else if(TagUtils.hasTag(state.getBlock(), BlockTags.LEAVES)){
|
||||||
|
leaves.add(checkPos);
|
||||||
|
findWood(world, checkPos, wood, leaves);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ActionResult<ItemStack> onItemRightClick(final World world, final EntityPlayer player, final EnumHand hand) {
|
||||||
|
final ItemStack stack = player.getHeldItem(hand);
|
||||||
|
if (player.isSneaking()) {
|
||||||
|
if (new ForgePowerItemManager(stack).getEnergyStored() < cost) {
|
||||||
|
ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new TextComponentString(
|
||||||
|
TextFormatting.GRAY + I18n.format("techreborn.message.nanosaberEnergyErrorTo") + " "
|
||||||
|
+ TextFormatting.GOLD + I18n
|
||||||
|
.format("techreborn.message.nanosaberActivate")));
|
||||||
|
} else {
|
||||||
|
if (!ItemUtils.isActive(stack)) {
|
||||||
|
if (stack.getTag() == null) {
|
||||||
|
stack.setTag(new NBTTagCompound());
|
||||||
|
}
|
||||||
|
stack.getTag().putBoolean("isActive", true);
|
||||||
|
if (world.isRemote) {
|
||||||
|
ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new TextComponentString(
|
||||||
|
TextFormatting.GRAY + I18n.format("techreborn.message.setTo") + " "
|
||||||
|
+ TextFormatting.GOLD + I18n
|
||||||
|
.format("techreborn.message.nanosaberActive")));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
stack.getTag().putBoolean("isActive", false);
|
||||||
|
if (world.isRemote) {
|
||||||
|
ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new TextComponentString(
|
||||||
|
TextFormatting.GRAY + I18n.format("techreborn.message.setTo") + " "
|
||||||
|
+ TextFormatting.GOLD + I18n
|
||||||
|
.format("techreborn.message.nanosaberInactive")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new ActionResult<>(EnumActionResult.SUCCESS, stack);
|
||||||
|
}
|
||||||
|
return new ActionResult<>(EnumActionResult.PASS, stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onEntityItemUpdate(ItemStack stack, EntityItem entity) {
|
||||||
|
if (ItemUtils.isActive(stack) && new ForgePowerItemManager(stack).getEnergyStored() < cost) {
|
||||||
|
if(entity.world.isRemote){
|
||||||
|
ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new TextComponentString(
|
||||||
|
TextFormatting.GRAY + I18n.format("techreborn.message.nanosaberEnergyError") + " "
|
||||||
|
+ TextFormatting.GOLD + I18n
|
||||||
|
.format("techreborn.message.nanosaberDeactivating")));
|
||||||
|
}
|
||||||
|
stack.getTag().putBoolean("isActive", false);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
@Override
|
||||||
|
public void addInformation(ItemStack stack, @Nullable World worldIn, List<ITextComponent> tooltip, ITooltipFlag flagIn) {
|
||||||
|
if (!ItemUtils.isActive(stack)) {
|
||||||
|
tooltip.add(new TextComponentString(TextFormatting.YELLOW + "Shear: " + TextFormatting.RED + I18n.format("techreborn.message.nanosaberInactive")));
|
||||||
|
} else {
|
||||||
|
tooltip.add(new TextComponentString(TextFormatting.YELLOW + "Shear: " + TextFormatting.GREEN + I18n.format("techreborn.message.nanosaberActive")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canHarvestBlock(IBlockState blockIn) {
|
public boolean canHarvestBlock(IBlockState blockIn) {
|
||||||
return Items.DIAMOND_AXE.canHarvestBlock(blockIn);
|
return Items.DIAMOND_AXE.canHarvestBlock(blockIn);
|
||||||
|
|
|
@ -26,28 +26,39 @@ package techreborn.items.tool.industrial;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
import net.minecraft.client.resources.I18n;
|
||||||
|
import net.minecraft.client.util.ITooltipFlag;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
import net.minecraft.entity.item.EntityItem;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.init.Items;
|
import net.minecraft.init.Items;
|
||||||
import net.minecraft.item.ItemGroup;
|
import net.minecraft.item.ItemGroup;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.ItemTier;
|
import net.minecraft.item.ItemTier;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.NonNullList;
|
import net.minecraft.util.*;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.RayTraceResult;
|
import net.minecraft.util.math.RayTraceResult;
|
||||||
|
import net.minecraft.util.text.ITextComponent;
|
||||||
|
import net.minecraft.util.text.TextComponentString;
|
||||||
|
import net.minecraft.util.text.TextFormatting;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import reborncore.common.powerSystem.ExternalPowerSystems;
|
import reborncore.common.powerSystem.ExternalPowerSystems;
|
||||||
import reborncore.common.powerSystem.forge.ForgePowerItemManager;
|
import reborncore.common.powerSystem.forge.ForgePowerItemManager;
|
||||||
|
import reborncore.common.util.ChatUtils;
|
||||||
|
import reborncore.common.util.ItemUtils;
|
||||||
import techreborn.config.ConfigTechReborn;
|
import techreborn.config.ConfigTechReborn;
|
||||||
import techreborn.init.TRContent;
|
import techreborn.init.TRContent;
|
||||||
import techreborn.items.tool.ItemDrill;
|
import techreborn.items.tool.ItemDrill;
|
||||||
|
import techreborn.utils.MessageIDs;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class ItemIndustrialDrill extends ItemDrill {
|
public class ItemIndustrialDrill extends ItemDrill {
|
||||||
|
@ -105,12 +116,15 @@ public class ItemIndustrialDrill extends ItemDrill {
|
||||||
|
|
||||||
ForgePowerItemManager capEnergy = new ForgePowerItemManager(drill);
|
ForgePowerItemManager capEnergy = new ForgePowerItemManager(drill);
|
||||||
|
|
||||||
capEnergy.extractEnergy(cost, false);
|
if(capEnergy.getEnergyStored() > cost){
|
||||||
ExternalPowerSystems.requestEnergyFromArmor(capEnergy, playerIn);
|
capEnergy.extractEnergy(cost, false);
|
||||||
|
ExternalPowerSystems.requestEnergyFromArmor(capEnergy, playerIn);
|
||||||
|
|
||||||
blockState.getBlock().harvestBlock(world, playerIn, pos, blockState, world.getTileEntity(pos), drill);
|
blockState.getBlock().removedByPlayer(blockState, world, pos, playerIn, true, null);
|
||||||
world.removeBlock(pos);
|
blockState.getBlock().harvestBlock(world, playerIn, pos, blockState, world.getTileEntity(pos), drill);
|
||||||
world.removeTileEntity(pos);
|
world.removeBlock(pos);
|
||||||
|
world.removeTileEntity(pos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean shouldBreak(EntityPlayer playerIn, World worldIn, BlockPos originalPos, BlockPos pos) {
|
private boolean shouldBreak(EntityPlayer playerIn, World worldIn, BlockPos originalPos, BlockPos pos) {
|
||||||
|
@ -143,12 +157,74 @@ public class ItemIndustrialDrill extends ItemDrill {
|
||||||
if ((entityLiving instanceof EntityPlayer)) {
|
if ((entityLiving instanceof EntityPlayer)) {
|
||||||
playerIn = (EntityPlayer) entityLiving;
|
playerIn = (EntityPlayer) entityLiving;
|
||||||
}
|
}
|
||||||
for (BlockPos additionalPos : getTargetBlocks(worldIn, pos, playerIn)) {
|
if(ItemUtils.isActive(stack)){
|
||||||
breakBlock(additionalPos, worldIn, playerIn, stack);
|
for (BlockPos additionalPos : getTargetBlocks(worldIn, pos, playerIn)) {
|
||||||
|
breakBlock(additionalPos, worldIn, playerIn, stack);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return super.onBlockDestroyed(stack, worldIn, blockIn, pos, entityLiving);
|
return super.onBlockDestroyed(stack, worldIn, blockIn, pos, entityLiving);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ActionResult<ItemStack> onItemRightClick(final World world, final EntityPlayer player, final EnumHand hand) {
|
||||||
|
final ItemStack stack = player.getHeldItem(hand);
|
||||||
|
if (player.isSneaking()) {
|
||||||
|
if (new ForgePowerItemManager(stack).getEnergyStored() < cost) {
|
||||||
|
ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new TextComponentString(
|
||||||
|
TextFormatting.GRAY + I18n.format("techreborn.message.nanosaberEnergyErrorTo") + " "
|
||||||
|
+ TextFormatting.GOLD + I18n
|
||||||
|
.format("techreborn.message.nanosaberActivate")));
|
||||||
|
} else {
|
||||||
|
if (!ItemUtils.isActive(stack)) {
|
||||||
|
if (stack.getTag() == null) {
|
||||||
|
stack.setTag(new NBTTagCompound());
|
||||||
|
}
|
||||||
|
stack.getTag().putBoolean("isActive", true);
|
||||||
|
if (world.isRemote) {
|
||||||
|
ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new TextComponentString(
|
||||||
|
TextFormatting.GRAY + I18n.format("techreborn.message.setTo") + " "
|
||||||
|
+ TextFormatting.GOLD + I18n
|
||||||
|
.format("techreborn.message.nanosaberActive")));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
stack.getTag().putBoolean("isActive", false);
|
||||||
|
if (world.isRemote) {
|
||||||
|
ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new TextComponentString(
|
||||||
|
TextFormatting.GRAY + I18n.format("techreborn.message.setTo") + " "
|
||||||
|
+ TextFormatting.GOLD + I18n
|
||||||
|
.format("techreborn.message.nanosaberInactive")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new ActionResult<>(EnumActionResult.SUCCESS, stack);
|
||||||
|
}
|
||||||
|
return new ActionResult<>(EnumActionResult.PASS, stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onEntityItemUpdate(ItemStack stack, EntityItem entity) {
|
||||||
|
if (ItemUtils.isActive(stack) && new ForgePowerItemManager(stack).getEnergyStored() < cost) {
|
||||||
|
if(entity.world.isRemote){
|
||||||
|
ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new TextComponentString(
|
||||||
|
TextFormatting.GRAY + I18n.format("techreborn.message.nanosaberEnergyError") + " "
|
||||||
|
+ TextFormatting.GOLD + I18n
|
||||||
|
.format("techreborn.message.nanosaberDeactivating")));
|
||||||
|
}
|
||||||
|
stack.getTag().putBoolean("isActive", false);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
@Override
|
||||||
|
public void addInformation(ItemStack stack, @Nullable World worldIn, List<ITextComponent> tooltip, ITooltipFlag flagIn) {
|
||||||
|
if (!ItemUtils.isActive(stack)) {
|
||||||
|
tooltip.add(new TextComponentString(TextFormatting.YELLOW + "Shear: " + TextFormatting.RED + I18n.format("techreborn.message.nanosaberInactive")));
|
||||||
|
} else {
|
||||||
|
tooltip.add(new TextComponentString(TextFormatting.YELLOW + "Shear: " + TextFormatting.GREEN + I18n.format("techreborn.message.nanosaberActive")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ItemPickaxe
|
// ItemPickaxe
|
||||||
@Override
|
@Override
|
||||||
public boolean canHarvestBlock(IBlockState blockIn) {
|
public boolean canHarvestBlock(IBlockState blockIn) {
|
||||||
|
|
|
@ -24,17 +24,27 @@
|
||||||
|
|
||||||
package techreborn.packets;
|
package techreborn.packets;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
|
import net.minecraft.init.Items;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraftforge.fml.network.NetworkEvent;
|
||||||
|
import reborncore.common.network.ExtendedPacketBuffer;
|
||||||
import reborncore.common.network.NetworkManager;
|
import reborncore.common.network.NetworkManager;
|
||||||
import reborncore.common.network.NetworkPacket;
|
import reborncore.common.network.NetworkPacket;
|
||||||
|
import techreborn.init.TRContent;
|
||||||
|
import techreborn.items.ItemManual;
|
||||||
import techreborn.tiles.fusionReactor.TileFusionControlComputer;
|
import techreborn.tiles.fusionReactor.TileFusionControlComputer;
|
||||||
import techreborn.tiles.machine.tier1.TileAutoCraftingTable;
|
import techreborn.tiles.machine.tier1.TileAutoCraftingTable;
|
||||||
import techreborn.tiles.machine.tier1.TileRollingMachine;
|
import techreborn.tiles.machine.tier1.TileRollingMachine;
|
||||||
import techreborn.tiles.storage.TileAdjustableSU;
|
import techreborn.tiles.storage.TileAdjustableSU;
|
||||||
import techreborn.tiles.storage.idsu.TileInterdimensionalSU;
|
import techreborn.tiles.storage.idsu.TileInterdimensionalSU;
|
||||||
|
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public class ServerboundPackets {
|
public class ServerboundPackets {
|
||||||
|
|
||||||
public static final ResourceLocation AESU = new ResourceLocation("techreborn", "aesu");
|
public static final ResourceLocation AESU = new ResourceLocation("techreborn", "aesu");
|
||||||
|
@ -42,6 +52,7 @@ public class ServerboundPackets {
|
||||||
public static final ResourceLocation ROLLING_MACHINE_LOCK = new ResourceLocation("techreborn", "rolling_machine_lock");
|
public static final ResourceLocation ROLLING_MACHINE_LOCK = new ResourceLocation("techreborn", "rolling_machine_lock");
|
||||||
public static final ResourceLocation FUSION_CONTROL_SIZE = new ResourceLocation("techreborn", "fusion_control_size");
|
public static final ResourceLocation FUSION_CONTROL_SIZE = new ResourceLocation("techreborn", "fusion_control_size");
|
||||||
public static final ResourceLocation IDSU = new ResourceLocation("techreborn", "idsu");
|
public static final ResourceLocation IDSU = new ResourceLocation("techreborn", "idsu");
|
||||||
|
public static final ResourceLocation REFUND = new ResourceLocation("techreborn", "refund");
|
||||||
|
|
||||||
public static void init() {
|
public static void init() {
|
||||||
NetworkManager.registerPacketHandler(AESU, (extendedPacketBuffer, context) -> {
|
NetworkManager.registerPacketHandler(AESU, (extendedPacketBuffer, context) -> {
|
||||||
|
@ -50,7 +61,7 @@ public class ServerboundPackets {
|
||||||
context.enqueueWork(() -> {
|
context.enqueueWork(() -> {
|
||||||
TileEntity tile = context.getSender().world.getTileEntity(pos);
|
TileEntity tile = context.getSender().world.getTileEntity(pos);
|
||||||
if (tile instanceof TileAdjustableSU) {
|
if (tile instanceof TileAdjustableSU) {
|
||||||
((TileAdjustableSU) tile).handleGuiInputFromClient(buttonID);
|
((TileAdjustableSU) tile).handleGuiInputFromClient(buttonID, false, false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -98,6 +109,26 @@ public class ServerboundPackets {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
NetworkManager.registerPacketHandler(REFUND, (extendedPacketBuffer, context) -> {
|
||||||
|
if(!ItemManual.allowRefund){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
context.enqueueWork(() -> {
|
||||||
|
EntityPlayerMP playerMP = context.getSender();
|
||||||
|
for (int i = 0; i < playerMP.inventory.getSizeInventory(); i++) {
|
||||||
|
ItemStack stack = playerMP.inventory.getStackInSlot(i);
|
||||||
|
if (stack.getItem() == TRContent.MANUAL) {
|
||||||
|
playerMP.inventory.removeStackFromSlot(i);
|
||||||
|
playerMP.inventory.addItemStackToInventory(new ItemStack(Items.BOOK));
|
||||||
|
//TODO 1.13
|
||||||
|
//playerMP.inventory.addItemStackToInventory(OreUtil.getStackFromName("ingotRefinedIron"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static NetworkPacket createPacketAesu(int buttonID, TileAdjustableSU tile) {
|
public static NetworkPacket createPacketAesu(int buttonID, TileAdjustableSU tile) {
|
||||||
|
@ -135,4 +166,10 @@ public class ServerboundPackets {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static NetworkPacket createRefundPacket(){
|
||||||
|
return NetworkManager.createPacket(REFUND, extendedPacketBuffer -> {
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
|
|
||||||
package techreborn.tiles;
|
package techreborn.tiles;
|
||||||
|
|
||||||
import net.minecraft.client.resources.I18n;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
@ -35,6 +34,7 @@ import net.minecraft.util.text.TextComponentString;
|
||||||
import net.minecraft.util.text.TextFormatting;
|
import net.minecraft.util.text.TextFormatting;
|
||||||
import reborncore.api.IToolDrop;
|
import reborncore.api.IToolDrop;
|
||||||
import reborncore.common.util.ChatUtils;
|
import reborncore.common.util.ChatUtils;
|
||||||
|
import reborncore.common.util.StringUtils;
|
||||||
import techreborn.blocks.BlockAlarm;
|
import techreborn.blocks.BlockAlarm;
|
||||||
import techreborn.init.ModSounds;
|
import techreborn.init.ModSounds;
|
||||||
import techreborn.init.TRContent;
|
import techreborn.init.TRContent;
|
||||||
|
@ -56,7 +56,8 @@ public class TileAlarm extends TileEntity
|
||||||
} else {
|
} else {
|
||||||
selectedSound = 1;
|
selectedSound = 1;
|
||||||
}
|
}
|
||||||
ChatUtils.sendNoSpamMessages(MessageIDs.alarmID, new TextComponentString(TextFormatting.GRAY + I18n.format("techreborn.message.alarm") + " " + "Alarm " + selectedSound));
|
ChatUtils.sendNoSpamMessages(MessageIDs.alarmID, new TextComponentString(
|
||||||
|
TextFormatting.GRAY + StringUtils.t("techreborn.message.alarm") + " " + "Alarm " + selectedSound));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,6 +75,7 @@ public class TileFusionControlComputer extends TilePowerAcceptor
|
||||||
int outputStackSlot = 2;
|
int outputStackSlot = 2;
|
||||||
FusionReactorRecipe currentRecipe = null;
|
FusionReactorRecipe currentRecipe = null;
|
||||||
boolean hasStartedCrafting = false;
|
boolean hasStartedCrafting = false;
|
||||||
|
long lastTick = -1;
|
||||||
|
|
||||||
public TileFusionControlComputer() {
|
public TileFusionControlComputer() {
|
||||||
super(TRTileEntities.FUSION_CONTROL_COMPUTER);
|
super(TRTileEntities.FUSION_CONTROL_COMPUTER);
|
||||||
|
@ -181,7 +182,8 @@ public class TileFusionControlComputer extends TilePowerAcceptor
|
||||||
* @return boolean True if reactor can execute recipe provided
|
* @return boolean True if reactor can execute recipe provided
|
||||||
*/
|
*/
|
||||||
private boolean validateReactorRecipe(FusionReactorRecipe recipe) {
|
private boolean validateReactorRecipe(FusionReactorRecipe recipe) {
|
||||||
return validateReactorRecipeInputs(recipe, inventory.getStackInSlot(topStackSlot), inventory.getStackInSlot(bottomStackSlot)) || validateReactorRecipeInputs(recipe, inventory.getStackInSlot(bottomStackSlot), inventory.getStackInSlot(topStackSlot));
|
boolean validRecipe = validateReactorRecipeInputs(recipe, inventory.getStackInSlot(topStackSlot), inventory.getStackInSlot(bottomStackSlot)) || validateReactorRecipeInputs(recipe, inventory.getStackInSlot(bottomStackSlot), inventory.getStackInSlot(topStackSlot));
|
||||||
|
return validRecipe && getSize() >= recipe.getMinSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean validateReactorRecipeInputs(FusionReactorRecipe recipe, ItemStack slot1, ItemStack slot2) {
|
private boolean validateReactorRecipeInputs(FusionReactorRecipe recipe, ItemStack slot1, ItemStack slot2) {
|
||||||
|
@ -207,6 +209,12 @@ public class TileFusionControlComputer extends TilePowerAcceptor
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(lastTick == world.getGameTime()){
|
||||||
|
//Prevent tick accerators, blame obstinate for this.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lastTick = world.getGameTime();
|
||||||
|
|
||||||
// Force check every second
|
// Force check every second
|
||||||
if (world.getGameTime() % 20 == 0) {
|
if (world.getGameTime() % 20 == 0) {
|
||||||
checkCoils();
|
checkCoils();
|
||||||
|
|
|
@ -89,7 +89,7 @@ public class TileLightningRod extends TilePowerAcceptor implements IToolDrop {
|
||||||
world.addWeatherEffect(lightningBolt);
|
world.addWeatherEffect(lightningBolt);
|
||||||
world.spawnEntity(lightningBolt);
|
world.spawnEntity(lightningBolt);
|
||||||
addEnergy(baseEnergyStrike * (0.3F + weatherStrength));
|
addEnergy(baseEnergyStrike * (0.3F + weatherStrength));
|
||||||
((BlockMachineBase) getBlockType()).setActive(true, world, pos);
|
((BlockMachineBase) world.getBlockState(pos).getBlock()).setActive(true, world, pos);
|
||||||
onStatusHoldTicks = 400;
|
onStatusHoldTicks = 400;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ public class TileThermalGenerator extends TileBaseFluidGenerator implements ICon
|
||||||
@ConfigRegistry(config = "generators", category = "thermal_generator", key = "ThermalGeneratorTankCapacity", comment = "Thermal Generator Tank Capacity")
|
@ConfigRegistry(config = "generators", category = "thermal_generator", key = "ThermalGeneratorTankCapacity", comment = "Thermal Generator Tank Capacity")
|
||||||
public static int tankCapacity = 10_000;
|
public static int tankCapacity = 10_000;
|
||||||
@ConfigRegistry(config = "generators", category = "thermal_generator", key = "ThermalGeneratorEnergyPerTick", comment = "Thermal Generator Energy Per Tick (Value in EU)")
|
@ConfigRegistry(config = "generators", category = "thermal_generator", key = "ThermalGeneratorEnergyPerTick", comment = "Thermal Generator Energy Per Tick (Value in EU)")
|
||||||
public static int energyPerTick = 10;
|
public static int energyPerTick = 16;
|
||||||
|
|
||||||
public TileThermalGenerator() {
|
public TileThermalGenerator() {
|
||||||
super(TRTileEntities.THERMAL_GEN, EFluidGenerator.THERMAL, "TileThermalGenerator", tankCapacity, energyPerTick);
|
super(TRTileEntities.THERMAL_GEN, EFluidGenerator.THERMAL, "TileThermalGenerator", tankCapacity, energyPerTick);
|
||||||
|
|
|
@ -58,6 +58,9 @@ public class TileImplosionCompressor extends TileGenericMachine implements ICont
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getMutliBlock() {
|
public boolean getMutliBlock() {
|
||||||
|
if(multiblockChecker == null){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
final boolean down = multiblockChecker.checkRectY(1, 1, MultiblockChecker.REINFORCED_CASING, MultiblockChecker.ZERO_OFFSET);
|
final boolean down = multiblockChecker.checkRectY(1, 1, MultiblockChecker.REINFORCED_CASING, MultiblockChecker.ZERO_OFFSET);
|
||||||
final boolean up = multiblockChecker.checkRectY(1, 1, MultiblockChecker.REINFORCED_CASING, new BlockPos(0, 2, 0));
|
final boolean up = multiblockChecker.checkRectY(1, 1, MultiblockChecker.REINFORCED_CASING, new BlockPos(0, 2, 0));
|
||||||
final boolean chamber = multiblockChecker.checkRingYHollow(1, 1, MultiblockChecker.REINFORCED_CASING, new BlockPos(0, 1, 0));
|
final boolean chamber = multiblockChecker.checkRingYHollow(1, 1, MultiblockChecker.REINFORCED_CASING, new BlockPos(0, 1, 0));
|
||||||
|
@ -68,21 +71,13 @@ public class TileImplosionCompressor extends TileGenericMachine implements ICont
|
||||||
@Override
|
@Override
|
||||||
public void tick() {
|
public void tick() {
|
||||||
if (multiblockChecker == null) {
|
if (multiblockChecker == null) {
|
||||||
final BlockPos downCenter = pos.offset(getFacing().getOpposite(), 2);
|
multiblockChecker = new MultiblockChecker(world, pos.down(3));
|
||||||
multiblockChecker = new MultiblockChecker(world, downCenter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!world.isRemote && getMutliBlock()){
|
if (!world.isRemote && getMutliBlock()){
|
||||||
super.tick();
|
super.tick();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TileEntity
|
|
||||||
@Override
|
|
||||||
public void validate() {
|
|
||||||
super.validate();
|
|
||||||
multiblockChecker = new MultiblockChecker(world, pos.down(3));
|
|
||||||
}
|
|
||||||
|
|
||||||
// IContainerProvider
|
// IContainerProvider
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -105,6 +105,9 @@ public class TileIndustrialBlastFurnace extends TileGenericMachine implements IC
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getMutliBlock() {
|
public boolean getMutliBlock() {
|
||||||
|
if(multiblockChecker == null){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
final boolean layer0 = multiblockChecker.checkRectY(1, 1, MultiblockChecker.CASING_ANY, MultiblockChecker.ZERO_OFFSET);
|
final boolean layer0 = multiblockChecker.checkRectY(1, 1, MultiblockChecker.CASING_ANY, MultiblockChecker.ZERO_OFFSET);
|
||||||
final boolean layer1 = multiblockChecker.checkRingY(1, 1, MultiblockChecker.CASING_ANY, new BlockPos(0, 1, 0));
|
final boolean layer1 = multiblockChecker.checkRingY(1, 1, MultiblockChecker.CASING_ANY, new BlockPos(0, 1, 0));
|
||||||
final boolean layer2 = multiblockChecker.checkRingY(1, 1, MultiblockChecker.CASING_ANY, new BlockPos(0, 2, 0));
|
final boolean layer2 = multiblockChecker.checkRingY(1, 1, MultiblockChecker.CASING_ANY, new BlockPos(0, 2, 0));
|
||||||
|
@ -132,7 +135,7 @@ public class TileIndustrialBlastFurnace extends TileGenericMachine implements IC
|
||||||
multiblockChecker = new MultiblockChecker(world, downCenter);
|
multiblockChecker = new MultiblockChecker(world, downCenter);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!world.isRemote && getMutliBlock()){
|
if (getMutliBlock()){
|
||||||
super.tick();
|
super.tick();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -167,7 +167,6 @@ public class TileElectricFurnace extends TilePowerAcceptor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
progress = 0;
|
|
||||||
updateState();
|
updateState();
|
||||||
}
|
}
|
||||||
if (burning != isBurning()) {
|
if (burning != isBurning()) {
|
||||||
|
|
|
@ -29,6 +29,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import reborncore.api.IToolDrop;
|
import reborncore.api.IToolDrop;
|
||||||
|
import reborncore.api.tile.IUpgrade;
|
||||||
import reborncore.api.tile.ItemHandlerProvider;
|
import reborncore.api.tile.ItemHandlerProvider;
|
||||||
import reborncore.client.containerBuilder.IContainerProvider;
|
import reborncore.client.containerBuilder.IContainerProvider;
|
||||||
import reborncore.client.containerBuilder.builder.BuiltContainer;
|
import reborncore.client.containerBuilder.builder.BuiltContainer;
|
||||||
|
@ -50,6 +51,8 @@ public class TileRecycler extends TilePowerAcceptor
|
||||||
public static int maxInput = 32;
|
public static int maxInput = 32;
|
||||||
@ConfigRegistry(config = "machines", category = "recycler", key = "RecyclerMaxEnergy", comment = "Recycler Max Energy (Value in EU)")
|
@ConfigRegistry(config = "machines", category = "recycler", key = "RecyclerMaxEnergy", comment = "Recycler Max Energy (Value in EU)")
|
||||||
public static int maxEnergy = 1000;
|
public static int maxEnergy = 1000;
|
||||||
|
@ConfigRegistry(config = "machines", category = "recycler", key = "produceIC2Scrap", comment = "When enabled and when ic2 is installed the recycler will make ic2 scrap")
|
||||||
|
public static boolean produceIC2Scrap = false;
|
||||||
|
|
||||||
private final Inventory<TileRecycler> inventory = new Inventory<>(3, "TileRecycler", 64, this).withConfiguredAccess();
|
private final Inventory<TileRecycler> inventory = new Inventory<>(3, "TileRecycler", 64, this).withConfiguredAccess();
|
||||||
private final int cost = 2;
|
private final int cost = 2;
|
||||||
|
@ -75,7 +78,7 @@ public class TileRecycler extends TilePowerAcceptor
|
||||||
}
|
}
|
||||||
|
|
||||||
public void recycleItems() {
|
public void recycleItems() {
|
||||||
final ItemStack itemstack = TRContent.Parts.SCRAP.getStack();
|
ItemStack itemstack = TRContent.Parts.SCRAP.getStack();
|
||||||
final int randomchance = this.world.rand.nextInt(chance);
|
final int randomchance = this.world.rand.nextInt(chance);
|
||||||
|
|
||||||
if (randomchance == 1) {
|
if (randomchance == 1) {
|
||||||
|
@ -201,7 +204,7 @@ public class TileRecycler extends TilePowerAcceptor
|
||||||
@Override
|
@Override
|
||||||
public BuiltContainer createContainer(EntityPlayer player) {
|
public BuiltContainer createContainer(EntityPlayer player) {
|
||||||
return new ContainerBuilder("recycler").player(player.inventory).inventory().hotbar().addInventory()
|
return new ContainerBuilder("recycler").player(player.inventory).inventory().hotbar().addInventory()
|
||||||
.tile(this).slot(0, 55, 45).outputSlot(1, 101, 45).energySlot(2, 8, 72).syncEnergyValue()
|
.tile(this).slot(0, 55, 45, itemStack -> itemStack.getItem() instanceof IUpgrade).outputSlot(1, 101, 45).energySlot(2, 8, 72).syncEnergyValue()
|
||||||
.syncIntegerValue(this::getProgress, this::setProgress).addInventory().create(this);
|
.syncIntegerValue(this::getProgress, this::setProgress).addInventory().create(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ import reborncore.api.tile.ItemHandlerProvider;
|
||||||
import reborncore.client.containerBuilder.IContainerProvider;
|
import reborncore.client.containerBuilder.IContainerProvider;
|
||||||
import reborncore.client.containerBuilder.builder.BuiltContainer;
|
import reborncore.client.containerBuilder.builder.BuiltContainer;
|
||||||
import reborncore.client.containerBuilder.builder.ContainerBuilder;
|
import reborncore.client.containerBuilder.builder.ContainerBuilder;
|
||||||
|
import reborncore.common.blocks.BlockMachineBase;
|
||||||
import reborncore.common.powerSystem.TilePowerAcceptor;
|
import reborncore.common.powerSystem.TilePowerAcceptor;
|
||||||
import reborncore.common.registration.RebornRegister;
|
import reborncore.common.registration.RebornRegister;
|
||||||
import reborncore.common.registration.config.ConfigRegistry;
|
import reborncore.common.registration.config.ConfigRegistry;
|
||||||
|
@ -50,8 +51,10 @@ import techreborn.init.TRTileEntities;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
//TODO add tick and power bars.
|
//TODO add tick and power bars.
|
||||||
|
|
||||||
|
@ -121,6 +124,7 @@ public class TileRollingMachine extends TilePowerAcceptor
|
||||||
InventoryCrafting craftMatrix = getCraftingMatrix();
|
InventoryCrafting craftMatrix = getCraftingMatrix();
|
||||||
currentRecipe = RollingMachineRecipe.instance.findMatchingRecipe(craftMatrix, world);
|
currentRecipe = RollingMachineRecipe.instance.findMatchingRecipe(craftMatrix, world);
|
||||||
if (currentRecipe != null) {
|
if (currentRecipe != null) {
|
||||||
|
setIsActive(true);
|
||||||
if (world.getGameTime() % 2 == 0) {
|
if (world.getGameTime() % 2 == 0) {
|
||||||
Optional<InventoryCrafting> balanceResult = balanceRecipe(craftMatrix);
|
Optional<InventoryCrafting> balanceResult = balanceRecipe(craftMatrix);
|
||||||
if (balanceResult.isPresent()) {
|
if (balanceResult.isPresent()) {
|
||||||
|
@ -149,6 +153,8 @@ public class TileRollingMachine extends TilePowerAcceptor
|
||||||
inventory.setStackInSlot(outputSlot, stack);
|
inventory.setStackInSlot(outputSlot, stack);
|
||||||
tickTime = 0;
|
tickTime = 0;
|
||||||
hasCrafted = true;
|
hasCrafted = true;
|
||||||
|
} else {
|
||||||
|
setIsActive(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (hasCrafted) {
|
if (hasCrafted) {
|
||||||
|
@ -169,13 +175,27 @@ public class TileRollingMachine extends TilePowerAcceptor
|
||||||
&& canMake(craftMatrix)) {
|
&& canMake(craftMatrix)) {
|
||||||
useEnergy(getEuPerTick(energyPerTick));
|
useEnergy(getEuPerTick(energyPerTick));
|
||||||
tickTime++;
|
tickTime++;
|
||||||
|
} else {
|
||||||
|
setIsActive(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (currentRecipeOutput.isEmpty()) {
|
if (currentRecipeOutput.isEmpty()) {
|
||||||
tickTime = 0;
|
tickTime = 0;
|
||||||
currentRecipe = null;
|
currentRecipe = null;
|
||||||
|
setIsActive(canMake(getCraftingMatrix()));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIsActive(boolean active) {
|
||||||
|
if (active == isRunning){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
isRunning = active;
|
||||||
|
if (this.getWorld().getBlockState(this.getPos()).getBlock() instanceof BlockMachineBase) {
|
||||||
|
BlockMachineBase blockMachineBase = (BlockMachineBase)this.getWorld().getBlockState(this.getPos()).getBlock();
|
||||||
|
blockMachineBase.setActive(active, this.getWorld(), this.getPos());
|
||||||
|
}
|
||||||
|
this.getWorld().notifyBlockUpdate(this.getPos(), this.getWorld().getBlockState(this.getPos()), this.getWorld().getBlockState(this.getPos()), 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<InventoryCrafting> balanceRecipe(InventoryCrafting craftCache) {
|
public Optional<InventoryCrafting> balanceRecipe(InventoryCrafting craftCache) {
|
||||||
|
@ -213,6 +233,45 @@ public class TileRollingMachine extends TilePowerAcceptor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!possibleSlots.isEmpty()){
|
||||||
|
int totalItems = possibleSlots.stream()
|
||||||
|
.mapToInt(value -> inventory.getStackInSlot(value).getCount()).sum();
|
||||||
|
int slots = possibleSlots.size();
|
||||||
|
|
||||||
|
//This makes an array of ints with the best possible slot distribution
|
||||||
|
int[] split = new int[slots];
|
||||||
|
int remainder = totalItems % slots;
|
||||||
|
Arrays.fill(split, totalItems / slots);
|
||||||
|
while (remainder > 0){
|
||||||
|
for (int i = 0; i < split.length; i++) {
|
||||||
|
if(remainder > 0){
|
||||||
|
split[i] +=1;
|
||||||
|
remainder --;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Integer> slotDistrubution = possibleSlots.stream()
|
||||||
|
.mapToInt(value -> inventory.getStackInSlot(value).getCount())
|
||||||
|
.boxed().collect(Collectors.toList());
|
||||||
|
|
||||||
|
boolean needsBalance = false;
|
||||||
|
for (int i = 0; i < split.length; i++) {
|
||||||
|
int required = split[i];
|
||||||
|
if(slotDistrubution.contains(required)){
|
||||||
|
//We need to remove the int, not at the int, this seems to work around that
|
||||||
|
slotDistrubution.remove(new Integer(required));
|
||||||
|
} else {
|
||||||
|
needsBalance = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!needsBalance) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
//Slot, count
|
//Slot, count
|
||||||
Pair<Integer, Integer> bestSlot = null;
|
Pair<Integer, Integer> bestSlot = null;
|
||||||
for (Integer slot : possibleSlots) {
|
for (Integer slot : possibleSlots) {
|
||||||
|
|
|
@ -28,6 +28,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import reborncore.api.power.EnumPowerTier;
|
import reborncore.api.power.EnumPowerTier;
|
||||||
|
import reborncore.api.tile.IUpgrade;
|
||||||
import reborncore.client.containerBuilder.IContainerProvider;
|
import reborncore.client.containerBuilder.IContainerProvider;
|
||||||
import reborncore.client.containerBuilder.builder.BuiltContainer;
|
import reborncore.client.containerBuilder.builder.BuiltContainer;
|
||||||
import reborncore.client.containerBuilder.builder.ContainerBuilder;
|
import reborncore.client.containerBuilder.builder.ContainerBuilder;
|
||||||
|
@ -42,9 +43,9 @@ import techreborn.init.TRTileEntities;
|
||||||
public class TileAdjustableSU extends TileEnergyStorage implements IContainerProvider {
|
public class TileAdjustableSU extends TileEnergyStorage implements IContainerProvider {
|
||||||
|
|
||||||
@ConfigRegistry(config = "machines", category = "aesu", key = "AesuMaxInput", comment = "AESU Max Input (Value in EU)")
|
@ConfigRegistry(config = "machines", category = "aesu", key = "AesuMaxInput", comment = "AESU Max Input (Value in EU)")
|
||||||
public static int maxInput = 8192;
|
public static int maxInput = 16192;
|
||||||
@ConfigRegistry(config = "machines", category = "aesu", key = "AesuMaxOutput", comment = "AESU Max Output (Value in EU)")
|
@ConfigRegistry(config = "machines", category = "aesu", key = "AesuMaxOutput", comment = "AESU Max Output (Value in EU)")
|
||||||
public static int maxOutput = 8192;
|
public static int maxOutput = 16192;
|
||||||
@ConfigRegistry(config = "machines", category = "aesu", key = "AesuMaxEnergy", comment = "AESU Max Energy (Value in EU)")
|
@ConfigRegistry(config = "machines", category = "aesu", key = "AesuMaxEnergy", comment = "AESU Max Energy (Value in EU)")
|
||||||
public static int maxEnergy = 100_000_000;
|
public static int maxEnergy = 100_000_000;
|
||||||
|
|
||||||
|
@ -54,22 +55,58 @@ public class TileAdjustableSU extends TileEnergyStorage implements IContainerPro
|
||||||
public TileAdjustableSU() {
|
public TileAdjustableSU() {
|
||||||
super(TRTileEntities.ADJUSTABLE_SU, "ADJUSTABLE_SU", 4, TRContent.Machine.ADJUSTABLE_SU.block, EnumPowerTier.INSANE, maxInput, maxOutput, maxEnergy);
|
super(TRTileEntities.ADJUSTABLE_SU, "ADJUSTABLE_SU", 4, TRContent.Machine.ADJUSTABLE_SU.block, EnumPowerTier.INSANE, maxInput, maxOutput, maxEnergy);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handleGuiInputFromClient(int id) {
|
int superconductors = 0;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick() {
|
||||||
|
super.tick();
|
||||||
|
|
||||||
|
superconductors = 0;
|
||||||
|
for (int i = 0; i < getUpgradeSlotCount(); i++) {
|
||||||
|
ItemStack stack = getUpgradeInvetory().getStackInSlot(i);
|
||||||
|
if(false){ //TODO 1.13
|
||||||
|
superconductors++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (OUTPUT > getMaxConfigOutput()) {
|
||||||
|
OUTPUT = getMaxConfigOutput();
|
||||||
|
}
|
||||||
|
if(world.getGameTime() % 20 == 0){
|
||||||
|
checkTier();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMaxConfigOutput(){
|
||||||
|
int extra = 0;
|
||||||
|
if(superconductors > 0){
|
||||||
|
extra = (int) Math.pow(2, (superconductors + 2)) * maxOutput;
|
||||||
|
}
|
||||||
|
return maxOutput + extra;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void handleGuiInputFromClient(int id, boolean shift, boolean ctrl) {
|
||||||
if (id == 300) {
|
if (id == 300) {
|
||||||
OUTPUT += 256;
|
OUTPUT += shift ? 4096 : 256;
|
||||||
|
if(ctrl){
|
||||||
|
//Set to max, limited to the max later
|
||||||
|
OUTPUT = Integer.MAX_VALUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (id == 301) {
|
if (id == 301) {
|
||||||
OUTPUT += 64;
|
OUTPUT += shift ? 512 : 64;
|
||||||
}
|
}
|
||||||
if (id == 302) {
|
if (id == 302) {
|
||||||
OUTPUT -= 64;
|
OUTPUT -= shift ? 512 : 64;
|
||||||
}
|
}
|
||||||
if (id == 303) {
|
if (id == 303) {
|
||||||
OUTPUT -= 256;
|
OUTPUT -= shift ? 4096 : 256;
|
||||||
|
if(ctrl){
|
||||||
|
OUTPUT = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (OUTPUT > maxOutput) {
|
if (OUTPUT > getMaxConfigOutput()) {
|
||||||
OUTPUT = maxOutput;
|
OUTPUT = getMaxConfigOutput();
|
||||||
}
|
}
|
||||||
if (OUTPUT <= -1) {
|
if (OUTPUT <= -1) {
|
||||||
OUTPUT = 0;
|
OUTPUT = 0;
|
||||||
|
@ -104,6 +141,25 @@ public class TileAdjustableSU extends TileEnergyStorage implements IContainerPro
|
||||||
return OUTPUT;
|
return OUTPUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getMaxOutput() {
|
||||||
|
return OUTPUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getBaseMaxInput() {
|
||||||
|
//If we have super conductors increase the max input of the machine
|
||||||
|
if(getMaxConfigOutput() > maxOutput){
|
||||||
|
return getMaxConfigOutput();
|
||||||
|
}
|
||||||
|
return maxInput;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EnumPowerTier getBaseTier() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// TilePowerAcceptor
|
// TilePowerAcceptor
|
||||||
@Override
|
@Override
|
||||||
public NBTTagCompound write(NBTTagCompound tagCompound) {
|
public NBTTagCompound write(NBTTagCompound tagCompound) {
|
||||||
|
@ -127,4 +183,14 @@ public class TileAdjustableSU extends TileEnergyStorage implements IContainerPro
|
||||||
.complete(8, 18).addArmor().addInventory().tile(this).energySlot(0, 62, 45).energySlot(1, 98, 45)
|
.complete(8, 18).addArmor().addInventory().tile(this).energySlot(0, 62, 45).energySlot(1, 98, 45)
|
||||||
.syncEnergyValue().syncIntegerValue(this::getCurrentOutput, this::setCurentOutput).addInventory().create(this);
|
.syncEnergyValue().syncIntegerValue(this::getCurrentOutput, this::setCurentOutput).addInventory().create(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canBeUpgraded() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isUpgradeValid(IUpgrade upgrade, ItemStack stack) {
|
||||||
|
return false; //TODO 1.13
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,6 +76,9 @@ public class TileTransformer extends TilePowerAcceptor
|
||||||
this.maxInput = tier.getMaxInput();
|
this.maxInput = tier.getMaxInput();
|
||||||
this.maxOutput = tier.getMaxOutput();
|
this.maxOutput = tier.getMaxOutput();
|
||||||
this.maxStorage = tier.getMaxInput() * 2;
|
this.maxStorage = tier.getMaxInput() * 2;
|
||||||
|
|
||||||
|
// Should always be 4, except if we're tier MICRO, in which it will be 1.
|
||||||
|
super.setMaxPacketsPerTick(tier.getMaxOutput() / ouputTier.getMaxInput());
|
||||||
}
|
}
|
||||||
|
|
||||||
// TilePowerAcceptor
|
// TilePowerAcceptor
|
||||||
|
|
|
@ -45,6 +45,11 @@
|
||||||
"textures": {
|
"textures": {
|
||||||
"layer0": "techreborn:items/cables/insulatedhv"
|
"layer0": "techreborn:items/cables/insulatedhv"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"superconductor": {
|
||||||
|
"textures": {
|
||||||
|
"layer0": "techreborn:items/cables/superconductor"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,6 +77,11 @@
|
||||||
"textures": {
|
"textures": {
|
||||||
"cable": "techreborn:blocks/cables/hv_insulated_cable"
|
"cable": "techreborn:blocks/cables/hv_insulated_cable"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"superconductor": {
|
||||||
|
"textures": {
|
||||||
|
"cable": "techreborn:blocks/cables/superconductor_cable"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,6 +146,7 @@ tile.techreborn.cable.glassfiber.name=Glass Fiber Cable
|
||||||
tile.techreborn.cable.insulatedcopper.name=Insulated Copper Cable
|
tile.techreborn.cable.insulatedcopper.name=Insulated Copper Cable
|
||||||
tile.techreborn.cable.insulatedgold.name=Insulated Gold Cable
|
tile.techreborn.cable.insulatedgold.name=Insulated Gold Cable
|
||||||
tile.techreborn.cable.insulatedhv.name=Insulated HV Cable
|
tile.techreborn.cable.insulatedhv.name=Insulated HV Cable
|
||||||
|
tile.techreborn.cable.superconductor.name=Superconductor Cable
|
||||||
|
|
||||||
#Fluid blocks
|
#Fluid blocks
|
||||||
tile.techreborn.berylium.name=Beryllium
|
tile.techreborn.berylium.name=Beryllium
|
||||||
|
@ -487,6 +488,7 @@ item.techreborn.part.coolant_six.name=60k Coolant Cell
|
||||||
item.techreborn.part.carbon_mesh.name=Carbon Mesh
|
item.techreborn.part.carbon_mesh.name=Carbon Mesh
|
||||||
item.techreborn.part.carbon_fiber.name=Carbon Fiber
|
item.techreborn.part.carbon_fiber.name=Carbon Fiber
|
||||||
item.techreborn.part.uuMatter.name=UU-Matter
|
item.techreborn.part.uuMatter.name=UU-Matter
|
||||||
|
item.techreborn.part.enhanced_super_conductor.name=Enhanced Superconductor
|
||||||
|
|
||||||
#Items-Armor
|
#Items-Armor
|
||||||
item.techreborn.cloakingdevice.name=Cloaking Device
|
item.techreborn.cloakingdevice.name=Cloaking Device
|
||||||
|
@ -528,6 +530,7 @@ item.techreborn.scrapbox.name=Scrap Box
|
||||||
item.techreborn.upgrade.overclock.name=Overclocker Upgrade
|
item.techreborn.upgrade.overclock.name=Overclocker Upgrade
|
||||||
item.techreborn.upgrade.transformer.name=Transformer Upgrade
|
item.techreborn.upgrade.transformer.name=Transformer Upgrade
|
||||||
item.techreborn.upgrade.energy_storage.name=Energy Storage Upgrade
|
item.techreborn.upgrade.energy_storage.name=Energy Storage Upgrade
|
||||||
|
item.techreborn.upgrade.superconductor.name=Superconductor Upgrade
|
||||||
|
|
||||||
|
|
||||||
item.bronzeSword.name=Bronze Sword
|
item.bronzeSword.name=Bronze Sword
|
||||||
|
@ -627,8 +630,10 @@ techreborn.tooltip.alarm=Shift rightclick to change sound
|
||||||
#ManualUI
|
#ManualUI
|
||||||
techreborn.manual.wiki=Online wiki
|
techreborn.manual.wiki=Online wiki
|
||||||
techreborn.manual.discord=Our discord
|
techreborn.manual.discord=Our discord
|
||||||
|
techreborn.manual.refund=I want a refund
|
||||||
techreborn.manual.wikibtn=Open
|
techreborn.manual.wikibtn=Open
|
||||||
techreborn.manual.discordbtn=Join
|
techreborn.manual.discordbtn=Join
|
||||||
|
techreborn.manual.refundbtn=Refund
|
||||||
|
|
||||||
#Advancements
|
#Advancements
|
||||||
advancements.techreborn.root.desc=Now that you have acquired Tech Reborn ore, you might find a tree tap usefull.
|
advancements.techreborn.root.desc=Now that you have acquired Tech Reborn ore, you might find a tree tap usefull.
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 552 B After Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
After Width: | Height: | Size: 552 B |
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
Loading…
Reference in a new issue