Skip to content

Commit

Permalink
fixed heat vents
Browse files Browse the repository at this point in the history
  • Loading branch information
RecursivePineapple committed Oct 11, 2024
1 parent 996462f commit d5c1b89
Show file tree
Hide file tree
Showing 10 changed files with 7,276 additions and 6,958 deletions.
Original file line number Diff line number Diff line change
@@ -1,67 +1,36 @@
package com.recursive_pineapple.nuclear_horizons.reactors.items.basic;

import java.util.Arrays;
import java.util.List;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

import org.lwjgl.input.Keyboard;

import com.recursive_pineapple.nuclear_horizons.Config;
import com.recursive_pineapple.nuclear_horizons.NuclearHorizons;
import com.recursive_pineapple.nuclear_horizons.reactors.components.ComponentRegistry;
import com.recursive_pineapple.nuclear_horizons.reactors.components.IComponentAdapter;
import com.recursive_pineapple.nuclear_horizons.reactors.components.IComponentAdapterFactory;
import com.recursive_pineapple.nuclear_horizons.reactors.components.IReactorGrid;
import com.recursive_pineapple.nuclear_horizons.reactors.components.adapters.FuelRodAdapter;
import com.recursive_pineapple.nuclear_horizons.reactors.items.HeatUtils;
import com.recursive_pineapple.nuclear_horizons.reactors.items.interfaces.IBasicFuelRod;

import cpw.mods.fml.common.registry.GameRegistry;

