From 73f0ff98e4a9b60cd61761b46b9031194400e450 Mon Sep 17 00:00:00 2001 From: drcrazy Date: Fri, 20 Dec 2019 03:03:06 +0300 Subject: [PATCH 1/4] Fix drop for wire mill. Some work on #1914 --- .../loot_tables/blocks/wire_mill.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/main/resources/data/techreborn/loot_tables/blocks/wire_mill.json diff --git a/src/main/resources/data/techreborn/loot_tables/blocks/wire_mill.json b/src/main/resources/data/techreborn/loot_tables/blocks/wire_mill.json new file mode 100644 index 000000000..cf2797273 --- /dev/null +++ b/src/main/resources/data/techreborn/loot_tables/blocks/wire_mill.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "techreborn:wire_mill" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file From b2f4804987c55cc4302fd5046ad6908c5f8b08d4 Mon Sep 17 00:00:00 2001 From: Justin Vitale <4002351+justinvvitale@users.noreply.github.com> Date: Fri, 20 Dec 2019 23:53:23 +1100 Subject: [PATCH 2/4] Solar panel GUI & internal storage plus misc spelling fixes (#1912) * Solar panel GUI & internal storage plus misc spelling fixes * Pullrequest fixes and recipe changes --- .../generator/SolarPanelBlockEntity.java | 130 +++++++++++++----- .../blocks/generator/BlockSolarPanel.java | 9 +- src/main/java/techreborn/client/EGui.java | 1 + .../java/techreborn/client/GuiHandler.java | 3 + .../java/techreborn/client/gui/GuiSolar.java | 70 ++++++++++ .../techreborn/config/TechRebornConfig.java | 7 +- src/main/java/techreborn/init/TRContent.java | 4 +- .../assets/techreborn/lang/en_us.json | 9 +- .../generators/quantum_solar_panel.json | 4 +- .../generators/quantum_solar_panel_on.json | 4 +- .../quantum_solar_panel_side_off.png | Bin 0 -> 321 bytes .../quantum_solar_panel_side_on.png | Bin 0 -> 322 bytes .../solar_panel/quantum_solar_panel.json | 18 +-- .../solar_panel/quantum_solar_panel_alt.json | 25 ---- 14 files changed, 201 insertions(+), 83 deletions(-) create mode 100644 src/main/java/techreborn/client/gui/GuiSolar.java create mode 100644 src/main/resources/assets/techreborn/textures/block/machines/generators/quantum_solar_panel_side_off.png create mode 100644 src/main/resources/assets/techreborn/textures/block/machines/generators/quantum_solar_panel_side_on.png delete mode 100644 src/main/resources/data/techreborn/recipes/crafting_table/solar_panel/quantum_solar_panel_alt.json diff --git a/src/main/java/techreborn/blockentity/generator/SolarPanelBlockEntity.java b/src/main/java/techreborn/blockentity/generator/SolarPanelBlockEntity.java index 506fa5a64..9b66c1294 100644 --- a/src/main/java/techreborn/blockentity/generator/SolarPanelBlockEntity.java +++ b/src/main/java/techreborn/blockentity/generator/SolarPanelBlockEntity.java @@ -33,6 +33,9 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.math.Direction; import reborncore.api.IToolDrop; +import reborncore.client.containerBuilder.IContainerProvider; +import reborncore.client.containerBuilder.builder.BuiltContainer; +import reborncore.client.containerBuilder.builder.ContainerBuilder; import reborncore.common.blocks.BlockMachineBase; import reborncore.common.powerSystem.PowerAcceptorBlockEntity; import reborncore.common.powerSystem.PowerSystem; @@ -45,25 +48,26 @@ import techreborn.init.TRContent.SolarPanels; import java.util.List; -public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements IToolDrop { +public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements IToolDrop, IContainerProvider { + + + // State ZEROGEN: No exposure to sun + // State NIGHTGEN: Has direct exposure to sun + // State DAYGEN: Has exposure to sun and weather is sunny and not raining/thundering + public static final int ZEROGEN = 0; + public static final int NIGHTGEN = 1; + public static final int DAYGEN = 2; + + private int state = ZEROGEN; + private int prevState = ZEROGEN; - boolean canSeeSky = false; - boolean lastState = false; private SolarPanels panel; - public SolarPanelBlockEntity() { - super(TRBlockEntities.SOLAR_PANEL); - } - public SolarPanelBlockEntity(SolarPanels panel) { super(TRBlockEntities.SOLAR_PANEL); this.panel = panel; } - public boolean isSunOut() { - return canSeeSky && !world.isRaining() && !world.isThundering() && world.isDay(); - } - private void updatePanel() { if (world == null) { return; @@ -75,35 +79,81 @@ public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements I } } - // PowerAcceptorBlockEntity + + // Setters and getters for the GUI to sync + private void setSunState(int state) { + this.state = state; + } + + public int getSunState() { + return state; + } + + SolarPanels getPanel() { + if (panel == null) { + updatePanel(); + } + return panel; + } + + private void updateState() { + if (world.isSkyVisible(pos.up())) { + this.setSunState(NIGHTGEN); + + if (!world.isRaining() && !world.isThundering() && world.isDay()) { + this.setSunState(DAYGEN); + } + } else { + this.setSunState(ZEROGEN); + } + + if (prevState != this.getSunState()) { + boolean isGenerating = getSunState() == DAYGEN; + + world.setBlockState(pos, world.getBlockState(pos).with(BlockMachineBase.ACTIVE, isGenerating)); + + prevState = this.getSunState(); + } + } + + public int getGenerationRate() { + int rate = 0; + + switch (getSunState()) { + case DAYGEN: + rate = getPanel().generationRateD; + break; + case NIGHTGEN: + rate = getPanel().generationRateN; + } + + return rate; + } + + + // Overrides + @Override public void tick() { super.tick(); + if (world.isClient) { return; } + if (getPanel() == TRContent.SolarPanels.CREATIVE) { checkOverfill = false; setEnergy(Integer.MAX_VALUE); return; } + + // State checking and updating if (world.getTime() % 20 == 0) { - canSeeSky = world.isSkyVisible(pos.up()); - if (lastState != isSunOut()) { - world.setBlockState(pos, world.getBlockState(pos).with(BlockMachineBase.ACTIVE, isSunOut())); - lastState = isSunOut(); - } - } - int powerToAdd; - if (isSunOut()) { - powerToAdd = getPanel().generationRateD; - } else if (canSeeSky) { - powerToAdd = getPanel().generationRateN; - } else { - powerToAdd = 0; + updateState(); } - addEnergy(powerToAdd); + // Power generation calculations + addEnergy(getGenerationRate()); } @Override @@ -123,7 +173,8 @@ public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements I @Override public double getBaseMaxOutput() { - return getPanel().generationRateD; + // Solar panel output will only be limited by the cables the users use + return EnergyTier.EXTREME.getMaxOutput(); } @Override @@ -131,6 +182,16 @@ public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements I return 0; } + @Override + public boolean canBeUpgraded() { + return false; + } + + @Override + public boolean hasSlotConfig() { + return false; + } + @Override public EnergyTier getTier() { return getPanel().powerTier; @@ -141,13 +202,6 @@ public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements I // Nope } - public SolarPanels getPanel() { - if(panel == null){ - updatePanel(); - } - return panel; - } - @Override public void addInfo(List info, boolean isReal, boolean hasData) { if (panel == SolarPanels.CREATIVE) { @@ -188,4 +242,12 @@ public class SolarPanelBlockEntity extends PowerAcceptorBlockEntity implements I public ItemStack getToolDrop(final PlayerEntity playerIn) { return new ItemStack(getBlockType()); } + + @Override + public BuiltContainer createContainer(int syncID, final PlayerEntity player) { + return new ContainerBuilder("solar_panel").player(player.inventory).inventory().hotbar().addInventory() + .blockEntity(this).syncEnergyValue() + .sync(this::getSunState, this::setSunState) + .addInventory().create(this, syncID); + } } \ No newline at end of file diff --git a/src/main/java/techreborn/blocks/generator/BlockSolarPanel.java b/src/main/java/techreborn/blocks/generator/BlockSolarPanel.java index a5e1ecb64..7bf166ce2 100644 --- a/src/main/java/techreborn/blocks/generator/BlockSolarPanel.java +++ b/src/main/java/techreborn/blocks/generator/BlockSolarPanel.java @@ -32,6 +32,10 @@ import net.minecraft.world.World; import reborncore.api.blockentity.IMachineGuiHandler; import reborncore.common.blocks.BlockMachineBase; import reborncore.common.powerSystem.PowerAcceptorBlockEntity; +import techreborn.blockentity.machine.iron.IronFurnaceBlockEntity; +import techreborn.blocks.GenericMachineBlock; +import techreborn.client.EGui; +import techreborn.client.gui.GuiSolar; import techreborn.init.TRContent.SolarPanels; import techreborn.blockentity.generator.SolarPanelBlockEntity; @@ -54,7 +58,10 @@ public class BlockSolarPanel extends BlockMachineBase { @Override public IMachineGuiHandler getGui() { - return null; + if(this.panelType == SolarPanels.CREATIVE){ + return null; + } + return EGui.SOLAR_PANEL; } @Override diff --git a/src/main/java/techreborn/client/EGui.java b/src/main/java/techreborn/client/EGui.java index f721d49cc..13c52b198 100644 --- a/src/main/java/techreborn/client/EGui.java +++ b/src/main/java/techreborn/client/EGui.java @@ -74,6 +74,7 @@ public enum EGui implements IMachineGuiHandler { ROLLING_MACHINE, SAWMILL, SCRAPBOXINATOR, + SOLAR_PANEL, SEMIFLUID_GENERATOR, THERMAL_GENERATOR, VACUUM_FREEZER, diff --git a/src/main/java/techreborn/client/GuiHandler.java b/src/main/java/techreborn/client/GuiHandler.java index dbb7d5efa..a48b4b02a 100644 --- a/src/main/java/techreborn/client/GuiHandler.java +++ b/src/main/java/techreborn/client/GuiHandler.java @@ -41,6 +41,7 @@ import techreborn.blockentity.data.DataDrivenBEProvider; import techreborn.blockentity.data.DataDrivenGui; import techreborn.blockentity.fusionReactor.FusionControlComputerBlockEntity; import techreborn.blockentity.generator.PlasmaGeneratorBlockEntity; +import techreborn.blockentity.generator.SolarPanelBlockEntity; import techreborn.blockentity.generator.advanced.DieselGeneratorBlockEntity; import techreborn.blockentity.generator.advanced.GasTurbineBlockEntity; import techreborn.blockentity.generator.advanced.SemiFluidGeneratorBlockEntity; @@ -149,6 +150,8 @@ public class GuiHandler { return new GuiIndustrialSawmill(syncID, player, (IndustrialSawmillBlockEntity) blockEntity); case SCRAPBOXINATOR: return new GuiScrapboxinator(syncID, player, (ScrapboxinatorBlockEntity) blockEntity); + case SOLAR_PANEL: + return new GuiSolar(syncID, player, (SolarPanelBlockEntity) blockEntity); case SEMIFLUID_GENERATOR: return new GuiSemifluidGenerator(syncID, player, (SemiFluidGeneratorBlockEntity) blockEntity); case THERMAL_GENERATOR: diff --git a/src/main/java/techreborn/client/gui/GuiSolar.java b/src/main/java/techreborn/client/gui/GuiSolar.java new file mode 100644 index 000000000..1f263c759 --- /dev/null +++ b/src/main/java/techreborn/client/gui/GuiSolar.java @@ -0,0 +1,70 @@ +/* + * 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.client.gui; + +import net.minecraft.entity.player.PlayerEntity; +import reborncore.client.containerBuilder.builder.BuiltContainer; +import reborncore.client.gui.builder.GuiBase; +import reborncore.common.util.StringUtils; +import techreborn.blockentity.generator.SolarPanelBlockEntity; + +public class GuiSolar extends GuiBase { + + SolarPanelBlockEntity blockEntity; + + public GuiSolar(int syncID, PlayerEntity player, SolarPanelBlockEntity panel) { + super(player, panel, panel.createContainer(syncID, player)); + this.blockEntity = panel; + } + + @Override + protected void drawBackground(float lastFrameDuration, int mouseX, int mouseY) { + super.drawBackground(lastFrameDuration, mouseX, mouseY); + final GuiBase.Layer layer = GuiBase.Layer.BACKGROUND; + } + + @Override + protected void drawForeground(int mouseX, int mouseY) { + super.drawForeground(mouseX, mouseY); + final GuiBase.Layer layer = GuiBase.Layer.FOREGROUND; + + builder.drawMultiEnergyBar(this, 156, 19, (int) blockEntity.getEnergy(), (int) blockEntity.getMaxPower(), mouseX, mouseY, 0, layer); + + switch (blockEntity.getSunState()) { + case SolarPanelBlockEntity.DAYGEN: + builder.drawString(this, StringUtils.t("techreborn.message.daygen"), 10, 20, 15129632); + break; + case SolarPanelBlockEntity.NIGHTGEN: + builder.drawString(this, StringUtils.t("techreborn.message.nightgen"), 10, 20, 7566195); + break; + case SolarPanelBlockEntity.ZEROGEN: + builder.drawString(this, StringUtils.t("techreborn.message.zerogen"), 10, 20, 12066591); + break; + } + + builder.drawString(this, "Generating: " + blockEntity.getGenerationRate() + " E/t", 10, 30, 0); + + } +} diff --git a/src/main/java/techreborn/config/TechRebornConfig.java b/src/main/java/techreborn/config/TechRebornConfig.java index 4df60870b..ff38c94bf 100644 --- a/src/main/java/techreborn/config/TechRebornConfig.java +++ b/src/main/java/techreborn/config/TechRebornConfig.java @@ -30,6 +30,9 @@ import reborncore.common.config.Config; public class TechRebornConfig { // Generators + @Config(config = "generators", category = "solarPanelGeneral", key = "internalCapacity", comment = "Multiplier for internal capacity of solar panels (multiplier * day generation rate)") + public static int solarInternalCapacityMultiplier = 2000; + @Config(config = "generators", category = "solarPanelBasic", key = "basicDayRate", comment = "Generation rate during day for Basic Solar Panel (Value in FE)") public static int basicGenerationRateD = 1; @@ -55,10 +58,10 @@ public class TechRebornConfig { public static int ultimateGenerationRateN = 16; @Config(config = "generators", category = "solarPanelQuantum", key = "quantumDayRate", comment = "Generation rate during day for Quantum Solar Panel (Value in FE)") - public static int quantumGenerationRateD = 1024; + public static int quantumGenerationRateD = 2048; @Config(config = "generators", category = "solarPanelQuantum", key = "quantumNightRate", comment = "Generation rate during night for Quantum Solar Panel (Value in FE)") - public static int quantumGenerationRateN = 64; + public static int quantumGenerationRateN = 128; @Config(config = "generators", category = "lightning_rod", key = "LightningRodMaxOutput", comment = "Lightning Rod Max Output (Value in EU)") public static int lightningRodMaxOutput = 2048; diff --git a/src/main/java/techreborn/init/TRContent.java b/src/main/java/techreborn/init/TRContent.java index 2a1fb693f..c69729c6a 100644 --- a/src/main/java/techreborn/init/TRContent.java +++ b/src/main/java/techreborn/init/TRContent.java @@ -241,8 +241,8 @@ public class TRContent { block = new BlockSolarPanel(this); this.generationRateD = generationRateD; this.generationRateN = generationRateN; - // Buffer for 2 mins of work - internalCapacity = generationRateD * 2_400; + + internalCapacity = generationRateD * TechRebornConfig.solarInternalCapacityMultiplier; InitUtils.setup(block, name + "_solar_panel"); } diff --git a/src/main/resources/assets/techreborn/lang/en_us.json b/src/main/resources/assets/techreborn/lang/en_us.json index 23560caed..6d1317aa5 100644 --- a/src/main/resources/assets/techreborn/lang/en_us.json +++ b/src/main/resources/assets/techreborn/lang/en_us.json @@ -601,6 +601,9 @@ "techreborn.message.nanosaberInactive": "Inactive", "techreborn.message.nanosaberEnergyErrorTo": "Not Enough Energy to", "techreborn.message.nanosaberEnergyError": "Not Enough Energy:", + "techreborn.message.daygen": "Panel in direct sunlight", + "techreborn.message.nightgen": "Panel in reduced sunlight", + "techreborn.message.zerogen": "Panel obstructed from sky", "keys.techreborn.category": "TechReborn Category", "keys.techreborn.config": "Config", @@ -636,7 +639,7 @@ "techreborn.tooltip.wip": "WIP Coming Soon", "techreborn.tooltip.inventory": "Inventory", "techreborn.tooltip.upgrades": "Upgrades", - "techreborn.tooltip.alarm": "Shift rightclick to change sound", + "techreborn.tooltip.alarm": "Shift right-click to change sound", "techreborn.tooltip.generationRate.day": "Generation Rate Day", "techreborn.tooltip.generationRate.night": "Generation Rate Night", @@ -649,7 +652,7 @@ "techreborn.manual.refundbtn": "Refund", "_comment24": "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 useful.", "advancements.techreborn.treetap": "TreeTap", "advancements.techreborn.treetap.desc": "Now that you have crafted a tree tap you will want to use it on a sap spot on a rubber tree.", "advancements.techreborn.sap": "Rubber Sap", @@ -663,7 +666,7 @@ "techreborn:chemical_reactor": "Chemical Reactor", "techreborn:compressor": "Compressor", "techreborn:distillation_tower": "Distillation Tower", - "techreborn:extractor": "Extrator", + "techreborn:extractor": "Extractor", "techreborn:grinder": "Grinder", "techreborn:implosion_compressor": "Implosion Compressor", "techreborn:industrial_electrolyzer": "Industrial Electrolyzer", diff --git a/src/main/resources/assets/techreborn/models/block/machines/generators/quantum_solar_panel.json b/src/main/resources/assets/techreborn/models/block/machines/generators/quantum_solar_panel.json index b15c90efa..81e340e07 100644 --- a/src/main/resources/assets/techreborn/models/block/machines/generators/quantum_solar_panel.json +++ b/src/main/resources/assets/techreborn/models/block/machines/generators/quantum_solar_panel.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/cube_bottom_top", "textures": { "top": "techreborn:block/machines/generators/quantum_solar_panel_top", - "bottom": "techreborn:block/machines/generators/generator_bottom", - "side": "techreborn:block/machines/generators/solar_panel_side_off" + "bottom": "techreborn:block/machines/tier3_machines/quantum_chest_bottom", + "side": "techreborn:block/machines/generators/quantum_solar_panel_side_off" } } diff --git a/src/main/resources/assets/techreborn/models/block/machines/generators/quantum_solar_panel_on.json b/src/main/resources/assets/techreborn/models/block/machines/generators/quantum_solar_panel_on.json index fbc0b0724..bcfafb475 100644 --- a/src/main/resources/assets/techreborn/models/block/machines/generators/quantum_solar_panel_on.json +++ b/src/main/resources/assets/techreborn/models/block/machines/generators/quantum_solar_panel_on.json @@ -2,7 +2,7 @@ "parent": "minecraft:block/cube_bottom_top", "textures": { "top": "techreborn:block/machines/generators/quantum_solar_panel_top", - "bottom": "techreborn:block/machines/generators/generator_bottom", - "side": "techreborn:block/machines/generators/solar_panel_side_on" + "bottom": "techreborn:block/machines/tier3_machines/quantum_chest_bottom", + "side": "techreborn:block/machines/generators/quantum_solar_panel_side_on" } } diff --git a/src/main/resources/assets/techreborn/textures/block/machines/generators/quantum_solar_panel_side_off.png b/src/main/resources/assets/techreborn/textures/block/machines/generators/quantum_solar_panel_side_off.png new file mode 100644 index 0000000000000000000000000000000000000000..a3edf9aa3db11962ec51266b74b9719b8f149ef4 GIT binary patch literal 321 zcmV-H0lxl;P)A@;C{xRW;;W_u#a(8c;FQ62$HC6B1J<cSw44!t>VV7JFn*hI`pSs&6)z9-yfW3~o+qAjY<7Es! zBWg@Di<;d5itQfBrdi5ssQ})wQcB%j!C3&OPRf8TfI2~xm;leBkroR?@I&Meb;1Yf TL3Yma00000NkvXXu0mjfk3)L& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/techreborn/textures/block/machines/generators/quantum_solar_panel_side_on.png b/src/main/resources/assets/techreborn/textures/block/machines/generators/quantum_solar_panel_side_on.png new file mode 100644 index 0000000000000000000000000000000000000000..3b3c7a1fc6ba6714f6f546772f71c989079efe4f GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}NPtg>tG&Ieqoccvi+4m+VoYqR zuV09*t&^~@sHdmDle0&BV#dB>r$WPG8f9wr4U7c^h5Z7;O-wB|Z{L}lUnV6bWnpQP zlAfolYfw~Ht=)TygPmPSS-)JfU^3ABm7Xq+Arg|T4UUsq6nGe{IbBL@e*G7Jm$@ZG zf+?C|4HLrwE!BjDNlQW+LrN1@HXc=vKO=DUQ1Jz(;Ow_y-`Oh{c`uDyzxeCqiYogyB Date: Fri, 20 Dec 2019 16:34:24 +0300 Subject: [PATCH 3/4] Omnitool WIP mark lost --- .../blocks/misc/BlockRubberLog.java | 4 +- .../java/techreborn/events/ModRegistry.java | 54 +++++++-------- .../{ItemChainsaw.java => ChainsawItem.java} | 7 +- ...{ItemDebugTool.java => DebugToolItem.java} | 4 +- .../tool/{ItemDrill.java => DrillItem.java} | 22 ++++-- ...temJackhammer.java => JackhammerItem.java} | 22 +++--- .../{ItemTreeTap.java => TreeTapItem.java} | 4 +- .../tool/{ItemWrench.java => WrenchItem.java} | 4 +- ...hainsaw.java => AdvancedChainsawItem.java} | 8 +-- ...ancedDrill.java => AdvancedDrillItem.java} | 10 +-- ...ammer.java => AdvancedJackhammerItem.java} | 6 +- ...temRockCutter.java => RockCutterItem.java} | 4 +- ...icChainsaw.java => BasicChainsawItem.java} | 6 +- ...temBasicDrill.java => BasicDrillItem.java} | 6 +- ...ckhammer.java => BasicJackhammerItem.java} | 6 +- ...cTreetap.java => ElectricTreetapItem.java} | 4 +- ...insaw.java => IndustrialChainsawItem.java} | 10 +-- ...ialDrill.java => IndustrialDrillItem.java} | 39 +++++------ ...mer.java => IndustrialJackhammerItem.java} | 6 +- ...{ItemNanosaber.java => NanosaberItem.java} | 4 +- .../{ItemOmniTool.java => OmniToolItem.java} | 69 ++++++++----------- .../crafting_table/tool/omni_tool.json | 22 ++++++ 22 files changed, 166 insertions(+), 155 deletions(-) rename src/main/java/techreborn/items/tool/{ItemChainsaw.java => ChainsawItem.java} (95%) rename src/main/java/techreborn/items/tool/{ItemDebugTool.java => DebugToolItem.java} (98%) rename src/main/java/techreborn/items/tool/{ItemDrill.java => DrillItem.java} (90%) rename src/main/java/techreborn/items/tool/{ItemJackhammer.java => JackhammerItem.java} (88%) rename src/main/java/techreborn/items/tool/{ItemTreeTap.java => TreeTapItem.java} (95%) rename src/main/java/techreborn/items/tool/{ItemWrench.java => WrenchItem.java} (95%) rename src/main/java/techreborn/items/tool/advanced/{ItemAdvancedChainsaw.java => AdvancedChainsawItem.java} (93%) rename src/main/java/techreborn/items/tool/advanced/{ItemAdvancedDrill.java => AdvancedDrillItem.java} (93%) rename src/main/java/techreborn/items/tool/advanced/{ItemAdvancedJackhammer.java => AdvancedJackhammerItem.java} (93%) rename src/main/java/techreborn/items/tool/advanced/{ItemRockCutter.java => RockCutterItem.java} (98%) rename src/main/java/techreborn/items/tool/basic/{ItemBasicChainsaw.java => BasicChainsawItem.java} (94%) rename src/main/java/techreborn/items/tool/basic/{ItemBasicDrill.java => BasicDrillItem.java} (94%) rename src/main/java/techreborn/items/tool/basic/{ItemBasicJackhammer.java => BasicJackhammerItem.java} (93%) rename src/main/java/techreborn/items/tool/basic/{ItemElectricTreetap.java => ElectricTreetapItem.java} (96%) rename src/main/java/techreborn/items/tool/industrial/{ItemIndustrialChainsaw.java => IndustrialChainsawItem.java} (96%) rename src/main/java/techreborn/items/tool/industrial/{ItemIndustrialDrill.java => IndustrialDrillItem.java} (94%) rename src/main/java/techreborn/items/tool/industrial/{ItemIndustrialJackhammer.java => IndustrialJackhammerItem.java} (93%) rename src/main/java/techreborn/items/tool/industrial/{ItemNanosaber.java => NanosaberItem.java} (98%) rename src/main/java/techreborn/items/tool/industrial/{ItemOmniTool.java => OmniToolItem.java} (81%) create mode 100644 src/main/resources/data/techreborn/recipes/crafting_table/tool/omni_tool.json diff --git a/src/main/java/techreborn/blocks/misc/BlockRubberLog.java b/src/main/java/techreborn/blocks/misc/BlockRubberLog.java index 4be2cea66..1a251733f 100644 --- a/src/main/java/techreborn/blocks/misc/BlockRubberLog.java +++ b/src/main/java/techreborn/blocks/misc/BlockRubberLog.java @@ -52,7 +52,7 @@ import team.reborn.energy.Energy; import techreborn.events.TRRecipeHandler; import techreborn.init.ModSounds; import techreborn.init.TRContent; -import techreborn.items.tool.ItemTreeTap; +import techreborn.items.tool.TreeTapItem; import java.util.Random; /** @@ -135,7 +135,7 @@ public class BlockRubberLog extends LogBlock { return ActionResult.SUCCESS; } - if ((Energy.valid(stack) && Energy.of(stack).getEnergy() > 20) || stack.getItem() instanceof ItemTreeTap) { + if ((Energy.valid(stack) && Energy.of(stack).getEnergy() > 20) || stack.getItem() instanceof TreeTapItem) { if (state.get(HAS_SAP) && state.get(SAP_SIDE) == hitResult.getSide()) { worldIn.setBlockState(pos, state.with(HAS_SAP, false).with(SAP_SIDE, Direction.fromHorizontal(0))); worldIn.playSound(playerIn, pos, ModSounds.SAP_EXTRACT, SoundCategory.BLOCKS, 0.6F, 1F); diff --git a/src/main/java/techreborn/events/ModRegistry.java b/src/main/java/techreborn/events/ModRegistry.java index f3346c729..c0f4eea8d 100644 --- a/src/main/java/techreborn/events/ModRegistry.java +++ b/src/main/java/techreborn/events/ModRegistry.java @@ -64,17 +64,17 @@ import techreborn.items.armor.ItemLithiumIonBatpack; import techreborn.items.armor.ItemQuantumSuit; import techreborn.items.armor.ItemTRArmour; import techreborn.items.battery.*; -import techreborn.items.tool.ItemDebugTool; -import techreborn.items.tool.ItemTreeTap; -import techreborn.items.tool.ItemWrench; -import techreborn.items.tool.advanced.ItemAdvancedChainsaw; -import techreborn.items.tool.advanced.ItemAdvancedDrill; -import techreborn.items.tool.advanced.ItemAdvancedJackhammer; -import techreborn.items.tool.advanced.ItemRockCutter; -import techreborn.items.tool.basic.ItemBasicChainsaw; -import techreborn.items.tool.basic.ItemBasicDrill; -import techreborn.items.tool.basic.ItemBasicJackhammer; -import techreborn.items.tool.basic.ItemElectricTreetap; +import techreborn.items.tool.DebugToolItem; +import techreborn.items.tool.TreeTapItem; +import techreborn.items.tool.WrenchItem; +import techreborn.items.tool.advanced.AdvancedChainsawItem; +import techreborn.items.tool.advanced.AdvancedDrillItem; +import techreborn.items.tool.advanced.AdvancedJackhammerItem; +import techreborn.items.tool.advanced.RockCutterItem; +import techreborn.items.tool.basic.BasicChainsawItem; +import techreborn.items.tool.basic.BasicDrillItem; +import techreborn.items.tool.basic.BasicJackhammerItem; +import techreborn.items.tool.basic.ElectricTreetapItem; import techreborn.items.tool.industrial.*; import techreborn.items.tool.vanilla.*; import techreborn.utils.InitUtils; @@ -202,24 +202,24 @@ public class ModRegistry { RebornRegistry.registerItem(TRContent.LAPOTRONIC_ORBPACK = InitUtils.setup(new ItemLapotronicOrbpack(), "lapotronic_orbpack")); // Tools - RebornRegistry.registerItem(TRContent.TREE_TAP = InitUtils.setup(new ItemTreeTap(), "treetap")); - RebornRegistry.registerItem(TRContent.WRENCH = InitUtils.setup(new ItemWrench(), "wrench")); + RebornRegistry.registerItem(TRContent.TREE_TAP = InitUtils.setup(new TreeTapItem(), "treetap")); + RebornRegistry.registerItem(TRContent.WRENCH = InitUtils.setup(new WrenchItem(), "wrench")); - RebornRegistry.registerItem(TRContent.BASIC_DRILL = InitUtils.setup(new ItemBasicDrill(), "basic_drill")); - RebornRegistry.registerItem(TRContent.BASIC_CHAINSAW = InitUtils.setup(new ItemBasicChainsaw(), "basic_chainsaw")); - RebornRegistry.registerItem(TRContent.BASIC_JACKHAMMER = InitUtils.setup(new ItemBasicJackhammer(), "basic_jackhammer")); - RebornRegistry.registerItem(TRContent.ELECTRIC_TREE_TAP = InitUtils.setup(new ItemElectricTreetap(), "electric_treetap")); + RebornRegistry.registerItem(TRContent.BASIC_DRILL = InitUtils.setup(new BasicDrillItem(), "basic_drill")); + RebornRegistry.registerItem(TRContent.BASIC_CHAINSAW = InitUtils.setup(new BasicChainsawItem(), "basic_chainsaw")); + RebornRegistry.registerItem(TRContent.BASIC_JACKHAMMER = InitUtils.setup(new BasicJackhammerItem(), "basic_jackhammer")); + RebornRegistry.registerItem(TRContent.ELECTRIC_TREE_TAP = InitUtils.setup(new ElectricTreetapItem(), "electric_treetap")); - RebornRegistry.registerItem(TRContent.ADVANCED_DRILL = InitUtils.setup(new ItemAdvancedDrill(), "advanced_drill")); - RebornRegistry.registerItem(TRContent.ADVANCED_CHAINSAW = InitUtils.setup(new ItemAdvancedChainsaw(), "advanced_chainsaw")); - RebornRegistry.registerItem(TRContent.ADVANCED_JACKHAMMER = InitUtils.setup(new ItemAdvancedJackhammer(), "advanced_jackhammer")); - RebornRegistry.registerItem(TRContent.ROCK_CUTTER = InitUtils.setup(new ItemRockCutter(), "rock_cutter")); + RebornRegistry.registerItem(TRContent.ADVANCED_DRILL = InitUtils.setup(new AdvancedDrillItem(), "advanced_drill")); + RebornRegistry.registerItem(TRContent.ADVANCED_CHAINSAW = InitUtils.setup(new AdvancedChainsawItem(), "advanced_chainsaw")); + RebornRegistry.registerItem(TRContent.ADVANCED_JACKHAMMER = InitUtils.setup(new AdvancedJackhammerItem(), "advanced_jackhammer")); + RebornRegistry.registerItem(TRContent.ROCK_CUTTER = InitUtils.setup(new RockCutterItem(), "rock_cutter")); - RebornRegistry.registerItem(TRContent.INDUSTRIAL_DRILL = InitUtils.setup(new ItemIndustrialDrill(), "industrial_drill")); - RebornRegistry.registerItem(TRContent.INDUSTRIAL_CHAINSAW = InitUtils.setup(new ItemIndustrialChainsaw(), "industrial_chainsaw")); - RebornRegistry.registerItem(TRContent.INDUSTRIAL_JACKHAMMER = InitUtils.setup(new ItemIndustrialJackhammer(), "industrial_jackhammer")); - RebornRegistry.registerItem(TRContent.NANOSABER = InitUtils.setup(new ItemNanosaber(), "nanosaber")); - RebornRegistry.registerItem(TRContent.OMNI_TOOL = InitUtils.setup(new ItemOmniTool(), "omni_tool")); + RebornRegistry.registerItem(TRContent.INDUSTRIAL_DRILL = InitUtils.setup(new IndustrialDrillItem(), "industrial_drill")); + RebornRegistry.registerItem(TRContent.INDUSTRIAL_CHAINSAW = InitUtils.setup(new IndustrialChainsawItem(), "industrial_chainsaw")); + RebornRegistry.registerItem(TRContent.INDUSTRIAL_JACKHAMMER = InitUtils.setup(new IndustrialJackhammerItem(), "industrial_jackhammer")); + RebornRegistry.registerItem(TRContent.NANOSABER = InitUtils.setup(new NanosaberItem(), "nanosaber")); + RebornRegistry.registerItem(TRContent.OMNI_TOOL = InitUtils.setup(new OmniToolItem(), "omni_tool")); // Armor RebornRegistry.registerItem(TRContent.CLOAKING_DEVICE = InitUtils.setup(new ItemCloakingDevice(), "cloaking_device")); @@ -228,7 +228,7 @@ public class ModRegistry { RebornRegistry.registerItem(TRContent.FREQUENCY_TRANSMITTER = InitUtils.setup(new ItemFrequencyTransmitter(), "frequency_transmitter")); RebornRegistry.registerItem(TRContent.SCRAP_BOX = InitUtils.setup(new ItemScrapBox(), "scrap_box")); RebornRegistry.registerItem(TRContent.MANUAL = InitUtils.setup(new ItemManual(), "manual")); - RebornRegistry.registerItem(TRContent.DEBUG_TOOL = InitUtils.setup(new ItemDebugTool(), "debug_tool")); + RebornRegistry.registerItem(TRContent.DEBUG_TOOL = InitUtils.setup(new DebugToolItem(), "debug_tool")); RebornRegistry.registerItem(TRContent.CELL = InitUtils.setup(new ItemDynamicCell(), "cell")); TechReborn.LOGGER.debug("TechReborns Items Loaded"); diff --git a/src/main/java/techreborn/items/tool/ItemChainsaw.java b/src/main/java/techreborn/items/tool/ChainsawItem.java similarity index 95% rename from src/main/java/techreborn/items/tool/ItemChainsaw.java rename to src/main/java/techreborn/items/tool/ChainsawItem.java index 0441f1608..ba18e86da 100644 --- a/src/main/java/techreborn/items/tool/ItemChainsaw.java +++ b/src/main/java/techreborn/items/tool/ChainsawItem.java @@ -47,16 +47,15 @@ import techreborn.TechReborn; import javax.annotation.Nullable; import java.util.Random; -public class ItemChainsaw extends AxeItem implements EnergyHolder, ItemDurabilityExtensions { +public class ChainsawItem extends AxeItem implements EnergyHolder, ItemDurabilityExtensions { - public int maxCharge = 1; + public int maxCharge; public int cost = 250; public float poweredSpeed = 20F; - public float unpoweredSpeed = 2.0F; public int transferLimit = 100; public boolean isBreaking = false; - public ItemChainsaw(ToolMaterials material, int energyCapacity, float unpoweredSpeed) { + public ChainsawItem(ToolMaterials material, int energyCapacity, float unpoweredSpeed) { super(material, (int) material.getAttackDamage(), unpoweredSpeed, new Item.Settings().group(TechReborn.ITEMGROUP).maxCount(1)); this.maxCharge = energyCapacity; diff --git a/src/main/java/techreborn/items/tool/ItemDebugTool.java b/src/main/java/techreborn/items/tool/DebugToolItem.java similarity index 98% rename from src/main/java/techreborn/items/tool/ItemDebugTool.java rename to src/main/java/techreborn/items/tool/DebugToolItem.java index 34ea79026..35e97f756 100644 --- a/src/main/java/techreborn/items/tool/ItemDebugTool.java +++ b/src/main/java/techreborn/items/tool/DebugToolItem.java @@ -45,9 +45,9 @@ import java.util.Map.Entry; /** * Created by Mark on 20/03/2016. */ -public class ItemDebugTool extends Item { +public class DebugToolItem extends Item { - public ItemDebugTool() { + public DebugToolItem() { super(new Item.Settings().group(TechReborn.ITEMGROUP)); } diff --git a/src/main/java/techreborn/items/tool/ItemDrill.java b/src/main/java/techreborn/items/tool/DrillItem.java similarity index 90% rename from src/main/java/techreborn/items/tool/ItemDrill.java rename to src/main/java/techreborn/items/tool/DrillItem.java index 66ed08fe1..0c0d79bf7 100644 --- a/src/main/java/techreborn/items/tool/ItemDrill.java +++ b/src/main/java/techreborn/items/tool/DrillItem.java @@ -42,20 +42,22 @@ import techreborn.TechReborn; import java.util.Random; -public class ItemDrill extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions { +public class DrillItem extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions { - public int maxCharge = 1; + public int maxCharge; public int cost = 250; - public float unpoweredSpeed = 2.0F; + public float unpoweredSpeed; + public float poweredSpeed; public int transferLimit = 100; - public ItemDrill(ToolMaterial material, int energyCapacity, float unpoweredSpeed, float efficiencyOnProperMaterial) { + public DrillItem(ToolMaterial material, int energyCapacity, float unpoweredSpeed, float efficiencyOnProperMaterial) { super(material, (int) material.getAttackDamage(), unpoweredSpeed, new Item.Settings().group(TechReborn.ITEMGROUP).maxCount(1)); this.maxCharge = energyCapacity; this.unpoweredSpeed = unpoweredSpeed; + this.poweredSpeed = efficiencyOnProperMaterial; } - // ItemPickaxe + // PickaxeItem @Override public float getMiningSpeed(ItemStack stack, BlockState state) { if (Energy.of(stack).getEnergy() < cost) { @@ -63,7 +65,7 @@ public class ItemDrill extends PickaxeItem implements EnergyHolder, ItemDurabili } if (Items.WOODEN_PICKAXE.getMiningSpeed(stack, state) > 1.0F || Items.WOODEN_SHOVEL.getMiningSpeed(stack, state) > 1.0F) { - return miningSpeed; + return poweredSpeed; } else { return super.getMiningSpeed(stack, state); } @@ -90,6 +92,12 @@ public class ItemDrill extends PickaxeItem implements EnergyHolder, ItemDurabili return false; } + @Override + public boolean isDamageable() { + return false; + } + + // ItemDurabilityExtensions @Override public double getDurability(ItemStack stack) { return 1 - ItemUtils.getPowerForDurabilityBar(stack); @@ -105,7 +113,7 @@ public class ItemDrill extends PickaxeItem implements EnergyHolder, ItemDurabili return PowerSystem.getDisplayPower().colour; } - // IEnergyItemInfo + // EnergyHolder @Override public double getMaxStoredPower() { return maxCharge; diff --git a/src/main/java/techreborn/items/tool/ItemJackhammer.java b/src/main/java/techreborn/items/tool/JackhammerItem.java similarity index 88% rename from src/main/java/techreborn/items/tool/ItemJackhammer.java rename to src/main/java/techreborn/items/tool/JackhammerItem.java index c94f45ef0..1ca73ea3b 100644 --- a/src/main/java/techreborn/items/tool/ItemJackhammer.java +++ b/src/main/java/techreborn/items/tool/JackhammerItem.java @@ -46,18 +46,18 @@ import techreborn.TechReborn; import java.util.Random; -public class ItemJackhammer extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions { +public class JackhammerItem extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions { - public int maxCharge = 1; + public int maxCharge; public int cost = 250; - public int transferLimit = 100; + public int transferLimit = EnergyTier.MEDIUM.getMaxInput(); - public ItemJackhammer(ToolMaterials material, int energyCapacity) { + public JackhammerItem(ToolMaterials material, int energyCapacity) { super(material, (int) material.getAttackDamage(), 1f, new Item.Settings().group(TechReborn.ITEMGROUP).maxCount(1)); this.maxCharge = energyCapacity; } - // ItemPickaxe + // PickaxeItem @Override public float getMiningSpeed(ItemStack stack, BlockState state) { if (state.getMaterial() == Material.STONE && Energy.of(stack).getEnergy() >= cost) { @@ -67,7 +67,7 @@ public class ItemJackhammer extends PickaxeItem implements EnergyHolder, ItemDur } } - // ItemTool + // MiningToolItem @Override public boolean postMine(ItemStack stack, World worldIn, BlockState blockIn, BlockPos pos, LivingEntity entityLiving) { Random rand = new Random(); @@ -78,17 +78,17 @@ public class ItemJackhammer extends PickaxeItem implements EnergyHolder, ItemDur } @Override - public boolean postHit(ItemStack itemstack, LivingEntity entityliving, LivingEntity entityliving1) { + public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { return true; } - // Item - + // ToolItem @Override - public boolean canRepair(ItemStack itemStack_1, ItemStack itemStack_2) { + public boolean canRepair(ItemStack stack, ItemStack ingredient) { return false; } + // ItemDurabilityExtensions @Override public double getDurability(ItemStack stack) { return 1 - ItemUtils.getPowerForDurabilityBar(stack); @@ -104,7 +104,7 @@ public class ItemJackhammer extends PickaxeItem implements EnergyHolder, ItemDur return PowerSystem.getDisplayPower().colour; } - // IEnergyItemInfo + // EnergyHolder @Override public double getMaxStoredPower() { return maxCharge; diff --git a/src/main/java/techreborn/items/tool/ItemTreeTap.java b/src/main/java/techreborn/items/tool/TreeTapItem.java similarity index 95% rename from src/main/java/techreborn/items/tool/ItemTreeTap.java rename to src/main/java/techreborn/items/tool/TreeTapItem.java index d3a81d906..f49533282 100644 --- a/src/main/java/techreborn/items/tool/ItemTreeTap.java +++ b/src/main/java/techreborn/items/tool/TreeTapItem.java @@ -27,9 +27,9 @@ package techreborn.items.tool; import net.minecraft.item.Item; import techreborn.TechReborn; -public class ItemTreeTap extends Item { +public class TreeTapItem extends Item { - public ItemTreeTap() { + public TreeTapItem() { super(new Item.Settings().group(TechReborn.ITEMGROUP).maxCount(1).maxDamageIfAbsent(20)); } } diff --git a/src/main/java/techreborn/items/tool/ItemWrench.java b/src/main/java/techreborn/items/tool/WrenchItem.java similarity index 95% rename from src/main/java/techreborn/items/tool/ItemWrench.java rename to src/main/java/techreborn/items/tool/WrenchItem.java index 850061ad2..4dbaff573 100644 --- a/src/main/java/techreborn/items/tool/ItemWrench.java +++ b/src/main/java/techreborn/items/tool/WrenchItem.java @@ -37,9 +37,9 @@ import techreborn.TechReborn; /** * Created by modmuss50 on 26/02/2016. */ -public class ItemWrench extends Item implements IToolHandler { +public class WrenchItem extends Item implements IToolHandler { - public ItemWrench() { + public WrenchItem() { super(new Item.Settings().group(TechReborn.ITEMGROUP).maxCount(1)); } diff --git a/src/main/java/techreborn/items/tool/advanced/ItemAdvancedChainsaw.java b/src/main/java/techreborn/items/tool/advanced/AdvancedChainsawItem.java similarity index 93% rename from src/main/java/techreborn/items/tool/advanced/ItemAdvancedChainsaw.java rename to src/main/java/techreborn/items/tool/advanced/AdvancedChainsawItem.java index 25737255d..37fa9248e 100644 --- a/src/main/java/techreborn/items/tool/advanced/ItemAdvancedChainsaw.java +++ b/src/main/java/techreborn/items/tool/advanced/AdvancedChainsawItem.java @@ -34,15 +34,15 @@ import net.minecraft.item.ToolMaterials; import net.minecraft.util.DefaultedList; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; -import techreborn.items.tool.ItemChainsaw; +import techreborn.items.tool.ChainsawItem; import techreborn.utils.InitUtils; -public class ItemAdvancedChainsaw extends ItemChainsaw { +public class AdvancedChainsawItem extends ChainsawItem { // 400k max charge with 1k charge rate - public ItemAdvancedChainsaw() { + public AdvancedChainsawItem() { super(ToolMaterials.DIAMOND, TechRebornConfig.advancedChainsawCharge, 1.0F); - this.cost = 250; + this.cost = 100; this.transferLimit = 1000; } diff --git a/src/main/java/techreborn/items/tool/advanced/ItemAdvancedDrill.java b/src/main/java/techreborn/items/tool/advanced/AdvancedDrillItem.java similarity index 93% rename from src/main/java/techreborn/items/tool/advanced/ItemAdvancedDrill.java rename to src/main/java/techreborn/items/tool/advanced/AdvancedDrillItem.java index 5b30eac55..f0423e199 100644 --- a/src/main/java/techreborn/items/tool/advanced/ItemAdvancedDrill.java +++ b/src/main/java/techreborn/items/tool/advanced/AdvancedDrillItem.java @@ -34,15 +34,15 @@ import net.minecraft.item.ToolMaterials; import net.minecraft.util.DefaultedList; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; -import techreborn.items.tool.ItemDrill; +import techreborn.items.tool.DrillItem; import techreborn.utils.InitUtils; -public class ItemAdvancedDrill extends ItemDrill { +public class AdvancedDrillItem extends DrillItem { // 400k max charge with 1k charge rate - public ItemAdvancedDrill() { - super(ToolMaterials.DIAMOND, TechRebornConfig.advancedDrillCharge, 0.5F, 15F); - this.cost = 250; + public AdvancedDrillItem() { + super(ToolMaterials.DIAMOND, TechRebornConfig.advancedDrillCharge, 0.5F, 12F); + this.cost = 100; this.transferLimit = 1000; } diff --git a/src/main/java/techreborn/items/tool/advanced/ItemAdvancedJackhammer.java b/src/main/java/techreborn/items/tool/advanced/AdvancedJackhammerItem.java similarity index 93% rename from src/main/java/techreborn/items/tool/advanced/ItemAdvancedJackhammer.java rename to src/main/java/techreborn/items/tool/advanced/AdvancedJackhammerItem.java index 482644bbe..bab10c63c 100644 --- a/src/main/java/techreborn/items/tool/advanced/ItemAdvancedJackhammer.java +++ b/src/main/java/techreborn/items/tool/advanced/AdvancedJackhammerItem.java @@ -32,13 +32,13 @@ import net.minecraft.item.ToolMaterials; import net.minecraft.util.DefaultedList; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; -import techreborn.items.tool.ItemJackhammer; +import techreborn.items.tool.JackhammerItem; import techreborn.utils.InitUtils; -public class ItemAdvancedJackhammer extends ItemJackhammer { +public class AdvancedJackhammerItem extends JackhammerItem { // 400k max charge with 1k charge rate - public ItemAdvancedJackhammer() { + public AdvancedJackhammerItem() { super(ToolMaterials.DIAMOND, TechRebornConfig.advancedJackhammerCharge); this.cost = 100; this.transferLimit = 1000; diff --git a/src/main/java/techreborn/items/tool/advanced/ItemRockCutter.java b/src/main/java/techreborn/items/tool/advanced/RockCutterItem.java similarity index 98% rename from src/main/java/techreborn/items/tool/advanced/ItemRockCutter.java rename to src/main/java/techreborn/items/tool/advanced/RockCutterItem.java index e499efee5..ff2b1c1de 100644 --- a/src/main/java/techreborn/items/tool/advanced/ItemRockCutter.java +++ b/src/main/java/techreborn/items/tool/advanced/RockCutterItem.java @@ -48,14 +48,14 @@ import techreborn.init.TRContent; import java.util.Random; -public class ItemRockCutter extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions { +public class RockCutterItem extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions { public static final int maxCharge = TechRebornConfig.rockCutterCharge; public int transferLimit = 1_000; public int cost = 500; // 400k FE with 1k FE\t charge rate - public ItemRockCutter() { + public RockCutterItem() { super(ToolMaterials.DIAMOND, 1, 1, new Item.Settings().group(TechReborn.ITEMGROUP).maxCount(1)); } diff --git a/src/main/java/techreborn/items/tool/basic/ItemBasicChainsaw.java b/src/main/java/techreborn/items/tool/basic/BasicChainsawItem.java similarity index 94% rename from src/main/java/techreborn/items/tool/basic/ItemBasicChainsaw.java rename to src/main/java/techreborn/items/tool/basic/BasicChainsawItem.java index 6e94ba85a..17cabf6ef 100644 --- a/src/main/java/techreborn/items/tool/basic/ItemBasicChainsaw.java +++ b/src/main/java/techreborn/items/tool/basic/BasicChainsawItem.java @@ -34,12 +34,12 @@ import net.minecraft.item.ToolMaterials; import net.minecraft.util.DefaultedList; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; -import techreborn.items.tool.ItemChainsaw; +import techreborn.items.tool.ChainsawItem; import techreborn.utils.InitUtils; -public class ItemBasicChainsaw extends ItemChainsaw { +public class BasicChainsawItem extends ChainsawItem { - public ItemBasicChainsaw() { + public BasicChainsawItem() { super(ToolMaterials.IRON, TechRebornConfig.basicChainsawCharge, 0.5F); this.cost = 50; } diff --git a/src/main/java/techreborn/items/tool/basic/ItemBasicDrill.java b/src/main/java/techreborn/items/tool/basic/BasicDrillItem.java similarity index 94% rename from src/main/java/techreborn/items/tool/basic/ItemBasicDrill.java rename to src/main/java/techreborn/items/tool/basic/BasicDrillItem.java index e491518f2..92157dd18 100644 --- a/src/main/java/techreborn/items/tool/basic/ItemBasicDrill.java +++ b/src/main/java/techreborn/items/tool/basic/BasicDrillItem.java @@ -34,12 +34,12 @@ import net.minecraft.item.ToolMaterials; import net.minecraft.util.DefaultedList; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; -import techreborn.items.tool.ItemDrill; +import techreborn.items.tool.DrillItem; import techreborn.utils.InitUtils; -public class ItemBasicDrill extends ItemDrill { +public class BasicDrillItem extends DrillItem { - public ItemBasicDrill() { + public BasicDrillItem() { super(ToolMaterials.IRON, TechRebornConfig.basicDrillCharge, 0.5F, 10F); this.cost = 50; } diff --git a/src/main/java/techreborn/items/tool/basic/ItemBasicJackhammer.java b/src/main/java/techreborn/items/tool/basic/BasicJackhammerItem.java similarity index 93% rename from src/main/java/techreborn/items/tool/basic/ItemBasicJackhammer.java rename to src/main/java/techreborn/items/tool/basic/BasicJackhammerItem.java index 52e3e3f03..64231fe66 100644 --- a/src/main/java/techreborn/items/tool/basic/ItemBasicJackhammer.java +++ b/src/main/java/techreborn/items/tool/basic/BasicJackhammerItem.java @@ -32,12 +32,12 @@ import net.minecraft.item.ToolMaterials; import net.minecraft.util.DefaultedList; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; -import techreborn.items.tool.ItemJackhammer; +import techreborn.items.tool.JackhammerItem; import techreborn.utils.InitUtils; -public class ItemBasicJackhammer extends ItemJackhammer { +public class BasicJackhammerItem extends JackhammerItem { - public ItemBasicJackhammer() { + public BasicJackhammerItem() { super(ToolMaterials.DIAMOND, TechRebornConfig.basicJackhammerCharge); this.cost = 50; } diff --git a/src/main/java/techreborn/items/tool/basic/ItemElectricTreetap.java b/src/main/java/techreborn/items/tool/basic/ElectricTreetapItem.java similarity index 96% rename from src/main/java/techreborn/items/tool/basic/ItemElectricTreetap.java rename to src/main/java/techreborn/items/tool/basic/ElectricTreetapItem.java index 7a6b82fd0..24e4a888a 100644 --- a/src/main/java/techreborn/items/tool/basic/ItemElectricTreetap.java +++ b/src/main/java/techreborn/items/tool/basic/ElectricTreetapItem.java @@ -42,12 +42,12 @@ import techreborn.utils.InitUtils; /** * Created by modmuss50 on 05/11/2016. */ -public class ItemElectricTreetap extends Item implements EnergyHolder, ItemDurabilityExtensions { +public class ElectricTreetapItem extends Item implements EnergyHolder, ItemDurabilityExtensions { public static final int maxCharge = 10_000; public int cost = 20; - public ItemElectricTreetap() { + public ElectricTreetapItem() { super(new Item.Settings().group(TechReborn.ITEMGROUP).maxCount(1)); } diff --git a/src/main/java/techreborn/items/tool/industrial/ItemIndustrialChainsaw.java b/src/main/java/techreborn/items/tool/industrial/IndustrialChainsawItem.java similarity index 96% rename from src/main/java/techreborn/items/tool/industrial/ItemIndustrialChainsaw.java rename to src/main/java/techreborn/items/tool/industrial/IndustrialChainsawItem.java index b201d9c8c..6b351a91e 100644 --- a/src/main/java/techreborn/items/tool/industrial/ItemIndustrialChainsaw.java +++ b/src/main/java/techreborn/items/tool/industrial/IndustrialChainsawItem.java @@ -49,7 +49,7 @@ import reborncore.common.util.ItemUtils; import team.reborn.energy.Energy; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; -import techreborn.items.tool.ItemChainsaw; +import techreborn.items.tool.ChainsawItem; import techreborn.utils.InitUtils; import techreborn.utils.MessageIDs; import techreborn.utils.TagUtils; @@ -58,13 +58,13 @@ import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; -public class ItemIndustrialChainsaw extends ItemChainsaw { +public class IndustrialChainsawItem extends ChainsawItem { private static final Direction[] SEARCH_ORDER = new Direction[]{Direction.NORTH, Direction.SOUTH, Direction.EAST, Direction.WEST, Direction.UP}; // 4M FE max charge with 1k charge rate - public ItemIndustrialChainsaw() { + public IndustrialChainsawItem() { super(ToolMaterials.DIAMOND, TechRebornConfig.industrialChainsawCharge, 1.0F); this.cost = 250; this.transferLimit = 1000; @@ -136,7 +136,7 @@ public class ItemIndustrialChainsaw extends ItemChainsaw { + Formatting.GOLD + StringUtils.t("techreborn.message.nanosaberActive"))); } } else { - stack.getTag().putBoolean("isActive", false); + stack.getOrCreateTag().putBoolean("isActive", false); if (world.isClient) { ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new LiteralText( Formatting.GRAY + StringUtils.t("techreborn.message.setTo") + " " @@ -157,7 +157,7 @@ public class ItemIndustrialChainsaw extends ItemChainsaw { Formatting.GRAY + StringUtils.t("techreborn.message.nanosaberEnergyError") + " " + Formatting.GOLD + StringUtils.t("techreborn.message.nanosaberDeactivating"))); } - stack.getTag().putBoolean("isActive", false); + stack.getOrCreateTag().putBoolean("isActive", false); } } diff --git a/src/main/java/techreborn/items/tool/industrial/ItemIndustrialDrill.java b/src/main/java/techreborn/items/tool/industrial/IndustrialDrillItem.java similarity index 94% rename from src/main/java/techreborn/items/tool/industrial/ItemIndustrialDrill.java rename to src/main/java/techreborn/items/tool/industrial/IndustrialDrillItem.java index 6a0a8b37a..9c9275fdc 100644 --- a/src/main/java/techreborn/items/tool/industrial/ItemIndustrialDrill.java +++ b/src/main/java/techreborn/items/tool/industrial/IndustrialDrillItem.java @@ -52,7 +52,7 @@ import reborncore.common.util.ItemUtils; import team.reborn.energy.Energy; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; -import techreborn.items.tool.ItemDrill; +import techreborn.items.tool.DrillItem; import techreborn.utils.InitUtils; import techreborn.utils.MessageIDs; @@ -62,17 +62,17 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -public class ItemIndustrialDrill extends ItemDrill { +public class IndustrialDrillItem extends DrillItem { // 4M FE max charge with 1k charge rate - public ItemIndustrialDrill() { - super(ToolMaterials.DIAMOND, TechRebornConfig.industrialDrillCharge, 2.0F, 10F); + public IndustrialDrillItem() { + super(ToolMaterials.DIAMOND, TechRebornConfig.industrialDrillCharge, 2.0F, 15F); this.cost = 250; this.transferLimit = 1000; } private Set getTargetBlocks(World worldIn, BlockPos pos, @Nullable PlayerEntity playerIn) { - Set targetBlocks = new HashSet(); + Set targetBlocks = new HashSet<>(); if (playerIn == null) { return new HashSet<>(); } @@ -124,7 +124,6 @@ public class ItemIndustrialDrill extends ItemDrill { blockState.getBlock().onBlockRemoved(blockState, world, pos, blockState, true); blockState.getBlock().afterBreak(world, playerIn, pos, blockState, world.getBlockEntity(pos), drill); world.setBlockState(pos, Blocks.AIR.getDefaultState()); - world.removeBlockEntity(pos); } } @@ -144,14 +143,10 @@ public class ItemIndustrialDrill extends ItemDrill { return false; } float originalHardness = worldIn.getBlockState(originalPos).getHardness(worldIn, originalPos); - if ((originalHardness / blockHardness) > 10.0F) { - return false; - } - - return true; + return !((originalHardness / blockHardness) > 10.0F); } - // ItemDrill + // DrillItem @Override public boolean postMine(ItemStack stack, World worldIn, BlockState blockIn, BlockPos pos, LivingEntity entityLiving) { PlayerEntity playerIn = null; @@ -166,6 +161,13 @@ public class ItemIndustrialDrill extends ItemDrill { return super.postMine(stack, worldIn, blockIn, pos, entityLiving); } + // PickaxeItem + @Override + public boolean isEffectiveOn(BlockState blockIn) { + return (Items.DIAMOND_PICKAXE.isEffectiveOn(blockIn) || Items.DIAMOND_SHOVEL.isEffectiveOn(blockIn)) && !Items.DIAMOND_AXE.isEffectiveOn(blockIn); + } + + // Item @Override public TypedActionResult use(final World world, final PlayerEntity player, final Hand hand) { final ItemStack stack = player.getStackInHand(hand); @@ -179,14 +181,14 @@ public class ItemIndustrialDrill extends ItemDrill { if (stack.getTag() == null) { stack.setTag(new CompoundTag()); } - stack.getTag().putBoolean("isActive", true); + stack.getOrCreateTag().putBoolean("isActive", true); if (world.isClient) { ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new LiteralText( Formatting.GRAY + StringUtils.t("techreborn.message.setTo") + " " + Formatting.GOLD + StringUtils.t("techreborn.message.nanosaberActive"))); } } else { - stack.getTag().putBoolean("isActive", false); + stack.getOrCreateTag().putBoolean("isActive", false); if (world.isClient) { ChatUtils.sendNoSpamMessages(MessageIDs.nanosaberID, new LiteralText( Formatting.GRAY + StringUtils.t("techreborn.message.setTo") + " " @@ -207,7 +209,7 @@ public class ItemIndustrialDrill extends ItemDrill { Formatting.GRAY + StringUtils.t("techreborn.message.nanosaberEnergyError") + " " + Formatting.GOLD + StringUtils.t("techreborn.message.nanosaberDeactivating"))); } - stack.getTag().putBoolean("isActive", false); + stack.getOrCreateTag().putBoolean("isActive", false); } } @@ -221,13 +223,6 @@ public class ItemIndustrialDrill extends ItemDrill { } } - // ItemPickaxe - @Override - public boolean isEffectiveOn(BlockState blockIn) { - return (Items.DIAMOND_PICKAXE.isEffectiveOn(blockIn) || Items.DIAMOND_SHOVEL.isEffectiveOn(blockIn)) && !Items.DIAMOND_AXE.isEffectiveOn(blockIn); - } - - // Item @Environment(EnvType.CLIENT) @Override public void appendStacks(ItemGroup par2ItemGroup, DefaultedList itemList) { diff --git a/src/main/java/techreborn/items/tool/industrial/ItemIndustrialJackhammer.java b/src/main/java/techreborn/items/tool/industrial/IndustrialJackhammerItem.java similarity index 93% rename from src/main/java/techreborn/items/tool/industrial/ItemIndustrialJackhammer.java rename to src/main/java/techreborn/items/tool/industrial/IndustrialJackhammerItem.java index 2ce688478..38ea40156 100644 --- a/src/main/java/techreborn/items/tool/industrial/ItemIndustrialJackhammer.java +++ b/src/main/java/techreborn/items/tool/industrial/IndustrialJackhammerItem.java @@ -32,13 +32,13 @@ import net.minecraft.item.ToolMaterials; import net.minecraft.util.DefaultedList; import techreborn.config.TechRebornConfig; import techreborn.init.TRContent; -import techreborn.items.tool.ItemJackhammer; +import techreborn.items.tool.JackhammerItem; import techreborn.utils.InitUtils; -public class ItemIndustrialJackhammer extends ItemJackhammer { +public class IndustrialJackhammerItem extends JackhammerItem { // 4M FE max charge with 1k charge rate - public ItemIndustrialJackhammer() { + public IndustrialJackhammerItem() { super(ToolMaterials.IRON, TechRebornConfig.industrialJackhammerCharge); this.cost = 250; this.transferLimit = 1000; diff --git a/src/main/java/techreborn/items/tool/industrial/ItemNanosaber.java b/src/main/java/techreborn/items/tool/industrial/NanosaberItem.java similarity index 98% rename from src/main/java/techreborn/items/tool/industrial/ItemNanosaber.java rename to src/main/java/techreborn/items/tool/industrial/NanosaberItem.java index 01eb1c214..a22f32215 100644 --- a/src/main/java/techreborn/items/tool/industrial/ItemNanosaber.java +++ b/src/main/java/techreborn/items/tool/industrial/NanosaberItem.java @@ -59,13 +59,13 @@ import techreborn.utils.MessageIDs; import javax.annotation.Nullable; import java.util.List; -public class ItemNanosaber extends SwordItem implements EnergyHolder, ItemDurabilityExtensions, ItemStackModifiers { +public class NanosaberItem extends SwordItem implements EnergyHolder, ItemDurabilityExtensions, ItemStackModifiers { public static final int maxCharge = TechRebornConfig.nanoSaberCharge; public int transferLimit = 1_000; public int cost = 250; // 4M FE max charge with 1k charge rate - public ItemNanosaber() { + public NanosaberItem() { super(ToolMaterials.DIAMOND, 1, 1, new Item.Settings().group(TechReborn.ITEMGROUP).maxCount(1)); this.addPropertyGetter(new Identifier("techreborn:active"), new ItemPropertyGetter() { @Override diff --git a/src/main/java/techreborn/items/tool/industrial/ItemOmniTool.java b/src/main/java/techreborn/items/tool/industrial/OmniToolItem.java similarity index 81% rename from src/main/java/techreborn/items/tool/industrial/ItemOmniTool.java rename to src/main/java/techreborn/items/tool/industrial/OmniToolItem.java index 683b553b1..a26660432 100644 --- a/src/main/java/techreborn/items/tool/industrial/ItemOmniTool.java +++ b/src/main/java/techreborn/items/tool/industrial/OmniToolItem.java @@ -55,7 +55,7 @@ import techreborn.utils.InitUtils; import javax.annotation.Nullable; import java.util.List; -public class ItemOmniTool extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions { +public class OmniToolItem extends PickaxeItem implements EnergyHolder, ItemDurabilityExtensions { public static final int maxCharge = TechRebornConfig.omniToolCharge; public int transferLimit = 1_000; @@ -63,11 +63,11 @@ public class ItemOmniTool extends PickaxeItem implements EnergyHolder, ItemDurab public int hitCost = 125; // 4M FE max charge with 1k charge rate - public ItemOmniTool() { + public OmniToolItem() { super(ToolMaterials.DIAMOND, 1, 1, new Item.Settings().group(TechReborn.ITEMGROUP).maxCount(1)); } - // ItemPickaxe + // PickaxeItem @Override public boolean isEffectiveOn(BlockState state) { return Items.DIAMOND_AXE.isEffectiveOn(state) || Items.DIAMOND_SWORD.isEffectiveOn(state) @@ -75,34 +75,21 @@ public class ItemOmniTool extends PickaxeItem implements EnergyHolder, ItemDurab || Items.SHEARS.isEffectiveOn(state); } - // ItemTool + @Override + public float getMiningSpeed(ItemStack stack, BlockState state) { + if (Energy.of(stack).getEnergy() >= cost) { + return ToolMaterials.DIAMOND.getMiningSpeed(); + } + return super.getMiningSpeed(stack, state); + } + + // MiningToolItem @Override public boolean postMine(ItemStack stack, World worldIn, BlockState blockIn, BlockPos pos, LivingEntity entityLiving) { Energy.of(stack).use(cost); return true; } - - - // @Override - // public float getDigSpeed(ItemStack stack, IBlockState state) { - // IEnergyStorage capEnergy = stack.getCapability(CapabilityEnergy.ENERGY, null); - // if (capEnergy.getEnergyStored() >= cost) { - // capEnergy.extractEnergy(cost, false); - // return 5.0F; - // } - // - // if (Items.wooden_axe.getDigSpeed(stack, state) > 1.0F - // || Items.wooden_sword.getDigSpeed(stack, state) > 1.0F - // || Items.wooden_pickaxe.getDigSpeed(stack, state) > 1.0F - // || Items.wooden_shovel.getDigSpeed(stack, state) > 1.0F - // || Items.shears.getDigSpeed(stack, state) > 1.0F) { - // return efficiencyOnProperMaterial; - // } else { - // return super.getDigSpeed(stack, state); - // } - // } - @Override public boolean postHit(ItemStack stack, LivingEntity entityliving, LivingEntity attacker) { if(Energy.of(stack).use(hitCost)) { @@ -111,24 +98,34 @@ public class ItemOmniTool extends PickaxeItem implements EnergyHolder, ItemDurab return false; } + // ToolItem + @Override + public boolean canRepair(ItemStack itemStack_1, ItemStack itemStack_2) { + return false; + } + // Item @Override public ActionResult useOnBlock(ItemUsageContext context) { return TorchHelper.placeTorch(context); } + @Environment(EnvType.CLIENT) @Override - public boolean canRepair(ItemStack itemStack_1, ItemStack itemStack_2) { - return false; + public void appendStacks(ItemGroup par2ItemGroup, DefaultedList itemList) { + if (!isIn(par2ItemGroup)) { + return; + } + InitUtils.initPoweredItems(TRContent.OMNI_TOOL, itemList); } + @Environment(EnvType.CLIENT) @Override public void appendTooltip(ItemStack stack, @Nullable World worldIn, List tooltip, TooltipContext flagIn) { - tooltip.add(new LiteralText("WIP Coming Soon").formatted(Formatting.RED)); - // TODO - // Remember to remove WIP override and imports once complete + tooltip.add(new LiteralText(Formatting.YELLOW + "Swiss Army Knife")); } + // ItemDurabilityExtensions @Override public double getDurability(ItemStack stack) { return 1 - ItemUtils.getPowerForDurabilityBar(stack); @@ -144,17 +141,7 @@ public class ItemOmniTool extends PickaxeItem implements EnergyHolder, ItemDurab return PowerSystem.getDisplayPower().colour; } - @Environment(EnvType.CLIENT) - @Override - public void appendStacks( - ItemGroup par2ItemGroup, DefaultedList itemList) { - if (!isIn(par2ItemGroup)) { - return; - } - InitUtils.initPoweredItems(TRContent.OMNI_TOOL, itemList); - } - - // IEnergyItemInfo + // EnergyHolder @Override public double getMaxStoredPower() { return maxCharge; diff --git a/src/main/resources/data/techreborn/recipes/crafting_table/tool/omni_tool.json b/src/main/resources/data/techreborn/recipes/crafting_table/tool/omni_tool.json new file mode 100644 index 000000000..88bcbc448 --- /dev/null +++ b/src/main/resources/data/techreborn/recipes/crafting_table/tool/omni_tool.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "D ", + " C ", + " S" + ], + "key": { + "D": { + "item": "techreborn:advanced_drill" + }, + "C": { + "item": "techreborn:advanced_chainsaw" + }, + "S": { + "item": "minecraft:diamond_sword" + } + }, + "result": { + "item": "techreborn:omni_tool" + } +} \ No newline at end of file From 6918f8dd60c7d2bef4bd36fd1700d8cd22223b4b Mon Sep 17 00:00:00 2001 From: vhd Date: Sun, 22 Dec 2019 19:58:58 +0200 Subject: [PATCH 4/4] REI integration for fluid generators (#1916) --- .../java/techreborn/compat/rei/ReiPlugin.java | 29 +++++++- .../FluidGeneratorRecipeCategory.java | 74 +++++++++++++++++++ .../FluidGeneratorRecipeDisplay.java | 44 +++++++++++ .../assets/techreborn/lang/en_us.json | 8 +- 4 files changed, 153 insertions(+), 2 deletions(-) create mode 100644 src/main/java/techreborn/compat/rei/fluidgenerator/FluidGeneratorRecipeCategory.java create mode 100644 src/main/java/techreborn/compat/rei/fluidgenerator/FluidGeneratorRecipeDisplay.java diff --git a/src/main/java/techreborn/compat/rei/ReiPlugin.java b/src/main/java/techreborn/compat/rei/ReiPlugin.java index 146a3eae5..7b249a18b 100644 --- a/src/main/java/techreborn/compat/rei/ReiPlugin.java +++ b/src/main/java/techreborn/compat/rei/ReiPlugin.java @@ -38,8 +38,12 @@ import reborncore.common.crafting.RebornRecipe; import reborncore.common.crafting.RebornRecipeType; import reborncore.common.crafting.RecipeManager; import techreborn.TechReborn; +import techreborn.api.generator.EFluidGenerator; +import techreborn.api.generator.GeneratorRecipeHelper; import techreborn.api.recipe.recipes.FluidReplicatorRecipe; import techreborn.api.recipe.recipes.RollingMachineRecipe; +import techreborn.compat.rei.fluidgenerator.FluidGeneratorRecipeCategory; +import techreborn.compat.rei.fluidgenerator.FluidGeneratorRecipeDisplay; import techreborn.compat.rei.fluidreplicator.FluidReplicatorRecipeCategory; import techreborn.compat.rei.fluidreplicator.FluidReplicatorRecipeDisplay; import techreborn.compat.rei.rollingmachine.RollingMachineCategory; @@ -81,7 +85,6 @@ public class ReiPlugin implements REIPluginV0 { iconMap.put(ModRecipes.SOLID_CANNING_MACHINE, Machine.SOLID_CANNING_MACHINE); iconMap.put(ModRecipes.VACUUM_FREEZER, Machine.VACUUM_FREEZER); iconMap.put(ModRecipes.WIRE_MILL, Machine.WIRE_MILL); - } @Override @@ -116,11 +119,23 @@ public class ReiPlugin implements REIPluginV0 { recipeHelper.registerCategory(new MachineRecipeCategory<>(ModRecipes.SOLID_CANNING_MACHINE)); recipeHelper.registerCategory(new MachineRecipeCategory<>(ModRecipes.VACUUM_FREEZER, 1)); recipeHelper.registerCategory(new MachineRecipeCategory<>(ModRecipes.WIRE_MILL, 1)); + + recipeHelper.registerCategory(new FluidGeneratorRecipeCategory(Machine.THERMAL_GENERATOR)); + recipeHelper.registerCategory(new FluidGeneratorRecipeCategory(Machine.GAS_TURBINE)); + recipeHelper.registerCategory(new FluidGeneratorRecipeCategory(Machine.DIESEL_GENERATOR)); + recipeHelper.registerCategory(new FluidGeneratorRecipeCategory(Machine.SEMI_FLUID_GENERATOR)); + recipeHelper.registerCategory(new FluidGeneratorRecipeCategory(Machine.PLASMA_GENERATOR)); } @Override public void registerRecipeDisplays(RecipeHelper recipeHelper) { RecipeManager.getRecipeTypes("techreborn").forEach(rebornRecipeType -> registerMachineRecipe(recipeHelper, rebornRecipeType)); + + registerFluidGeneratorDisplays(recipeHelper, EFluidGenerator.THERMAL, Machine.THERMAL_GENERATOR); + registerFluidGeneratorDisplays(recipeHelper, EFluidGenerator.GAS, Machine.GAS_TURBINE); + registerFluidGeneratorDisplays(recipeHelper, EFluidGenerator.DIESEL, Machine.DIESEL_GENERATOR); + registerFluidGeneratorDisplays(recipeHelper, EFluidGenerator.SEMIFLUID, Machine.SEMI_FLUID_GENERATOR); + registerFluidGeneratorDisplays(recipeHelper, EFluidGenerator.PLASMA, Machine.PLASMA_GENERATOR); } @Override @@ -143,6 +158,11 @@ public class ReiPlugin implements REIPluginV0 { recipeHelper.registerWorkingStations(ModRecipes.SOLID_CANNING_MACHINE.getName(), EntryStack.create(Machine.SOLID_CANNING_MACHINE)); recipeHelper.registerWorkingStations(ModRecipes.VACUUM_FREEZER.getName(), EntryStack.create(Machine.VACUUM_FREEZER)); recipeHelper.registerWorkingStations(ModRecipes.WIRE_MILL.getName(), EntryStack.create(Machine.WIRE_MILL)); + recipeHelper.registerWorkingStations(new Identifier(TechReborn.MOD_ID, Machine.THERMAL_GENERATOR.name), EntryStack.create(Machine.THERMAL_GENERATOR)); + recipeHelper.registerWorkingStations(new Identifier(TechReborn.MOD_ID, Machine.GAS_TURBINE.name), EntryStack.create(Machine.GAS_TURBINE)); + recipeHelper.registerWorkingStations(new Identifier(TechReborn.MOD_ID, Machine.DIESEL_GENERATOR.name), EntryStack.create(Machine.DIESEL_GENERATOR)); + recipeHelper.registerWorkingStations(new Identifier(TechReborn.MOD_ID, Machine.SEMI_FLUID_GENERATOR.name), EntryStack.create(Machine.SEMI_FLUID_GENERATOR)); + recipeHelper.registerWorkingStations(new Identifier(TechReborn.MOD_ID, Machine.PLASMA_GENERATOR.name), EntryStack.create(Machine.PLASMA_GENERATOR)); } @Override @@ -168,6 +188,13 @@ public class ReiPlugin implements REIPluginV0 { stack.addSetting(EntryStack.Settings.CHECK_TAGS, EntryStack.Settings.TRUE); } + private void registerFluidGeneratorDisplays(RecipeHelper recipeHelper, EFluidGenerator generator, Machine machine) { + Identifier identifier = new Identifier(TechReborn.MOD_ID, machine.name); + GeneratorRecipeHelper.getFluidRecipesForGenerator(generator).getRecipes().forEach(recipe -> { + recipeHelper.registerDisplay(identifier, new FluidGeneratorRecipeDisplay(recipe, identifier)); + }); + } + private void registerMachineRecipe(RecipeHelper recipeHelper, RebornRecipeType recipeType) { Function recipeDisplay = r -> new MachineRecipeDisplay<>((RebornRecipe) r); diff --git a/src/main/java/techreborn/compat/rei/fluidgenerator/FluidGeneratorRecipeCategory.java b/src/main/java/techreborn/compat/rei/fluidgenerator/FluidGeneratorRecipeCategory.java new file mode 100644 index 000000000..13117e21f --- /dev/null +++ b/src/main/java/techreborn/compat/rei/fluidgenerator/FluidGeneratorRecipeCategory.java @@ -0,0 +1,74 @@ +package techreborn.compat.rei.fluidgenerator; + +import me.shedaniel.math.api.Point; +import me.shedaniel.math.api.Rectangle; +import me.shedaniel.rei.api.EntryStack; +import me.shedaniel.rei.api.RecipeCategory; +import me.shedaniel.rei.gui.widget.*; +import me.shedaniel.rei.impl.ScreenHelper; +import net.minecraft.text.Text; +import net.minecraft.text.TranslatableText; +import net.minecraft.util.Identifier; +import reborncore.common.util.StringUtils; +import techreborn.TechReborn; +import techreborn.init.TRContent; + +import java.util.LinkedList; +import java.util.List; +import java.util.function.Supplier; + +public class FluidGeneratorRecipeCategory implements RecipeCategory { + + private TRContent.Machine generator; + private Identifier identifier; + + public FluidGeneratorRecipeCategory(TRContent.Machine generator) { + this.generator = generator; + this.identifier = new Identifier(TechReborn.MOD_ID, generator.name); + } + + @Override + public Identifier getIdentifier() { + return identifier; + } + + @Override + public String getCategoryName() { + return StringUtils.t(identifier.toString()); + } + + @Override + public EntryStack getLogo() { + return EntryStack.create(generator); + } + + @Override + public List setupDisplay(Supplier recipeDisplaySupplier, Rectangle bounds) { + + FluidGeneratorRecipeDisplay machineRecipe = recipeDisplaySupplier.get(); + + Point startPoint = new Point(bounds.getCenterX() - 41, bounds.getCenterY() - 13); + + List widgets = new LinkedList<>(); + widgets.add(new RecipeBaseWidget(bounds)); + widgets.add(new RecipeArrowWidget(startPoint.x + 24, startPoint.y + 1, true)); + + for (List inputs : machineRecipe.getInputEntries()) { + widgets.add(EntryWidget.create(startPoint.x + 1, startPoint.y + 1).entries(inputs)); + } + + Text energyPerTick = new TranslatableText("techreborn.jei.recipe.generator.total", machineRecipe.getTotalEnergy()); + LabelWidget costLabel; + widgets.add(costLabel = new LabelWidget(bounds.getCenterX(), startPoint.y + 20, energyPerTick.asFormattedString())); + costLabel.setHasShadows(false); + costLabel.setDefaultColor(ScreenHelper.isDarkModeEnabled() ? 0xFFBBBBBB : 0xFF404040); + + return widgets; + } + + @Override + public int getDisplayHeight() { + return 37; + } + +} diff --git a/src/main/java/techreborn/compat/rei/fluidgenerator/FluidGeneratorRecipeDisplay.java b/src/main/java/techreborn/compat/rei/fluidgenerator/FluidGeneratorRecipeDisplay.java new file mode 100644 index 000000000..d020085fa --- /dev/null +++ b/src/main/java/techreborn/compat/rei/fluidgenerator/FluidGeneratorRecipeDisplay.java @@ -0,0 +1,44 @@ +package techreborn.compat.rei.fluidgenerator; + +import com.google.common.collect.Lists; +import me.shedaniel.rei.api.EntryStack; +import me.shedaniel.rei.api.RecipeDisplay; +import net.minecraft.util.Identifier; +import techreborn.api.generator.FluidGeneratorRecipe; + +import java.util.Collections; +import java.util.List; + +public class FluidGeneratorRecipeDisplay implements RecipeDisplay { + + private List> inputs; + private Identifier category; + private int totalEnergy; + + public FluidGeneratorRecipeDisplay(FluidGeneratorRecipe recipe, Identifier category) { + this.category = category; + this.inputs = Lists.newArrayList(); + this.totalEnergy = recipe.getEnergyPerBucket(); + inputs.add(Collections.singletonList(EntryStack.create(recipe.getFluid(), 1000))); + } + + @Override + public List> getInputEntries() { + return inputs; + } + + @Override + public List getOutputEntries() { + return Lists.newArrayList(); + } + + @Override + public Identifier getRecipeCategory() { + return category; + } + + public int getTotalEnergy() { + return totalEnergy; + } + +} diff --git a/src/main/resources/assets/techreborn/lang/en_us.json b/src/main/resources/assets/techreborn/lang/en_us.json index 6d1317aa5..ecfda8e5a 100644 --- a/src/main/resources/assets/techreborn/lang/en_us.json +++ b/src/main/resources/assets/techreborn/lang/en_us.json @@ -614,6 +614,7 @@ "techreborn.jei.recipe.processing.time.1": "Time: %s ticks", "techreborn.jei.recipe.processing.time.2": "(%s sec)", "techreborn.jei.recipe.heat": "Heat", + "techreborn.jei.recipe.generator.total": "E total: %s", "techreborn.jei.desc.rubberSap": "In order to get sap, you need to find a rubber tree or obtain a rubber tree sapling and proceed to grow it. Once you have obtained a rubber tree, search around for little yellowish spots on the tree. If you don't see any, just wait a bit and eventually these yellow \"sap\" spots. To harvest the sap, use a treetap and use it on the log.", "techreborn.jei.desc.scrapBox": "Scrapboxes can be opened by either a simple use in hand, or by dispensers. That's right, just throw your scrapboxes into dispensers and give them a redstone signal, and boom! Random item!", @@ -680,7 +681,12 @@ "techreborn:rolling_machine": "Rolling Machine", "techreborn:solid_canning_machine": "Solid Canning Machine", "techreborn:wire_mill": "Wire Mill", - + "techreborn:gas_turbine": "Gas Generator", + "techreborn:semi_fluid_generator": "Semifluid Generator", + "techreborn:diesel_generator": "Diesel Generator", + "techreborn:thermal_generator": "Thermal Generator", + "techreborn:plasma_generator": "Plasma Generator", + "_comment26": "Fluid buckets", "item.techreborn.beryllium_bucket": "Beryllium", "item.techreborn.calcium_bucket": "Calcium",