diff --git a/src/generated/resources/assets/tfmg/lang/en_ud.json b/src/generated/resources/assets/tfmg/lang/en_ud.json index ebd7c588..9324f90e 100644 --- a/src/generated/resources/assets/tfmg/lang/en_ud.json +++ b/src/generated/resources/assets/tfmg/lang/en_ud.json @@ -512,6 +512,34 @@ "create.distillation_output.mode.keep_fluid": "ssǝɔoɹԀ uoıʇɐןןıʇsıᗡ doʇS", "create.distillation_output.mode.void_when_full": "pınןℲ ssǝɔxƎ pıoΛ", "create.distillation_output.when_tank_is_full": "ןןnℲ sı ʞuɐ⟘ ןɐuɹǝʇuI uǝɥM", + "create.electricity.capacity": "%s :ʎʇıɔɐdɐƆ", + "create.electricity.charging_rate": "%s :ǝʇɐᴚ buıbɹɐɥƆ", + "create.electricity.max_capacity": "%s :ʎʇıɔɐdɐƆ xɐW", + "create.engine.controller.header": "ɹǝןןoɹʇuoƆ ǝuıbuƎ", + "create.engine.efficiency": "%s :ʎɔuǝıɔıɟɟƎ", + "create.engine.fuel_consumption": "%s :uoıʇdɯnsuoƆ ןǝnℲ", + "create.engine.injection_rate": "%s :ǝʇɐᴚ uoıʇɔǝظuI", + "create.engine.length": "%s :ɥʇbuǝꞀ", + "create.engine.rpm": "%s :WԀᴚ", + "create.engine.shift": "%s :ʇɟıɥS", + "create.engine.signal": "%s :ןɐubıS", + "create.engine.speed_efficiency": "%s :ʎɔuǝıɔıɟɟƎ pǝǝdS", + "create.engine.torque": "%s :ǝnbɹo⟘", + "create.engine.type.boxer": "ɹǝxoᗺ", + "create.engine.type.engine_i": "I", + "create.engine.type.engine_u": "∩", + "create.engine.type.engine_v": "Λ", + "create.engine.type.engine_w": "M", + "create.engine.type.radial": "ןɐıpɐᴚ", + "create.engine.type.turbine": "ǝuıqɹn⟘", + "create.engine.upgrade.transmission.neutral": "ןɐɹʇnǝN", + "create.engine.upgrade.transmission.reverse": "ǝsɹǝʌǝᴚ", + "create.engine.upgrade.transmission.shift_1": "ɹɐǝ⅁ ʇsƖ", + "create.engine.upgrade.transmission.shift_2": "ɹɐǝ⅁ puᄅ", + "create.engine.upgrade.transmission.shift_3": "ɹɐǝ⅁ pɹƐ", + "create.engine.upgrade.transmission.shift_4": "ɹɐǝ⅁ ɥʇㄣ", + "create.engine.upgrade.transmission.shift_5": "ɹɐǝ⅁ ɥʇϛ", + "create.engine.upgrade.transmission.shift_6": "ɹɐǝ⅁ ɥʇ9", "create.fe": "%1$s :ƎℲ", "create.flamethrower.fuel.amount": "ʇunoɯⱯ ǝןıʇɔǝظoɹԀ %s", "create.flamethrower.fuel.capacity": "%s :ʎʇıɔɐdɐƆ ןǝnℲ", @@ -542,17 +570,17 @@ "create.goggles.electric_machine.no_power": "ɹǝʍoԀ oN", "create.goggles.electricity.insufficient_voltage": "ǝbɐʇןoΛ ʇuǝıɔıɟɟnsuI", "create.goggles.electrode_holder.min_amps": " spǝǝN( ʇuǝɹɹnƆ ɥbnouƎ ʇoN", - "create.goggles.engine.cooling_fluid": " :pınןℲ buıןooƆ", - "create.goggles.engine.fuel_consumption": ":uoıʇdɯnsuoƆ ןǝnℲ ", + "create.goggles.engine.cooling_fluid": "%s :pınןℲ buıןooƆ", + "create.goggles.engine.fuel_consumption": "s/ᗺɯ %s :uoıʇdɯnsuoƆ ןǝnℲ", "create.goggles.engine.header": "oɟuI ǝuıbuƎ", "create.goggles.engine.next_component": " :ʇuǝuodɯoƆ ʇxǝN ", - "create.goggles.engine.oil": " :ןıO", + "create.goggles.engine.oil": "%s :ןıO", "create.goggles.engine.pistons_missing": "buıssıW suoʇsıԀ", - "create.goggles.engine.rpm": " :pǝǝdS ", - "create.goggles.engine.signal": " :ןɐubıS ", - "create.goggles.engine.torque": ":ǝnbɹo⟘ ", + "create.goggles.engine.rpm": "WԀᴚ %s :pǝǝdS", + "create.goggles.engine.signal": "%s :ןɐubıS", + "create.goggles.engine.torque": "%s :ǝnbɹo⟘", "create.goggles.engine.turbines_missing": "buıssıW sǝuıqɹn⟘", - "create.goggles.engine.type": " :ǝdʎ⟘ ", + "create.goggles.engine.type": "%s :ǝdʎ⟘", "create.goggles.engine.unfinished": "pǝɥsıuıɟu∩ ǝuıbuƎ", "create.goggles.fluid_storage": ":ǝbɐɹoʇS pınןℲ", "create.goggles.gauge.value": ":ǝbɐʇןoΛ pǝɹnsɐǝW ", @@ -591,6 +619,15 @@ "create.goggles.vat.tfmg.graphite_electrode": "ǝpoɹʇɔǝןƎ ǝʇıɥdɐɹ⅁ ", "create.goggles.vat.tfmg.mixing": "ɹǝxıW ", "create.goggles.voltmeter": ":ɹǝʇǝɯʇןoΛ", + "create.goggles.voltmeter.mode.capacity": "ʎʇıɔɐdɐƆ", + "create.goggles.voltmeter.mode.current": "ʇuǝɹɹnƆ", + "create.goggles.voltmeter.mode.fallback": "ʞɔɐqןןɐℲ", + "create.goggles.voltmeter.mode.high_voltage": ")ɥbıH( ǝbɐʇןoΛ", + "create.goggles.voltmeter.mode.net_power_gen": "uoıʇɐɹǝuǝ⅁ ɹǝʍoԀ ʞɹoʍʇǝN", + "create.goggles.voltmeter.mode.net_power_use": "ǝbɐs∩ ɹǝʍoԀ ʞɹoʍʇǝN", + "create.goggles.voltmeter.mode.power": "ɹǝʍoԀ", + "create.goggles.voltmeter.mode.resistance": "ǝɔuɐʇsısǝᴚ", + "create.goggles.voltmeter.mode.voltage": "ǝbɐʇןoΛ", "create.goggles.voltmeter.range": "%1$s :ǝbuɐᴚ ", "create.goggles.winding_machine.header": "ǝuıɥɔɐW buıpuıM", "create.goggles.winding_machine.progress": " :ssǝɹboɹԀ", @@ -599,13 +636,17 @@ "create.multimeter.additional_values": ":sǝnןɐΛ ןɐuoıʇıppⱯ", "create.multimeter.energy_stored": " :pǝɹoʇS ʎbɹǝuƎ ", "create.multimeter.energy_usage": " :ǝbɐs∩ ʎbɹǝuƎ ", - "create.multimeter.group": " :dnoɹ⅁ ", + "create.multimeter.group": "%s :dnoɹ⅁ ", "create.multimeter.header": ":ɐʇɐᗡ ɹǝʇǝɯıʇןnW", - "create.multimeter.power_generated": " :pǝʇɐɹǝuǝ⅁ ɹǝʍoԀ ", + "create.multimeter.insufficient_power": "ᴚƎMOԀ ⟘H⅁∩ONƎ ⟘ON", + "create.multimeter.network.consumption": "%s :uoıʇdɯnsuoƆ ɹǝʍoԀ ʞɹoʍʇǝN", + "create.multimeter.network.generation": "%s :uoıʇɐɹǝuǝ⅁ ɹǝʍoԀ ʞɹoʍʇǝN", + "create.multimeter.power_generated": "%s :pǝʇɐɹǝuǝ⅁ ɹǝʍoԀ ", "create.multimeter.power_percentage": " :ɥʇbuǝɹʇS pıɹ⅁ ", "create.multimeter.power_usage": " :ǝbɐs∩ ɹǝʍoԀ ", + "create.multimeter.separator": "----------------------------", "create.multimeter.transformer_ratio": " :oıʇɐᴚ uɹn⟘ ", - "create.multimeter.voltage_generated": " :pǝʇɐɹǝuǝ⅁ ǝbɐʇןoΛ ", + "create.multimeter.voltage_generated": "%s :pǝʇɐɹǝuǝ⅁ ǝbɐʇןoΛ ", "create.network": "%1$s :ʞɹoʍʇǝN", "create.oil_hammer.reserves": "%1$s :sǝʌɹǝsǝᴚ ןıO", "create.pumpjack_deposit_amount": "sʇǝʞɔnᗺ %1$s", @@ -967,6 +1008,16 @@ "item.tfmg.yellow_multimeter.tooltip.summary": "ʞɹoʍʇǝu sʇı puɐ ʞɔoןq ןɐɔıɹʇɔǝןǝ uɐ ʇnoqɐ ɐʇɐp sʍoɥS", "item.tfmg.zinc_electrode": "ǝpoɹʇɔǝןƎ ɔuıZ", "item.tfmg.zinc_grenade": "ǝpɐuǝɹ⅁ ɔuıZ", + "tfmg.display_source.electricity.current": "ʇuǝɹɹnƆ", + "tfmg.display_source.electricity.network_consumption": "uoıʇdɯnsuoƆ ɹǝʍoԀ ʞɹoʍʇǝN", + "tfmg.display_source.electricity.network_generation": "uoıʇɐɹǝuǝ⅁ ɹǝʍoԀ ʞɹoʍʇǝN", + "tfmg.display_source.electricity.network_id": "ᗡI ʞɹoʍʇǝN", + "tfmg.display_source.electricity.network_resistance": "ǝɔuɐʇsısǝᴚ ʞɹoʍʇǝN", + "tfmg.display_source.electricity.power_generation": "uoıʇɐɹǝuǝ⅁ ɹǝʍoԀ", + "tfmg.display_source.electricity.power_usage": "ǝbɐs∩ ɹǝʍoԀ", + "tfmg.display_source.electricity.resistance": "ǝɔuɐʇsısǝᴚ", + "tfmg.display_source.electricity.voltage": "ǝbɐʇןoΛ", + "tfmg.display_source.electricity.voltage_generation": "uoıʇɐɹǝuǝ⅁ ǝbɐʇןoΛ", "tfmg.keyinfo.custom_button": "uoʇʇnᗺ ɯoʇsnƆ ɹǝןןoɹʇuoƆ ǝuıbuƎ", "tfmg.keyinfo.engine_start": "ǝuıbuƎ ʇɹɐʇS", "tfmg.keyinfo.transmission_shift_down": "uʍoᗡ ʇɟıɥS uoıssıɯsuɐɹ⟘", diff --git a/src/generated/resources/assets/tfmg/lang/en_us.json b/src/generated/resources/assets/tfmg/lang/en_us.json index 338d05cb..72da25ad 100644 --- a/src/generated/resources/assets/tfmg/lang/en_us.json +++ b/src/generated/resources/assets/tfmg/lang/en_us.json @@ -512,6 +512,34 @@ "create.distillation_output.mode.keep_fluid": "Stop Distillation Process", "create.distillation_output.mode.void_when_full": "Void Excess Fluid", "create.distillation_output.when_tank_is_full": "When Internal Tank is Full", + "create.electricity.capacity": "Capacity: %s", + "create.electricity.charging_rate": "Charging Rate: %s", + "create.electricity.max_capacity": "Max Capacity: %s", + "create.engine.controller.header": "Engine Controller", + "create.engine.efficiency": "Efficiency: %s", + "create.engine.fuel_consumption": "Fuel Consumption: %s", + "create.engine.injection_rate": "Injection Rate: %s", + "create.engine.length": "Length: %s", + "create.engine.rpm": "RPM: %s", + "create.engine.shift": "Shift: %s", + "create.engine.signal": "Signal: %s", + "create.engine.speed_efficiency": "Speed Efficiency: %s", + "create.engine.torque": "Torque: %s", + "create.engine.type.boxer": "Boxer", + "create.engine.type.engine_i": "I", + "create.engine.type.engine_u": "U", + "create.engine.type.engine_v": "V", + "create.engine.type.engine_w": "W", + "create.engine.type.radial": "Radial", + "create.engine.type.turbine": "Turbine", + "create.engine.upgrade.transmission.neutral": "Neutral", + "create.engine.upgrade.transmission.reverse": "Reverse", + "create.engine.upgrade.transmission.shift_1": "1st Gear", + "create.engine.upgrade.transmission.shift_2": "2nd Gear", + "create.engine.upgrade.transmission.shift_3": "3rd Gear", + "create.engine.upgrade.transmission.shift_4": "4th Gear", + "create.engine.upgrade.transmission.shift_5": "5th Gear", + "create.engine.upgrade.transmission.shift_6": "6th Gear", "create.fe": "FE: %1$s", "create.flamethrower.fuel.amount": "%s Projectile Amount", "create.flamethrower.fuel.capacity": "Fuel Capacity: %s", @@ -542,17 +570,17 @@ "create.goggles.electric_machine.no_power": "No Power", "create.goggles.electricity.insufficient_voltage": "Insufficient Voltage", "create.goggles.electrode_holder.min_amps": "Not Enough Current (Needs ", - "create.goggles.engine.cooling_fluid": "Cooling Fluid: ", - "create.goggles.engine.fuel_consumption": " Fuel Consumption:", + "create.goggles.engine.cooling_fluid": "Cooling Fluid: %s", + "create.goggles.engine.fuel_consumption": "Fuel Consumption: %s mB/s", "create.goggles.engine.header": "Engine Info", "create.goggles.engine.next_component": " Next Component: ", - "create.goggles.engine.oil": "Oil: ", + "create.goggles.engine.oil": "Oil: %s", "create.goggles.engine.pistons_missing": "Pistons Missing", - "create.goggles.engine.rpm": " Speed: ", - "create.goggles.engine.signal": " Signal: ", - "create.goggles.engine.torque": " Torque:", + "create.goggles.engine.rpm": "Speed: %s RPM", + "create.goggles.engine.signal": "Signal: %s", + "create.goggles.engine.torque": "Torque: %s", "create.goggles.engine.turbines_missing": "Turbines Missing", - "create.goggles.engine.type": " Type: ", + "create.goggles.engine.type": "Type: %s", "create.goggles.engine.unfinished": "Engine Unfinished", "create.goggles.fluid_storage": "Fluid Storage:", "create.goggles.gauge.value": " Measured Voltage:", @@ -591,6 +619,15 @@ "create.goggles.vat.tfmg.graphite_electrode": " Graphite Electrode", "create.goggles.vat.tfmg.mixing": " Mixer", "create.goggles.voltmeter": "Voltmeter:", + "create.goggles.voltmeter.mode.capacity": "Capacity", + "create.goggles.voltmeter.mode.current": "Current", + "create.goggles.voltmeter.mode.fallback": "Fallback", + "create.goggles.voltmeter.mode.high_voltage": "Voltage (High)", + "create.goggles.voltmeter.mode.net_power_gen": "Network Power Generation", + "create.goggles.voltmeter.mode.net_power_use": "Network Power Usage", + "create.goggles.voltmeter.mode.power": "Power", + "create.goggles.voltmeter.mode.resistance": "Resistance", + "create.goggles.voltmeter.mode.voltage": "Voltage", "create.goggles.voltmeter.range": " Range: %1$s", "create.goggles.winding_machine.header": "Winding Machine", "create.goggles.winding_machine.progress": "Progress: ", @@ -599,13 +636,17 @@ "create.multimeter.additional_values": "Additional Values:", "create.multimeter.energy_stored": " Energy Stored: ", "create.multimeter.energy_usage": " Energy Usage: ", - "create.multimeter.group": " Group: ", + "create.multimeter.group": " Group: %s", "create.multimeter.header": "Multimeter Data:", - "create.multimeter.power_generated": " Power Generated: ", + "create.multimeter.insufficient_power": "NOT ENOUGHT POWER", + "create.multimeter.network.consumption": "Network Power Consumption: %s", + "create.multimeter.network.generation": "Network Power Generation: %s", + "create.multimeter.power_generated": " Power Generated: %s", "create.multimeter.power_percentage": " Grid Strength: ", "create.multimeter.power_usage": " Power Usage: ", + "create.multimeter.separator": "----------------------------", "create.multimeter.transformer_ratio": " Turn Ratio: ", - "create.multimeter.voltage_generated": " Voltage Generated: ", + "create.multimeter.voltage_generated": " Voltage Generated: %s", "create.network": "Network: %1$s", "create.oil_hammer.reserves": "Oil Reserves: %1$s", "create.pumpjack_deposit_amount": "%1$s Buckets", @@ -967,6 +1008,16 @@ "item.tfmg.yellow_multimeter.tooltip.summary": "Shows data about an electrical block and its network", "item.tfmg.zinc_electrode": "Zinc Electrode", "item.tfmg.zinc_grenade": "Zinc Grenade", + "tfmg.display_source.electricity.current": "Current", + "tfmg.display_source.electricity.network_consumption": "Network Power Consumption", + "tfmg.display_source.electricity.network_generation": "Network Power Generation", + "tfmg.display_source.electricity.network_id": "Network ID", + "tfmg.display_source.electricity.network_resistance": "Network Resistance", + "tfmg.display_source.electricity.power_generation": "Power Generation", + "tfmg.display_source.electricity.power_usage": "Power Usage", + "tfmg.display_source.electricity.resistance": "Resistance", + "tfmg.display_source.electricity.voltage": "Voltage", + "tfmg.display_source.electricity.voltage_generation": "Voltage Generation", "tfmg.keyinfo.custom_button": "Engine Controller Custom Button", "tfmg.keyinfo.engine_start": "Start Engine", "tfmg.keyinfo.transmission_shift_down": "Transmission Shift Down", diff --git a/src/main/java/com/drmangotea/tfmg/TFMG.java b/src/main/java/com/drmangotea/tfmg/TFMG.java index cbd7393f..0c7daff0 100644 --- a/src/main/java/com/drmangotea/tfmg/TFMG.java +++ b/src/main/java/com/drmangotea/tfmg/TFMG.java @@ -57,6 +57,7 @@ public class TFMG { TFMGSoundEvents.prepare(); TFMGElectrodes.init(); TFMGCableTypes.init(); + TFMGDisplaySources.init(); TFMGCreativeTabs.register(modEventBus); TFMGBlocks.init(); TFMGPipes.init(); diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/base/IElectric.java b/src/main/java/com/drmangotea/tfmg/content/electricity/base/IElectric.java index 3df77e1d..906175d5 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/base/IElectric.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/base/IElectric.java @@ -196,22 +196,20 @@ public interface IElectric { .forGoggles(tooltip); if (getData().notEnoughtPower) { - CreateLang.text("NOT ENOUGHT POWER") + CreateLang.translate("multimeter.insufficient_power") .color(Color.RED) .forGoggles(tooltip, 1); } if (voltageGeneration() > 0) { - CreateLang.translate("multimeter.power_generated") - .add(Component.literal(TFMGUtils.formatUnits(powerGeneration(), "W"))) + CreateLang.translate("multimeter.power_generated", TFMGUtils.formatUnits(powerGeneration(), "W")) .color(0x852e4a) .forGoggles(tooltip, 1); - CreateLang.translate("multimeter.voltage_generated") - .add(Component.literal(TFMGUtils.formatUnits(voltageGeneration(), "V"))) + CreateLang.translate("multimeter.voltage_generated", TFMGUtils.formatUnits(voltageGeneration(), "V")) .color(0x127799) .forGoggles(tooltip, 1); - CreateLang.text("----------------------------") + CreateLang.translate("multimeter.separator") .style(ChatFormatting.WHITE) .forGoggles(tooltip); } @@ -229,24 +227,23 @@ public interface IElectric { .color(0xcc4b74) .forGoggles(tooltip, 1); if (getData().group.id != -1) { - CreateLang.text("----------------------------") + CreateLang.translate("multimeter.separator") .style(ChatFormatting.WHITE) .forGoggles(tooltip); - CreateLang.translate("multimeter.group") - .add(CreateLang.number(getData().group.id)) + CreateLang.translate("multimeter.group", CreateLang.number(getData().group.id)) .color(0xd8db27) .forGoggles(tooltip, 1); } if (isPlayerSneaking) { - CreateLang.text("----------------------------") + CreateLang.translate("multimeter.separator") .style(ChatFormatting.WHITE) .forGoggles(tooltip); - CreateLang.text("Network Power Generation: " + TFMGUtils.formatUnits(getNetworkPowerGeneration(), "W")) + CreateLang.translate("multimeter.network.generation", TFMGUtils.formatUnits(getNetworkPowerGeneration(), "W")) .color(0xcc4b74) .forGoggles(tooltip, 1); - CreateLang.text("Network Power Consumption: " + TFMGUtils.formatUnits(getNetworkPowerUsage(), "W")) + CreateLang.translate("multimeter.network.consumption", TFMGUtils.formatUnits(getNetworkPowerUsage(), "W")) .color(0xcc4b74) .forGoggles(tooltip, 1); diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/CurrentDisplaySource.java b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/CurrentDisplaySource.java new file mode 100644 index 00000000..841b9695 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/CurrentDisplaySource.java @@ -0,0 +1,42 @@ +package com.drmangotea.tfmg.content.electricity.display_link; + +import com.drmangotea.tfmg.base.TFMGUtils; +import com.drmangotea.tfmg.content.electricity.base.IElectric; +import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour; +import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; +import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource; +import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats; +import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.level.block.entity.BlockEntity; + +public class CurrentDisplaySource extends SingleLineDisplaySource { + @Override + protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { + BlockEntity sourceBE = context.getSourceBlockEntity(); + if (!(sourceBE instanceof SmartBlockEntity smart)) + return EMPTY_LINE; + if (!(smart instanceof IElectric electric)) + return EMPTY_LINE; + + float current = electric.getCurrent(); + + if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) { + IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric(); + if (observed != null) current = observed.getCurrent(); + } + + return Component.literal(TFMGUtils.formatUnits(current, "A")); + } + + @Override + protected String getTranslationKey() { + return "electricity.current"; + } + + @Override + protected boolean allowsLabeling(DisplayLinkContext context) { + return true; + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/PowerGenerationDisplaySource.java b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/PowerGenerationDisplaySource.java new file mode 100644 index 00000000..d7047214 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/PowerGenerationDisplaySource.java @@ -0,0 +1,42 @@ +package com.drmangotea.tfmg.content.electricity.display_link; + +import com.drmangotea.tfmg.base.TFMGUtils; +import com.drmangotea.tfmg.content.electricity.base.IElectric; +import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour; +import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; +import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource; +import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats; +import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.level.block.entity.BlockEntity; + +public class PowerGenerationDisplaySource extends SingleLineDisplaySource { + @Override + protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { + BlockEntity sourceBE = context.getSourceBlockEntity(); + if (!(sourceBE instanceof SmartBlockEntity smart)) + return EMPTY_LINE; + if (!(smart instanceof IElectric electric)) + return EMPTY_LINE; + + int powerGen = electric.powerGeneration(); + + if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) { + IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric(); + if (observed != null) powerGen = observed.powerGeneration(); + } + + return Component.literal(TFMGUtils.formatUnits(powerGen, "W")); + } + + @Override + protected String getTranslationKey() { + return "electricity.power_generation"; + } + + @Override + protected boolean allowsLabeling(DisplayLinkContext context) { + return true; + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/PowerUsageDisplaySource.java b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/PowerUsageDisplaySource.java new file mode 100644 index 00000000..c5f60f2a --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/PowerUsageDisplaySource.java @@ -0,0 +1,42 @@ +package com.drmangotea.tfmg.content.electricity.display_link; + +import com.drmangotea.tfmg.base.TFMGUtils; +import com.drmangotea.tfmg.content.electricity.base.IElectric; +import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour; +import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; +import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource; +import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats; +import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.level.block.entity.BlockEntity; + +public class PowerUsageDisplaySource extends SingleLineDisplaySource { + @Override + protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { + BlockEntity sourceBE = context.getSourceBlockEntity(); + if (!(sourceBE instanceof SmartBlockEntity smart)) + return EMPTY_LINE; + if (!(smart instanceof IElectric electric)) + return EMPTY_LINE; + + float powerUsage = electric.getPowerUsage(); + + if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) { + IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric(); + if (observed != null) powerUsage = observed.getPowerUsage(); + } + + return Component.literal(TFMGUtils.formatUnits(powerUsage, "W")); + } + + @Override + protected String getTranslationKey() { + return "electricity.power_usage"; + } + + @Override + protected boolean allowsLabeling(DisplayLinkContext context) { + return true; + } +} \ No newline at end of file diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/ResistanceDisplaySource.java b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/ResistanceDisplaySource.java new file mode 100644 index 00000000..f125b565 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/ResistanceDisplaySource.java @@ -0,0 +1,42 @@ +package com.drmangotea.tfmg.content.electricity.display_link; + +import com.drmangotea.tfmg.base.TFMGUtils; +import com.drmangotea.tfmg.content.electricity.base.IElectric; +import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour; +import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; +import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource; +import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats; +import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.level.block.entity.BlockEntity; + +public class ResistanceDisplaySource extends SingleLineDisplaySource { + @Override + protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { + BlockEntity sourceBE = context.getSourceBlockEntity(); + if (!(sourceBE instanceof SmartBlockEntity smart)) + return EMPTY_LINE; + if (!(smart instanceof IElectric electric)) + return EMPTY_LINE; + + float resistance = electric.voltageGeneration() > 0 ? electric.getGeneratorResistance() : electric.resistance(); + + if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) { + IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric(); + if (observed != null) resistance = observed.voltageGeneration() > 0 ? observed.getGeneratorResistance() : observed.resistance(); + } + + return Component.literal(TFMGUtils.formatUnits(resistance, "Ω")); + } + + @Override + protected String getTranslationKey() { + return "electricity.resistance"; + } + + @Override + protected boolean allowsLabeling(DisplayLinkContext context) { + return true; + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/VoltageDisplaySource.java b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/VoltageDisplaySource.java new file mode 100644 index 00000000..2f0437ce --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/VoltageDisplaySource.java @@ -0,0 +1,42 @@ +package com.drmangotea.tfmg.content.electricity.display_link; + +import com.drmangotea.tfmg.base.TFMGUtils; +import com.drmangotea.tfmg.content.electricity.base.IElectric; +import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour; +import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; +import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource; +import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats; +import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.level.block.entity.BlockEntity; + +public class VoltageDisplaySource extends SingleLineDisplaySource { + @Override + protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { + BlockEntity sourceBE = context.getSourceBlockEntity(); + if (!(sourceBE instanceof SmartBlockEntity smart)) + return EMPTY_LINE; + if (!(smart instanceof IElectric electric)) + return EMPTY_LINE; + + int voltage = electric.getData().getVoltage(); + + if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) { + IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric(); + if (observed != null) voltage = observed.getData().getVoltage(); + } + + return Component.literal(TFMGUtils.formatUnits(voltage, "V")); + } + + @Override + protected String getTranslationKey() { + return "electricity.voltage"; + } + + @Override + protected boolean allowsLabeling(DisplayLinkContext context) { + return true; + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/VoltageGenerationDisplaySource.java b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/VoltageGenerationDisplaySource.java new file mode 100644 index 00000000..0b350f9d --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/VoltageGenerationDisplaySource.java @@ -0,0 +1,42 @@ +package com.drmangotea.tfmg.content.electricity.display_link; + +import com.drmangotea.tfmg.base.TFMGUtils; +import com.drmangotea.tfmg.content.electricity.base.IElectric; +import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour; +import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; +import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource; +import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats; +import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.level.block.entity.BlockEntity; + +public class VoltageGenerationDisplaySource extends SingleLineDisplaySource { + @Override + protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { + BlockEntity sourceBE = context.getSourceBlockEntity(); + if (!(sourceBE instanceof SmartBlockEntity smart)) + return EMPTY_LINE; + if (!(smart instanceof IElectric electric)) + return EMPTY_LINE; + + int voltageGen = electric.voltageGeneration(); + + if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) { + IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric(); + if (observed != null) voltageGen = observed.voltageGeneration(); + } + + return Component.literal(TFMGUtils.formatUnits(voltageGen, "V")); + } + + @Override + protected String getTranslationKey() { + return "electricity.voltage_generation"; + } + + @Override + protected boolean allowsLabeling(DisplayLinkContext context) { + return true; + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/network/NetConsumptionDisplaySource.java b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/network/NetConsumptionDisplaySource.java new file mode 100644 index 00000000..294b049e --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/network/NetConsumptionDisplaySource.java @@ -0,0 +1,43 @@ +package com.drmangotea.tfmg.content.electricity.display_link.network; + +import com.drmangotea.tfmg.base.TFMGUtils; +import com.drmangotea.tfmg.content.electricity.base.IElectric; +import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour; +import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; +import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource; +import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats; +import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import com.simibubi.create.foundation.utility.CreateLang; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.level.block.entity.BlockEntity; + +public class NetConsumptionDisplaySource extends SingleLineDisplaySource { + @Override + protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { + BlockEntity sourceBE = context.getSourceBlockEntity(); + if (!(sourceBE instanceof SmartBlockEntity smart)) + return EMPTY_LINE; + if (!(smart instanceof IElectric electric)) + return EMPTY_LINE; + + int netUsage = electric.getNetworkPowerUsage(); + + if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) { + IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric(); + if (observed != null) netUsage = observed.getNetworkPowerUsage(); + } + + return Component.literal(TFMGUtils.formatUnits(netUsage, "W")); + } + + @Override + protected String getTranslationKey() { + return "electricity.network_consumption"; + } + + @Override + protected boolean allowsLabeling(DisplayLinkContext context) { + return true; + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/network/NetGenerationDisplaySource.java b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/network/NetGenerationDisplaySource.java new file mode 100644 index 00000000..a70d9038 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/network/NetGenerationDisplaySource.java @@ -0,0 +1,43 @@ +package com.drmangotea.tfmg.content.electricity.display_link.network; + +import com.drmangotea.tfmg.base.TFMGUtils; +import com.drmangotea.tfmg.content.electricity.base.IElectric; +import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour; +import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; +import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource; +import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats; +import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import com.simibubi.create.foundation.utility.CreateLang; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.level.block.entity.BlockEntity; + +public class NetGenerationDisplaySource extends SingleLineDisplaySource { + @Override + protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { + BlockEntity sourceBE = context.getSourceBlockEntity(); + if (!(sourceBE instanceof SmartBlockEntity smart)) + return EMPTY_LINE; + if (!(smart instanceof IElectric electric)) + return EMPTY_LINE; + + int netGeneration = electric.getNetworkPowerGeneration(); + + if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) { + IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric(); + if (observed != null) netGeneration = observed.getNetworkPowerGeneration(); + } + + return Component.literal(TFMGUtils.formatUnits(netGeneration, "W")); + } + + @Override + protected String getTranslationKey() { + return "electricity.network_generation"; + } + + @Override + protected boolean allowsLabeling(DisplayLinkContext context) { + return true; + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/network/NetIdDisplaySource.java b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/network/NetIdDisplaySource.java new file mode 100644 index 00000000..f691d91f --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/network/NetIdDisplaySource.java @@ -0,0 +1,43 @@ +package com.drmangotea.tfmg.content.electricity.display_link.network; + +import com.drmangotea.tfmg.content.electricity.base.IElectric; +import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour; +import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; +import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource; +import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats; +import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import com.simibubi.create.foundation.utility.CreateLang; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.level.block.entity.BlockEntity; + +public class NetIdDisplaySource extends SingleLineDisplaySource { + @Override + protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { + BlockEntity sourceBE = context.getSourceBlockEntity(); + if (!(sourceBE instanceof SmartBlockEntity smart)) + return EMPTY_LINE; + if (!(smart instanceof IElectric electric)) + return EMPTY_LINE; + + int id = electric.getData().group.id; + + if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) { + IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric(); + if (observed != null) id = observed.getData().group.id; + } + + if (id == -1) return EMPTY_LINE; + + return CreateLang.number(id).component(); + } + + @Override + protected String getTranslationKey() { + return "electricity.network_id"; + } + + @Override + protected boolean allowsLabeling(DisplayLinkContext context) { + return true; + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/network/NetResistanceDisplaySource.java b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/network/NetResistanceDisplaySource.java new file mode 100644 index 00000000..59d882fd --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/display_link/network/NetResistanceDisplaySource.java @@ -0,0 +1,42 @@ +package com.drmangotea.tfmg.content.electricity.display_link.network; + +import com.drmangotea.tfmg.base.TFMGUtils; +import com.drmangotea.tfmg.content.electricity.base.IElectric; +import com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.ObservedElectricBehaviour; +import com.simibubi.create.content.redstone.displayLink.DisplayLinkContext; +import com.simibubi.create.content.redstone.displayLink.source.SingleLineDisplaySource; +import com.simibubi.create.content.redstone.displayLink.target.DisplayTargetStats; +import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.world.level.block.entity.BlockEntity; + +public class NetResistanceDisplaySource extends SingleLineDisplaySource { + @Override + protected MutableComponent provideLine(DisplayLinkContext context, DisplayTargetStats stats) { + BlockEntity sourceBE = context.getSourceBlockEntity(); + if (!(sourceBE instanceof SmartBlockEntity smart)) + return EMPTY_LINE; + if (!(smart instanceof IElectric electric)) + return EMPTY_LINE; + + int netResistance = electric.getNetworkResistance(); + + if (smart.getBehaviour(ObservedElectricBehaviour.TYPE) != null) { + IElectric observed = smart.getBehaviour(ObservedElectricBehaviour.TYPE).getObservedElectric(); + if (observed != null) netResistance = observed.getNetworkResistance(); + } + + return Component.literal(TFMGUtils.formatUnits(netResistance, "Ω")); + } + + @Override + protected String getTranslationKey() { + return "electricity.network_resistance"; + } + + @Override + protected boolean allowsLabeling(DisplayLinkContext context) { + return true; + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/measurement/VoltMeterBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/measurement/VoltMeterBlockEntity.java index afeb6b74..c47a5248 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/measurement/VoltMeterBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/measurement/VoltMeterBlockEntity.java @@ -99,7 +99,7 @@ public class VoltMeterBlockEntity extends SmartBlockEntity implements IHaveGoggl @SuppressWarnings("removal") public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - CreateLang.text(mode.displayName) + CreateLang.translate(mode.langKey) .style(ChatFormatting.DARK_GRAY) .forGoggles(tooltip, 1); @@ -116,26 +116,25 @@ public class VoltMeterBlockEntity extends SmartBlockEntity implements IHaveGoggl public enum MeasureMode { - VOLTAGE("Voltage", "V", 500), - HIGH_VOLTAGE("Voltage (High)", "V", 10000), - CURRENT("Current", "A", 16), - RESISTANCE("Resistance", "Ω", 500), - POWER("Power", "W", 5000), - NETWORK_POWER_USAGE("Network Power Usage", "W", 50000), - NETWORK_POWER_GENERATION("Network Power Generation", "W", 50000), - CAPACITY("Capacity", "Fe", 300000), - FALLBACK("fallback", "", 0), - - + VOLTAGE("V", 500), + HIGH_VOLTAGE("V", 10000), + CURRENT("A", 16), + RESISTANCE("Ω", 500), + POWER("W", 5000), + NETWORK_POWER_USAGE("W", 50000), + NETWORK_POWER_GENERATION("W", 50000), + CAPACITY("Fe", 300000), + FALLBACK("", 0), ; - public final String displayName; + public final String unit; public final int defaultRange; + public final String langKey; - MeasureMode(String displayName, String unit, int defaultRange) { + MeasureMode(String unit, int defaultRange) { this.unit = unit; - this.displayName = displayName; this.defaultRange = defaultRange; + this.langKey = "goggles.voltmeter.mode." + this.name().toLowerCase(); } } diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/storage/AccumulatorBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/storage/AccumulatorBlockEntity.java index b217f973..cd1d2a01 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/storage/AccumulatorBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/storage/AccumulatorBlockEntity.java @@ -89,26 +89,18 @@ public class AccumulatorBlockEntity extends ElectricBlockEntity { @Override public boolean makeMultimeterTooltip(List tooltip, boolean isPlayerSneaking) { - if (!isController()) if (level.getBlockEntity(controller) instanceof AccumulatorBlockEntity be) return be.makeMultimeterTooltip(tooltip, isPlayerSneaking); - - super.makeMultimeterTooltip(tooltip, isPlayerSneaking); - - CreateLang.text("Capacity ") - .add(Component.literal(TFMGUtils.formatUnits(energy.getEnergyStored(), "FE"))) + CreateLang.translate("electricity.capacity", Component.literal(TFMGUtils.formatUnits(energy.getEnergyStored(), "FE"))) .color(0x127799) .forGoggles(tooltip, 1); - - CreateLang.text("Charging Rate ") - .add(CreateLang.number(getChargingRate())) + CreateLang.translate("electricity.charging_rate", CreateLang.number(getChargingRate())) .color(0x127799) .forGoggles(tooltip, 1); - CreateLang.text("Max Capacity ") - .add(CreateLang.number(getMaxCapacity())) + CreateLang.translate("electricity.max_capacity", CreateLang.number(getMaxCapacity())) .color(0x127799) .forGoggles(tooltip, 1); diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/converter/ConverterBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/converter/ConverterBlockEntity.java index b18dae09..32432daf 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/converter/ConverterBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/converter/ConverterBlockEntity.java @@ -179,21 +179,15 @@ public class ConverterBlockEntity extends ElectricBlockEntity { } @Override public boolean makeMultimeterTooltip(List tooltip, boolean isPlayerSneaking) { - super.makeMultimeterTooltip(tooltip, isPlayerSneaking); - - CreateLang.text("Capacity ") - .add(Component.literal(TFMGUtils.formatUnits(energy.getEnergyStored(), "FE"))) + CreateLang.translate("electricity.capacity", Component.literal(TFMGUtils.formatUnits(energy.getEnergyStored(), "FE"))) .color(0x127799) .forGoggles(tooltip, 1); - - CreateLang.text("Charging Rate ") - .add(CreateLang.number(getChargingRate())) + CreateLang.translate("electricity.charging_rate", CreateLang.number(getChargingRate())) .color(0x127799) .forGoggles(tooltip, 1); - CreateLang.text("Max Capacity ") - .add(CreateLang.number(getMaxCapacity())) + CreateLang.translate("electricity.max_capacity", CreateLang.number(getMaxCapacity())) .color(0x127799) .forGoggles(tooltip, 1); diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/TransformerBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/TransformerBlockEntity.java index 888838a1..e9eb12b2 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/TransformerBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/transformer/TransformerBlockEntity.java @@ -128,7 +128,7 @@ public class TransformerBlockEntity extends VoltageAlteringBlockEntity { super.makeMultimeterTooltip(tooltip, isPlayerSneaking); if(coilRatio!=0) { - CreateLang.text("----------------------------") + CreateLang.translate("multimeter.separator") .style(ChatFormatting.WHITE) .forGoggles(tooltip); CreateLang.translate("multimeter.transformer_ratio") diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/voltage_observer/ObservedElectricBehaviour.java b/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/voltage_observer/ObservedElectricBehaviour.java new file mode 100644 index 00000000..fe2573b1 --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/voltage_observer/ObservedElectricBehaviour.java @@ -0,0 +1,73 @@ +package com.drmangotea.tfmg.content.electricity.utilities.voltage_observer; + +import com.drmangotea.tfmg.content.electricity.base.IElectric; +import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; +import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import net.minecraft.core.BlockPos; +import net.minecraft.core.HolderLookup; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtUtils; +import net.minecraft.world.level.block.entity.BlockEntity; + +import java.util.Optional; + +public class ObservedElectricBehaviour extends BlockEntityBehaviour { + public static final BehaviourType TYPE = new BehaviourType<>(); + + BlockPos observedPos; + + public ObservedElectricBehaviour(SmartBlockEntity be) { + super(be); + } + + public BlockPos getObservedPos() { + return observedPos; + } + + public void setObservedPos(BlockPos observedPos) { + this.observedPos = observedPos; + } + + @Override + public void tick() { + super.tick(); + if (getObservedPos() != null && !isObservingElectric()) setObservedPos(null); + } + + public boolean isObservingElectric() { + if (getObservedPos() == null) return false; + BlockEntity be = getWorld().getBlockEntity(getObservedPos()); + return be instanceof IElectric; + } + + public IElectric getObservedElectric() { + if (!isObservingElectric()) return null; + BlockEntity be = getWorld().getBlockEntity(getObservedPos()); + if (be instanceof IElectric electric) { + return electric; + } else { + throw new IllegalStateException("Observed position does not contain an IElectric block entity: " + getObservedPos()); + } + } + + @Override + public void write(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { + super.write(nbt, registries, clientPacket); + if (observedPos != null) { + nbt.put("ObservedPos", NbtUtils.writeBlockPos(observedPos)); + } + } + + @Override + public void read(CompoundTag nbt, HolderLookup.Provider registries, boolean clientPacket) { + super.read(nbt, registries, clientPacket); + Optional pos = NbtUtils.readBlockPos(nbt, "ObservedPos"); + setObservedPos(pos.orElse(null)); + } + + @Override + public BehaviourType getType() { + return TYPE; + } +} diff --git a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/voltage_observer/VoltageObserverBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/voltage_observer/VoltageObserverBlockEntity.java index 71b4a153..c90aba83 100644 --- a/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/voltage_observer/VoltageObserverBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/electricity/utilities/voltage_observer/VoltageObserverBlockEntity.java @@ -4,11 +4,14 @@ package com.drmangotea.tfmg.content.electricity.utilities.voltage_observer; import com.drmangotea.tfmg.base.blocks.WallMountBlock; import com.drmangotea.tfmg.content.electricity.base.ElectricBlockEntity; import com.simibubi.create.foundation.blockEntity.ComparatorUtil; +import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import java.util.List; + import static com.drmangotea.tfmg.content.electricity.utilities.voltage_observer.VoltageObserverBlock.POWERED; @@ -16,10 +19,17 @@ public class VoltageObserverBlockEntity extends ElectricBlockEntity { boolean update = false; + ObservedElectricBehaviour observedElectricBehaviour; + public VoltageObserverBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); } + @Override + public void addBehaviours(List behaviours) { + behaviours.add(observedElectricBehaviour = new ObservedElectricBehaviour(this)); + } + @Override public void onNetworkChanged(int oldVoltage, int oldPower) { @@ -39,10 +49,17 @@ public class VoltageObserverBlockEntity extends ElectricBlockEntity { level.updateNeighborsAt(getBlockPos(), getBlockState().getBlock()); update = false; } + if (observedElectricBehaviour != null) { + observedElectricBehaviour.setObservedPos(getConnectedPos()); + } } @Override public boolean hasElectricitySlot(Direction direction) { return direction == getBlockState().getValue(WallMountBlock.FACING); } + + private BlockPos getConnectedPos() { + return getBlockPos().relative(getBlockState().getValue(WallMountBlock.FACING)); + } } diff --git a/src/main/java/com/drmangotea/tfmg/content/engines/types/AbstractSmallEngineBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/engines/types/AbstractSmallEngineBlockEntity.java index 5d23e94d..75a67309 100644 --- a/src/main/java/com/drmangotea/tfmg/content/engines/types/AbstractSmallEngineBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/engines/types/AbstractSmallEngineBlockEntity.java @@ -535,17 +535,17 @@ public abstract class AbstractSmallEngineBlockEntity extends AbstractEngineBlock public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { if (controller.asLong() == getBlockPos().asLong()) - CreateLang.text("CONTROLLER").forGoggles(tooltip); + CreateLang.translate("engine.controller.header").forGoggles(tooltip); - CreateLang.text("Shift " + shift.toString()).forGoggles(tooltip); - CreateLang.text("Speed Efficiency " + getSpeedEfficiency()).forGoggles(tooltip); - CreateLang.text("Efficiency " + efficiencyModifier()).forGoggles(tooltip); - CreateLang.text("Fuel Consumption " + getFuelConsumption()).forGoggles(tooltip); - CreateLang.text("Rpm " + rpm).forGoggles(tooltip); - CreateLang.text("length " + engineLength()).forGoggles(tooltip); - CreateLang.text("Torque " + torque).forGoggles(tooltip); - CreateLang.text("Injection Rate " + fuelInjectionRate).forGoggles(tooltip); - CreateLang.text("Signal " + highestSignal).forGoggles(tooltip); + CreateLang.translate("engine.shift", CreateLang.translate(shift.langKey)).forGoggles(tooltip); + CreateLang.translate("engine.speed_efficiency", getSpeedEfficiency()).forGoggles(tooltip); + CreateLang.translate("engine.efficiency", efficiencyModifier()).forGoggles(tooltip); + CreateLang.translate("engine.fuel_consumption", getFuelConsumption()).forGoggles(tooltip); + CreateLang.translate("engine.rpm", rpm).forGoggles(tooltip); + CreateLang.translate("engine.length", engineLength()).forGoggles(tooltip); + CreateLang.translate("engine.torque", torque).forGoggles(tooltip); + CreateLang.translate("engine.injection_rate", fuelInjectionRate).forGoggles(tooltip); + CreateLang.translate("engine.signal ", highestSignal).forGoggles(tooltip); CreateLang.number(engineNumber).style(ChatFormatting.DARK_GREEN).forGoggles(tooltip); diff --git a/src/main/java/com/drmangotea/tfmg/content/engines/types/regular_engine/RegularEngineBlockEntity.java b/src/main/java/com/drmangotea/tfmg/content/engines/types/regular_engine/RegularEngineBlockEntity.java index 595243b9..540629d9 100644 --- a/src/main/java/com/drmangotea/tfmg/content/engines/types/regular_engine/RegularEngineBlockEntity.java +++ b/src/main/java/com/drmangotea/tfmg/content/engines/types/regular_engine/RegularEngineBlockEntity.java @@ -403,35 +403,28 @@ public class RegularEngineBlockEntity extends AbstractSmallEngineBlockEntity { } - CreateLang.translate("goggles.engine.type") - .add(CreateLang.text(type.name())) + CreateLang.translate("goggles.engine.type", CreateLang.translate(type.langKey)) .color(0xfcad03) - .forGoggles(tooltip); - CreateLang.translate("goggles.engine.rpm") - .add(CreateLang.text((int)rpm+" rpm")) + .forGoggles(tooltip, 1); + CreateLang.translate("goggles.engine.rpm", (int)rpm) .color(0xa36f00) - .forGoggles(tooltip); - CreateLang.translate("goggles.engine.signal") - .add(CreateLang.text(String.valueOf(highestSignal))) + .forGoggles(tooltip, 1); + CreateLang.translate("goggles.engine.signal", highestSignal) .color(0xfcad03) - .forGoggles(tooltip); - CreateLang.translate("goggles.engine.torque") - .add(CreateLang.text(String.valueOf((int)torque))) + .forGoggles(tooltip, 1); + CreateLang.translate("goggles.engine.torque", (int)torque) .color(0xa36f00) - .forGoggles(tooltip); - CreateLang.translate("goggles.engine.fuel_consumption") - .add(CreateLang.text(getFuelConsumption()/1.5f+" mb/s")) + .forGoggles(tooltip, 1); + CreateLang.translate("goggles.engine.fuel_consumption", getFuelConsumption()/1.5f) .color(0xfcad03) - .forGoggles(tooltip); + .forGoggles(tooltip, 1); if(oil>0){ - CreateLang.translate("goggles.engine.oil") - .add(CreateLang.number(oil)) + CreateLang.translate("goggles.engine.oil", CreateLang.number(oil)) .color(0xf5dd42) .forGoggles(tooltip); } if(coolingFluid>0){ - CreateLang.translate("goggles.engine.cooling_fluid") - .add(CreateLang.number(coolingFluid)) + CreateLang.translate("goggles.engine.cooling_fluid", CreateLang.number(coolingFluid)) .color(0x51bdb9) .forGoggles(tooltip); } @@ -461,6 +454,7 @@ public class RegularEngineBlockEntity extends AbstractSmallEngineBlockEntity { public final List fluidBlacklist; public final String name; public final boolean upgradesOnSide; + public final String langKey; EngineType(String name, List positions, float speedModifier, float torqueModifier, float efficiencyModifier, boolean upgradesOnSide) { @@ -481,6 +475,7 @@ public class RegularEngineBlockEntity extends AbstractSmallEngineBlockEntity { this.effeciencyModifier = efficiencyModifier; this.fluidBlacklist = fluidBlacklist; this.upgradesOnSide = upgradesOnSide; + this.langKey = "engine.type." + name; } diff --git a/src/main/java/com/drmangotea/tfmg/content/engines/upgrades/TransmissionUpgrade.java b/src/main/java/com/drmangotea/tfmg/content/engines/upgrades/TransmissionUpgrade.java index eca2cc1e..df95834d 100644 --- a/src/main/java/com/drmangotea/tfmg/content/engines/upgrades/TransmissionUpgrade.java +++ b/src/main/java/com/drmangotea/tfmg/content/engines/upgrades/TransmissionUpgrade.java @@ -69,17 +69,18 @@ public class TransmissionUpgrade extends EngineUpgrade{ SHIFT_5(1.5f), SHIFT_6(1.9f) - - ; public final float value; public final boolean reverse; + public final String langKey; + TransmissionState(float value){ this(value,false); } TransmissionState(float value, boolean reverse){ this.value = value; this.reverse = reverse; + this.langKey = "engine.upgrade.transmission." + this.name().toLowerCase(); } } } diff --git a/src/main/java/com/drmangotea/tfmg/content/items/weapons/flamethrover/FlamethrowerFuel.java b/src/main/java/com/drmangotea/tfmg/content/items/weapons/flamethrover/FlamethrowerFuel.java index 88b188a2..f53b40b8 100644 --- a/src/main/java/com/drmangotea/tfmg/content/items/weapons/flamethrover/FlamethrowerFuel.java +++ b/src/main/java/com/drmangotea/tfmg/content/items/weapons/flamethrover/FlamethrowerFuel.java @@ -1,11 +1,13 @@ package com.drmangotea.tfmg.content.items.weapons.flamethrover; import com.drmangotea.tfmg.TFMGRegistries; +import com.drmangotea.tfmg.registry.TFMGFlamethrowerFuelTypes; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import io.netty.buffer.ByteBuf; import net.minecraft.core.Holder; import net.minecraft.core.RegistryAccess; +import net.minecraft.nbt.Tag; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceKey; @@ -29,21 +31,21 @@ public record FlamethrowerFuel(@Nullable ResourceKey fuelT ByteBufCodecs.INT, FlamethrowerFuel::amount, ByteBufCodecs.INT, - fuel -> fuel.color == 0 ? 0xFFFFFF : fuel.color, + FlamethrowerFuel::color, FlamethrowerFuel::new ); - public static final FlamethrowerFuel EMPTY = new FlamethrowerFuel(null, 0, 0xFFFFFF); + public static final FlamethrowerFuel EMPTY = new FlamethrowerFuel(TFMGFlamethrowerFuelTypes.FALLBACK, 0, 0xFFFFFF); public FlamethrowerFuel decrement(int amount) { - if (this.amount <= amount || fuelType == null) { + if (this.amount <= amount || fuelType == TFMGFlamethrowerFuelTypes.FALLBACK) { return EMPTY; } return new FlamethrowerFuel(fuelType, this.amount - amount, color); } public FlamethrowerFuel increment(int amount, int capacity) { - if (fuelType == null) { + if (fuelType == TFMGFlamethrowerFuelTypes.FALLBACK) { return EMPTY; } if (this.amount + amount > capacity) { @@ -54,7 +56,7 @@ public record FlamethrowerFuel(@Nullable ResourceKey fuelT public static FlamethrowerFuel createForType(RegistryAccess registryAccess, Fluid fluid, int amount) { Optional> type = FlamethrowerFuelType.getTypeForFluid(registryAccess, fluid); - return type.map(typeReference -> new FlamethrowerFuel(typeReference.getKey(), amount, typeReference.value().color())).orElse(null); + return type.map(typeReference -> new FlamethrowerFuel(typeReference.getKey(), amount, typeReference.value().color())).orElse(EMPTY); } public static FlamethrowerFuel createForType(RegistryAccess registryAccess, FluidStack stack) { @@ -62,14 +64,14 @@ public record FlamethrowerFuel(@Nullable ResourceKey fuelT } public boolean isEmpty() { - if (fuelType == null) { + if (fuelType == TFMGFlamethrowerFuelTypes.FALLBACK) { return true; } return this.amount <= 0; } public boolean hasFuel() { - return fuelType != null; + return fuelType != TFMGFlamethrowerFuelTypes.FALLBACK; } public Optional getFuelType(RegistryAccess registryAccess) { diff --git a/src/main/java/com/drmangotea/tfmg/content/items/weapons/flamethrover/FlamethrowerItem.java b/src/main/java/com/drmangotea/tfmg/content/items/weapons/flamethrover/FlamethrowerItem.java index f32c1d37..0cf5a2ab 100644 --- a/src/main/java/com/drmangotea/tfmg/content/items/weapons/flamethrover/FlamethrowerItem.java +++ b/src/main/java/com/drmangotea/tfmg/content/items/weapons/flamethrover/FlamethrowerItem.java @@ -1,9 +1,11 @@ package com.drmangotea.tfmg.content.items.weapons.flamethrover; import com.drmangotea.tfmg.TFMGClient; +import com.drmangotea.tfmg.TFMGRegistries; import com.drmangotea.tfmg.base.spark.Spark; import com.drmangotea.tfmg.registry.TFMGDataComponents; import com.drmangotea.tfmg.registry.TFMGEntityTypes; +import com.drmangotea.tfmg.registry.TFMGFlamethrowerFuelTypes; import com.simibubi.create.content.equipment.zapper.ShootableGadgetItemMethods; import com.simibubi.create.foundation.item.CustomArmPoseItem; import com.simibubi.create.foundation.utility.CreateLang; @@ -24,6 +26,7 @@ import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; @@ -55,6 +58,11 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem { super(pProperties); } + public void inventoryTick(ItemStack stack, Level level, Entity entity, int slotId, boolean isSelected) { + super.inventoryTick(stack, level, entity, slotId, isSelected); + if(!stack.has(TFMGDataComponents.FLAMETHROWER_FUEL)) + stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY); + } public void onUseTick(Level level, LivingEntity entity, ItemStack stack, int time) { if (stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY) == FlamethrowerFuel.EMPTY) @@ -62,18 +70,12 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem { int fuelAmount = stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY).amount(); - if(!stack.has(TFMGDataComponents.FLAMETHROWER_FUEL)) - stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY); - - - - if(fuelAmount==0) { stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY); + entity.stopUsingItem(); return; } - level.playSound(null, entity.getX(), entity.getY(), entity.getZ(), SoundEvents.FIRE_EXTINGUISH, SoundSource.NEUTRAL, 0.1F, 0.04F); FlamethrowerFuel fuel = stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY); @@ -82,18 +84,22 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem { Vec3 barrelPos = getGunBarrelVec(entity, entity.getUsedItemHand() == InteractionHand.MAIN_HAND, new Vec3(.75f, -0.65f, 1.5f)); - - - for(int i =0; i < fuelType.amount(); i++) { - Spark spark = TFMGEntityTypes.SPARK.create(level); - if (spark != null) { - spark.setPos(barrelPos.x, barrelPos.y, barrelPos.z); - spark.shoot(entity.getLookAngle().x, entity.getLookAngle().y, entity.getLookAngle().z, fuelType.speed(), fuelType.spread()); - level.addFreshEntity(spark); - stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, fuel.decrement(1)); + if (fuel.fuelType() != TFMGFlamethrowerFuelTypes.FALLBACK && fuel.amount() > 0) { + int amountToFire = Math.min(fuelType.amount(), fuel.amount()); + for(int i =0; i < amountToFire; i++) { + Spark spark = TFMGEntityTypes.SPARK.create(level); + if (spark != null) { + spark.setPos(barrelPos.x, barrelPos.y, barrelPos.z); + spark.shoot(entity.getLookAngle().x, entity.getLookAngle().y, entity.getLookAngle().z, fuelType.speed(), fuelType.spread()); + level.addFreshEntity(spark); + } } + int fuelConsumed = level.random.nextIntBetweenInclusive(amountToFire / 2, amountToFire); + stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, fuel.decrement(fuelConsumed)); + } else { + stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY); + entity.stopUsingItem(); } - } public static Vec3 getGunBarrelVec(LivingEntity entity, boolean mainHand, Vec3 rightHandForward) { @@ -110,7 +116,7 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem { @Override public boolean isBarVisible(ItemStack stack) { - if(!stack.has(TFMGDataComponents.FLAMETHROWER_FUEL) || stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY).isEmpty()) + if(!stack.has(TFMGDataComponents.FLAMETHROWER_FUEL)) return false; return !stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY).isEmpty(); @@ -175,8 +181,8 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem { int toDrain = Math.min(FUEL_CAPACITY - containedFuel, fluidStack.getAmount()); FluidStack stackToDrain = fluidStack.copyWithAmount(toDrain); FlamethrowerFuel fuel = FlamethrowerFuel.createForType(level.registryAccess(), fluidStack.getFluid(), toDrain); - if (fuel == null) continue; - if (fuelType != null) { + if (fuel == FlamethrowerFuel.EMPTY) continue; + if (fuelType != TFMGFlamethrowerFuelTypes.FALLBACK) { if (fuelType.equals(fuel.fuelType())) { stack.set(TFMGDataComponents.FLAMETHROWER_FUEL, existingFuel.increment(toDrain, FUEL_CAPACITY)); capability.drain(stackToDrain, IFluidHandler.FluidAction.EXECUTE); @@ -199,8 +205,8 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem { @Nullable public static FlamethrowerFuelType getFuel(RegistryAccess registryAccess, ItemStack heldStack) { - var type = heldStack.get(TFMGDataComponents.FLAMETHROWER_FUEL).getFuelType(registryAccess); - return type.orElse(null); + var type = heldStack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY).getFuelType(registryAccess); + return type.orElse(registryAccess.registryOrThrow(TFMGRegistries.FLAMETHROWER_FUEL_TYPE).get(TFMGFlamethrowerFuelTypes.FALLBACK)); } @Override @@ -215,13 +221,16 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem { super.appendHoverText(stack, context, tooltip, flag); return; } + FlamethrowerFuelType fallback = player.registryAccess().registryOrThrow(TFMGRegistries.FLAMETHROWER_FUEL_TYPE).get(TFMGFlamethrowerFuelTypes.FALLBACK); FlamethrowerFuelType fuelType = getFuel(player.registryAccess(), stack); - if (fuelType == null) { + FlamethrowerFuel fuel = stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY); + + if (fuelType == fallback || !fuel.hasFuel()) { super.appendHoverText(stack, context, tooltip, flag); return; } + FluidStack fuelFluid = new FluidStack(fuelType.fluids().get(0).value(), 1); - FlamethrowerFuel fuel = stack.getOrDefault(TFMGDataComponents.FLAMETHROWER_FUEL, FlamethrowerFuel.EMPTY); String _spread = "flamethrower.fuel.spread"; String _speed = "flamethrower.fuel.speed"; @@ -284,6 +293,11 @@ public class FlamethrowerItem extends Item implements CustomArmPoseItem { return slotChanged || newStack.getItem() != oldStack.getItem(); } + @Override + public boolean onEntitySwing(ItemStack stack, LivingEntity entity, InteractionHand hand) { + return true; + } + @Override @Nullable public HumanoidModel.ArmPose getArmPose(ItemStack stack, AbstractClientPlayer player, InteractionHand hand) { diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java index 24886fba..e1d106da 100644 --- a/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGBlocks.java @@ -111,6 +111,7 @@ import com.drmangotea.tfmg.content.machinery.vat.base.VatBlock; import com.drmangotea.tfmg.content.machinery.vat.base.VatGenerator; import com.drmangotea.tfmg.content.machinery.vat.electrode_holder.ElectrodeHolderBlock; import com.drmangotea.tfmg.content.machinery.vat.industrial_mixer.IndustrialMixerBlock; +import com.simibubi.create.AllDisplaySources; import com.simibubi.create.AllTags; import com.simibubi.create.api.stress.BlockStressValues; import com.simibubi.create.content.contraptions.bearing.StabilizedBearingMovementBehaviour; @@ -151,6 +152,7 @@ import java.util.Map; import static com.drmangotea.tfmg.TFMG.REGISTRATE; import static com.drmangotea.tfmg.base.TFMGBuilderTransformers.*; import static com.drmangotea.tfmg.content.electricity.lights.LightBulbBlock.LIGHT; +import static com.simibubi.create.api.behaviour.display.DisplaySource.displaySource; import static com.simibubi.create.api.behaviour.movement.MovementBehaviour.movementBehaviour; import static com.simibubi.create.api.contraption.storage.fluid.MountedFluidStorageType.mountedFluidStorage; import static com.simibubi.create.foundation.data.BlockStateGen.axisBlock; @@ -1206,6 +1208,16 @@ public class TFMGBlocks { .transform(pickaxeOnly()) .properties(BlockBehaviour.Properties::noOcclusion) .blockstate(new VoltageObserverGenerator()::generate) + .transform(displaySource(TFMGDisplaySources.CURRENT)) + .transform(displaySource(TFMGDisplaySources.POWER_USAGE)) + .transform(displaySource(TFMGDisplaySources.RESISTANCE)) + .transform(displaySource(TFMGDisplaySources.VOLTAGE)) + .transform(displaySource(TFMGDisplaySources.POWER_GENERATION)) + .transform(displaySource(TFMGDisplaySources.VOLTAGE_GENERATION)) + .transform(displaySource(TFMGDisplaySources.NETWORK_CONSUMPTION)) + .transform(displaySource(TFMGDisplaySources.NETWORK_GENERATION)) + .transform(displaySource(TFMGDisplaySources.NETWORK_ID)) + .transform(displaySource(TFMGDisplaySources.NETWORK_RESISTANCE)) .item() .transform(customItemModel()) .register(); diff --git a/src/main/java/com/drmangotea/tfmg/registry/TFMGDisplaySources.java b/src/main/java/com/drmangotea/tfmg/registry/TFMGDisplaySources.java new file mode 100644 index 00000000..8ac50eed --- /dev/null +++ b/src/main/java/com/drmangotea/tfmg/registry/TFMGDisplaySources.java @@ -0,0 +1,38 @@ +package com.drmangotea.tfmg.registry; + +import com.drmangotea.tfmg.TFMG; +import com.drmangotea.tfmg.base.TFMGRegistrate; +import com.drmangotea.tfmg.content.electricity.display_link.*; +import com.drmangotea.tfmg.content.electricity.display_link.network.NetConsumptionDisplaySource; +import com.drmangotea.tfmg.content.electricity.display_link.network.NetGenerationDisplaySource; +import com.drmangotea.tfmg.content.electricity.display_link.network.NetIdDisplaySource; +import com.drmangotea.tfmg.content.electricity.display_link.network.NetResistanceDisplaySource; +import com.simibubi.create.api.behaviour.display.DisplaySource; +import com.tterrag.registrate.util.entry.RegistryEntry; + +import java.util.function.Supplier; + +public class TFMGDisplaySources { + private static final TFMGRegistrate REGISTRATE = TFMG.registrate(); + + // Electricity Display Sources + public static final RegistryEntry CURRENT = simple("current", CurrentDisplaySource::new); + public static final RegistryEntry POWER_USAGE = simple("power_usage", PowerUsageDisplaySource::new); + public static final RegistryEntry RESISTANCE = simple("resistance", ResistanceDisplaySource::new); + public static final RegistryEntry VOLTAGE = simple("voltage", VoltageDisplaySource::new); + public static final RegistryEntry POWER_GENERATION = simple("power_generation", PowerGenerationDisplaySource::new); + public static final RegistryEntry VOLTAGE_GENERATION = simple("voltage_generation", VoltageGenerationDisplaySource::new); + // Electricity Network Display Sources + public static final RegistryEntry NETWORK_CONSUMPTION = simple("network_consumption", NetConsumptionDisplaySource::new); + public static final RegistryEntry NETWORK_GENERATION = simple("network_generation", NetGenerationDisplaySource::new); + public static final RegistryEntry NETWORK_ID = simple("network_id", NetIdDisplaySource::new); + public static final RegistryEntry NETWORK_RESISTANCE = simple("network_resistance", NetResistanceDisplaySource::new); + + + private static RegistryEntry simple(String name, Supplier supplier) { + return REGISTRATE.displaySource(name, supplier).register(); + } + + public static void init() { + } +} diff --git a/src/main/resources/assets/tfmg/lang/default/interface.json b/src/main/resources/assets/tfmg/lang/default/interface.json index 04f0682b..3aa54380 100644 --- a/src/main/resources/assets/tfmg/lang/default/interface.json +++ b/src/main/resources/assets/tfmg/lang/default/interface.json @@ -68,13 +68,13 @@ "create.goggles.voltmeter.range": " Range: %1$s", "create.goggles.engine.header": "Engine Info", - "create.goggles.engine.type": " Type: ", - "create.goggles.engine.rpm": " Speed: ", - "create.goggles.engine.signal": " Signal: ", - "create.goggles.engine.torque": " Torque:", - "create.goggles.engine.fuel_consumption": " Fuel Consumption:", - "create.goggles.engine.oil": "Oil: ", - "create.goggles.engine.cooling_fluid": "Cooling Fluid: ", + "create.goggles.engine.type": "Type: %s", + "create.goggles.engine.rpm": "Speed: %s RPM", + "create.goggles.engine.signal": "Signal: %s", + "create.goggles.engine.torque": "Torque: %s", + "create.goggles.engine.fuel_consumption": "Fuel Consumption: %s mB/s", + "create.goggles.engine.oil": "Oil: %s", + "create.goggles.engine.cooling_fluid": "Cooling Fluid: %s", "create.goggles.engine.unfinished": "Engine Unfinished", "create.goggles.engine.next_component": " Next Component: ", "create.goggles.engine.pistons_missing": "Pistons Missing", @@ -143,16 +143,73 @@ "tfmg.keyinfo.transmission_shift_down": "Transmission Shift Down", "create.multimeter.header": "Multimeter Data:", + "create.multimeter.separator": "----------------------------", + "create.multimeter.insufficient_power": "NOT ENOUGHT POWER", "create.multimeter.additional_values": "Additional Values:", "create.multimeter.power_usage": " Power Usage: ", - "create.multimeter.group": " Group: ", - "create.multimeter.voltage_generated": " Voltage Generated: ", - "create.multimeter.power_generated": " Power Generated: ", + "create.multimeter.group": " Group: %s", + "create.multimeter.voltage_generated": " Voltage Generated: %s", + "create.multimeter.power_generated": " Power Generated: %s", "create.multimeter.power_percentage": " Grid Strength: ", "create.multimeter.energy_usage": " Energy Usage: ", "create.multimeter.energy_stored": " Energy Stored: ", + "create.multimeter.network.generation": "Network Power Generation: %s", + "create.multimeter.network.consumption": "Network Power Consumption: %s", "create.multimeter.transformer_ratio": " Turn Ratio: ", + "create.electricity.capacity": "Capacity: %s", + "create.electricity.charging_rate": "Charging Rate: %s", + "create.electricity.max_capacity": "Max Capacity: %s", + + "create.engine.controller.header": "Engine Controller", + "create.engine.shift": "Shift: %s", + "create.engine.speed_efficiency": "Speed Efficiency: %s", + "create.engine.efficiency": "Efficiency: %s", + "create.engine.fuel_consumption": "Fuel Consumption: %s", + "create.engine.rpm": "RPM: %s", + "create.engine.length": "Length: %s", + "create.engine.torque": "Torque: %s", + "create.engine.injection_rate": "Injection Rate: %s", + "create.engine.signal": "Signal: %s", + + "create.engine.upgrade.transmission.reverse": "Reverse", + "create.engine.upgrade.transmission.neutral": "Neutral", + "create.engine.upgrade.transmission.shift_1": "1st Gear", + "create.engine.upgrade.transmission.shift_2": "2nd Gear", + "create.engine.upgrade.transmission.shift_3": "3rd Gear", + "create.engine.upgrade.transmission.shift_4": "4th Gear", + "create.engine.upgrade.transmission.shift_5": "5th Gear", + "create.engine.upgrade.transmission.shift_6": "6th Gear", + + "create.engine.type.engine_i": "I", + "create.engine.type.engine_v": "V", + "create.engine.type.engine_w": "W", + "create.engine.type.engine_u": "U", + "create.engine.type.boxer": "Boxer", + "create.engine.type.radial": "Radial", + "create.engine.type.turbine": "Turbine", + + "create.goggles.voltmeter.mode.voltage": "Voltage", + "create.goggles.voltmeter.mode.high_voltage": "Voltage (High)", + "create.goggles.voltmeter.mode.current": "Current", + "create.goggles.voltmeter.mode.resistance": "Resistance", + "create.goggles.voltmeter.mode.power": "Power", + "create.goggles.voltmeter.mode.net_power_use": "Network Power Usage", + "create.goggles.voltmeter.mode.net_power_gen": "Network Power Generation", + "create.goggles.voltmeter.mode.capacity": "Capacity", + "create.goggles.voltmeter.mode.fallback": "Fallback", + + "tfmg.display_source.electricity.power_usage": "Power Usage", + "tfmg.display_source.electricity.network_resistance": "Network Resistance", + "tfmg.display_source.electricity.voltage": "Voltage", + "tfmg.display_source.electricity.network_consumption": "Network Power Consumption", + "tfmg.display_source.electricity.current": "Current", + "tfmg.display_source.electricity.network_id": "Network ID", + "tfmg.display_source.electricity.resistance": "Resistance", + "tfmg.display_source.electricity.network_generation": "Network Power Generation", + "tfmg.display_source.electricity.power_generation": "Power Generation", + "tfmg.display_source.electricity.voltage_generation": "Voltage Generation", + "item.minecraft.potion.effect.hellfire_potion": "Potion of Hellfire", "item.minecraft.splash_potion.effect.hellfire_potion": "Splash Potion of Hellfire", "item.minecraft.lingering_potion.effect.hellfire_potion": "Lingering Potion of Hellfire",