public class BasicFuelRodItem extends Item implements IBasicFuelRod, IComponentAdapterFactory {
public class BasicFuelRodItem extends ReactorItem implements IBasicFuelRod {

private final String name;
private final double energyMult;
private final double heatMult;
private final int rodCount;
private final boolean isMox;
private final int maxHealth;
private ItemStack product;

public BasicFuelRodItem(String name, String textureName, double energyMult, double heatMult, int rodCount,
boolean isMox, int maxHealth) {
setUnlocalizedName(name);
setTextureName(NuclearHorizons.MODID + ":" + textureName);
setMaxDamage(maxHealth);
super(name, textureName, "damage", maxHealth);

this.name = name;
this.energyMult = energyMult;
this.heatMult = heatMult;
this.rodCount = rodCount;
this.isMox = isMox;
this.maxHealth = maxHealth;
}

public void register() {
GameRegistry.registerItem(this, name);
ComponentRegistry.registerAdapter(this, this);
}

@Override
public int getDamage(ItemStack stack) {
return HeatUtils.getNBTInt(stack, "damage", 0);
}

@Override
public void setDamage(ItemStack stack, int damage) {
HeatUtils.setNBTInt(stack, "damage", damage);
}

@Override
Expand All @@ -84,11 +53,6 @@ public boolean isMox(@Nonnull ItemStack itemStack) {
return isMox;
}

@Override
public int getRemainingHealth(@Nonnull ItemStack itemStack) {
return this.maxHealth - itemStack.getItemDamage();
}

@Override
public void applyDamage(@Nonnull ItemStack itemStack, int damage) {
itemStack.setItemDamage(itemStack.getItemDamage() + damage);
Expand All @@ -104,54 +68,25 @@ public BasicFuelRodItem setProduct(@Nullable ItemStack product) {
return this;
}

@Override
public boolean canAdaptItem(@Nonnull ItemStack itemStack) {
return itemStack.getItem() == this;
}

@Override
public @Nonnull IComponentAdapter getAdapter(@Nonnull ItemStack itemStack, @Nonnull IReactorGrid reactor, int x,
int y) {
return new FuelRodAdapter(reactor, x, y, itemStack, this);
}

@Override
public void addInformation(ItemStack itemStack, EntityPlayer player, List<String> desc,
boolean advancedItemTooltips) {
super.addInformation(itemStack, player, desc, advancedItemTooltips);

if (!advancedItemTooltips) {
desc.addAll(
Arrays.asList(
I18n.format("nh_tooltip.durability", this.getRemainingHealth(itemStack), this.maxHealth)
.split("\\\\n")));
public void addReactorItemInfo(ItemStack itemStack, EntityPlayer player, List<String> chunks) {
chunks.add(
I18n.format(
"nh_tooltip.fuel_rod.gen_stats",
(int) (this.heatMult * Config.ROD_HU_MULTIPLIER),
(int) (this.energyMult * Config.ROD_EU_MULTIPLIER),
1 + this.rodCount / 2));

if (this.isMox) {
chunks.add(I18n.format("nh_tooltip.fuel_rod.mox_stats", Config.MOX_EU_COEFFICIENT));
}

if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) {
desc.add(I18n.format("nh_tooltip.prelude"));

desc.addAll(
Arrays.asList(
I18n.format(
"nh_tooltip.fuel_rod.gen_stats",
(int) (this.heatMult * Config.ROD_HU_MULTIPLIER),
(int) (this.energyMult * Config.ROD_EU_MULTIPLIER),
1 + this.rodCount / 2)
.split("\\\\n")));

if (this.isMox) {
desc.addAll(
Arrays.asList(
I18n.format("nh_tooltip.fuel_rod.mox_stats", Config.MOX_EU_COEFFICIENT)
.split("\\\\n")));
}

desc.addAll(
Arrays.asList(
I18n.format("nh_tooltip.fuel_rod.heat_epilogue")
.split("\\\\n")));
} else {
desc.add(I18n.format("nh_tooltip.more_info"));
}
chunks.add(I18n.format("nh_tooltip.fuel_rod.heat_epilogue"));
}
}
Original file line number Diff line number Diff line change
@@ -1,98 +1,43 @@
package com.recursive_pineapple.nuclear_horizons.reactors.items.basic;

import java.util.List;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

import com.recursive_pineapple.nuclear_horizons.NuclearHorizons;
import com.recursive_pineapple.nuclear_horizons.reactors.components.ComponentRegistry;
import com.recursive_pineapple.nuclear_horizons.reactors.components.IComponentAdapter;
import com.recursive_pineapple.nuclear_horizons.reactors.components.IComponentAdapterFactory;
import com.recursive_pineapple.nuclear_horizons.reactors.components.IReactorGrid;
import com.recursive_pineapple.nuclear_horizons.reactors.components.adapters.HeatAbsorberAdapter;
import com.recursive_pineapple.nuclear_horizons.reactors.items.HeatUtils;
import com.recursive_pineapple.nuclear_horizons.reactors.items.interfaces.IHeatContainer;

import cpw.mods.fml.common.registry.GameRegistry;

public class BasicHeatAbsorberItem extends Item implements IHeatContainer, IComponentAdapterFactory {
public class BasicHeatAbsorberItem extends ReactorItem implements IHeatContainer {

private final String name;
private final int maxHeat;
private final boolean consumable;

private ItemStack product;

public BasicHeatAbsorberItem(String name, String textureName, int maxHeat, boolean consumable) {
setUnlocalizedName(name);
setTextureName(NuclearHorizons.MODID + ":" + textureName);
setMaxDamage(maxHeat);
super(name, textureName, "heat", maxHeat);

this.name = name;
this.maxHeat = maxHeat;
this.consumable = consumable;
}

public void register() {
GameRegistry.registerItem(this, name);
ComponentRegistry.registerAdapter(this, this);
}

@Override
public int getDamage(ItemStack stack) {
return HeatUtils.getNBTInt(stack, "neutrons", 0);
}

@Override
public void setDamage(ItemStack stack, int damage) {
HeatUtils.setNBTInt(stack, "neutrons", damage);
public int getStoredHeat(@Nonnull ItemStack itemStack) {
return 0;
}

public void setProduct(ItemStack product) {
this.product = product;
}

@Override
public boolean canAdaptItem(@Nonnull ItemStack itemStack) {
return itemStack.getItem() == this;
}

@Override
public @Nonnull IComponentAdapter getAdapter(@Nonnull ItemStack itemStack, @Nonnull IReactorGrid reactor, int x,
int y) {
return new HeatAbsorberAdapter(reactor, x, y, itemStack, this);
}

@Override
public int getStoredHeat(@Nonnull ItemStack itemStack) {
return 0;
}

@Override
public int getRemainingHealth(@Nonnull ItemStack itemStack) {
return this.maxHeat - itemStack.getItemDamage();
}

@Override
public int addHeat(@Nonnull ItemStack itemStack, int heat) {
int consumed = HeatUtils.getConsumableHeat(this.maxHeat, itemStack.getItemDamage(), heat);

itemStack.setItemDamage(itemStack.getItemDamage() + consumed);

return heat - consumed;
}

@Override
public int getMaxHeat(@Nonnull ItemStack itemStack) {
return this.maxHeat;
}

@Override
public boolean isConsumable(@Nonnull ItemStack itemStack) {
return consumable;
Expand All @@ -104,10 +49,12 @@ public boolean isConsumable(@Nonnull ItemStack itemStack) {
}

@Override
public void addInformation(ItemStack itemStack, EntityPlayer player, List<String> desc,
boolean advancedItemTooltips) {
super.addInformation(itemStack, player, desc, advancedItemTooltips);
protected String getDurabilityTooltip(ItemStack itemStack) {
return I18n.format("nh_tooltip.stored_heat", itemStack.getItemDamage(), itemStack.getMaxDamage());
}

desc.add(I18n.format("nh_tooltip.durability", itemStack.getItemDamage(), this.maxHeat));
@Override
protected boolean hasMoreInfo(ItemStack itemStack) {
return false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,73 +6,25 @@

import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

import org.lwjgl.input.Keyboard;

import com.recursive_pineapple.nuclear_horizons.NuclearHorizons;
import com.recursive_pineapple.nuclear_horizons.reactors.components.ComponentRegistry;
import com.recursive_pineapple.nuclear_horizons.reactors.components.IComponentAdapter;
import com.recursive_pineapple.nuclear_horizons.reactors.components.IComponentAdapterFactory;
import com.recursive_pineapple.nuclear_horizons.reactors.components.IReactorGrid;
import com.recursive_pineapple.nuclear_horizons.reactors.components.adapters.HeatMoverAdapter;
import com.recursive_pineapple.nuclear_horizons.reactors.items.HeatUtils;
import com.recursive_pineapple.nuclear_horizons.reactors.items.interfaces.IHeatMover;

import cpw.mods.fml.common.registry.GameRegistry;

public class BasicHeatExchangerItem extends Item implements IHeatMover, IComponentAdapterFactory {
public class BasicHeatExchangerItem extends ReactorItem implements IHeatMover {

private final String name;
private final int maxHeatFromReactor;
private final int maxHeatFromNeighbour;
private final int maxHeat;

public BasicHeatExchangerItem(String name, String textureName, int maxHeatFromReactor, int maxHeatFromNeighbour,
int maxHeat) {
setUnlocalizedName(name);
setTextureName(NuclearHorizons.MODID + ":" + textureName);
setMaxDamage(maxHeat);
super(name, textureName, "heat", maxHeat);

this.name = name;
this.maxHeatFromReactor = maxHeatFromReactor;
this.maxHeatFromNeighbour = maxHeatFromNeighbour;
this.maxHeat = maxHeat;
}

public void register() {
GameRegistry.registerItem(this, name);
ComponentRegistry.registerAdapter(this, this);
}

@Override
public int getDamage(ItemStack stack) {
return HeatUtils.getNBTInt(stack, "heat", 0);
}

@Override
public void setDamage(ItemStack stack, int damage) {
HeatUtils.setNBTInt(stack, "heat", damage);
}

@Override
public int getStoredHeat(@Nonnull ItemStack itemStack) {
return itemStack.getItemDamage();
}

@Override
public int addHeat(@Nonnull ItemStack itemStack, int heat) {
int consumed = HeatUtils.getConsumableHeat(this.maxHeat, this.getStoredHeat(itemStack), heat);

itemStack.setItemDamage(itemStack.getItemDamage() + consumed);

return heat - consumed;
}

@Override
public int getMaxHeat(@Nonnull ItemStack itemStack) {
return this.maxHeat;
}

@Override
Expand All @@ -99,38 +51,27 @@ public int getTransferToAir(@Nonnull ItemStack itemStack, @Nonnull IReactorGrid
return 0;
}

@Override
public boolean canAdaptItem(@Nonnull ItemStack itemStack) {
return itemStack.getItem() == this;
}

@Override
public @Nonnull IComponentAdapter getAdapter(@Nonnull ItemStack itemStack, @Nonnull IReactorGrid reactor, int x,
int y) {
return new HeatMoverAdapter(reactor, x, y, itemStack, this);
}

@Override
public void addInformation(ItemStack itemStack, EntityPlayer player, List<String> desc,
boolean advancedItemTooltips) {
super.addInformation(itemStack, player, desc, advancedItemTooltips);
public void addReactorItemInfo(ItemStack itemStack, EntityPlayer player, List<String> chunks) {
chunks.add(I18n.format("nh_tooltip.prelude"));

if (this.maxHeat > 0) {
desc.add(I18n.format("nh_tooltip.durability", this.getStoredHeat(itemStack), this.maxHeat));
if (this.maxHeatFromReactor > 0) {
chunks.add(I18n.format("nh_tooltip.mover.reactor_xfer", this.maxHeatFromReactor));
}

if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) {
desc.add(I18n.format("nh_tooltip.prelude"));

if (this.maxHeatFromReactor > 0) {
desc.add(I18n.format("nh_tooltip.mover.reactor_xfer", this.maxHeatFromReactor));
}

if (this.maxHeatFromNeighbour > 0) {
desc.add(I18n.format("nh_tooltip.exchanger.comp_xfer", this.maxHeatFromNeighbour));
}
} else {
desc.add(I18n.format("nh_tooltip.more_info"));
if (this.maxHeatFromNeighbour > 0) {
chunks.add(I18n.format("nh_tooltip.exchanger.comp_xfer", this.maxHeatFromNeighbour));
}
}

@Override
protected String getDurabilityTooltip(ItemStack itemStack) {
return I18n.format("nh_tooltip.stored_heat", itemStack.getItemDamage(), itemStack.getMaxDamage());
}
}
Loading

0 comments on commit d5c1b89

Please sign in to comment.