mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
slightly improved contamination code
This commit is contained in:
parent
fe0ccbbe67
commit
0556bf3e31
@ -1,5 +1,6 @@
|
|||||||
package com.hbm.inventory.gui;
|
package com.hbm.inventory.gui;
|
||||||
|
|
||||||
|
import org.lwjgl.input.Keyboard;
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import com.hbm.inventory.container.ContainerFEL;
|
import com.hbm.inventory.container.ContainerFEL;
|
||||||
@ -10,6 +11,7 @@ import com.hbm.tileentity.machine.TileEntityFEL;
|
|||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||||
|
import net.minecraft.client.gui.GuiTextField;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
@ -18,6 +20,7 @@ public class GUIFEL extends GuiInfoContainer {
|
|||||||
|
|
||||||
public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_fel.png");
|
public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_fel.png");
|
||||||
private TileEntityFEL fel;
|
private TileEntityFEL fel;
|
||||||
|
private GuiTextField field;
|
||||||
|
|
||||||
public GUIFEL(InventoryPlayer invPlayer, TileEntityFEL laser) {
|
public GUIFEL(InventoryPlayer invPlayer, TileEntityFEL laser) {
|
||||||
super(new ContainerFEL(invPlayer, laser));
|
super(new ContainerFEL(invPlayer, laser));
|
||||||
@ -27,6 +30,20 @@ public class GUIFEL extends GuiInfoContainer {
|
|||||||
this.ySize = 168;
|
this.ySize = 168;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initGui() {
|
||||||
|
|
||||||
|
super.initGui();
|
||||||
|
|
||||||
|
Keyboard.enableRepeatEvents(true);
|
||||||
|
this.field = new GuiTextField(this.fontRendererObj, guiLeft + 57, guiTop + 57, 29, 12);
|
||||||
|
this.field.setTextColor(-1);
|
||||||
|
this.field.setDisabledTextColour(-1);
|
||||||
|
this.field.setEnableBackgroundDrawing(false);
|
||||||
|
this.field.setMaxStringLength(3);
|
||||||
|
this.field.setText(String.valueOf(fel.watts));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||||
super.drawScreen(mouseX, mouseY, f);
|
super.drawScreen(mouseX, mouseY, f);
|
||||||
@ -41,6 +58,8 @@ public class GUIFEL extends GuiInfoContainer {
|
|||||||
|
|
||||||
protected void mouseClicked(int x, int y, int i) {
|
protected void mouseClicked(int x, int y, int i) {
|
||||||
super.mouseClicked(x, y, i);
|
super.mouseClicked(x, y, i);
|
||||||
|
|
||||||
|
this.field.mouseClicked(x, y, i);
|
||||||
|
|
||||||
for(int k = 0; k < 6; k++) {
|
for(int k = 0; k < 6; k++) {
|
||||||
|
|
||||||
@ -64,8 +83,13 @@ public class GUIFEL extends GuiInfoContainer {
|
|||||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||||
|
|
||||||
|
if(field.isFocused())
|
||||||
|
drawTexturedModalRect(guiLeft + 53, guiTop + 53, 210, 4, 34, 16);
|
||||||
|
|
||||||
int mode = fel.mode;
|
int mode = fel.mode;
|
||||||
drawTexturedModalRect(guiLeft + 133, guiTop + 16 + mode * 9, 176, 52 + mode * 9, 18, 9);
|
drawTexturedModalRect(guiLeft + 133, guiTop + 16 + mode * 9, 176, 52 + mode * 9, 18, 9);
|
||||||
|
|
||||||
|
this.field.drawTextBox();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,6 +11,7 @@ public class TileEntityFEL extends TileEntityMachineBase {
|
|||||||
|
|
||||||
public long power;
|
public long power;
|
||||||
public static final long maxPower = 1000000;
|
public static final long maxPower = 1000000;
|
||||||
|
public int watts;
|
||||||
public int mode = 0;
|
public int mode = 0;
|
||||||
|
|
||||||
public TileEntityFEL() {
|
public TileEntityFEL() {
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import com.hbm.entity.mob.EntityNuclearCreeper;
|
|||||||
import com.hbm.entity.mob.EntityQuackos;
|
import com.hbm.entity.mob.EntityQuackos;
|
||||||
import com.hbm.extprop.HbmLivingProps;
|
import com.hbm.extprop.HbmLivingProps;
|
||||||
import com.hbm.handler.HazmatRegistry;
|
import com.hbm.handler.HazmatRegistry;
|
||||||
|
import com.hbm.lib.ModDamageSource;
|
||||||
import com.hbm.potion.HbmPotion;
|
import com.hbm.potion.HbmPotion;
|
||||||
import com.hbm.saveddata.RadiationSavedData;
|
import com.hbm.saveddata.RadiationSavedData;
|
||||||
|
|
||||||
@ -111,9 +112,6 @@ public class ContaminationUtil {
|
|||||||
|
|
||||||
if(!(e instanceof EntityLivingBase))
|
if(!(e instanceof EntityLivingBase))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(e instanceof IRadiationImmune)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if(e instanceof EntityPlayer && ((EntityPlayer)e).capabilities.isCreativeMode)
|
if(e instanceof EntityPlayer && ((EntityPlayer)e).capabilities.isCreativeMode)
|
||||||
return;
|
return;
|
||||||
@ -236,4 +234,60 @@ public class ContaminationUtil {
|
|||||||
player.addChatMessage(new ChatComponentTranslation("digamma.playerHealth").appendSibling(new ChatComponentText(EnumChatFormatting.RED + " " + halflife + "%")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.LIGHT_PURPLE)));
|
player.addChatMessage(new ChatComponentTranslation("digamma.playerHealth").appendSibling(new ChatComponentText(EnumChatFormatting.RED + " " + halflife + "%")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.LIGHT_PURPLE)));
|
||||||
player.addChatMessage(new ChatComponentTranslation("digamma.playerRes").appendSibling(new ChatComponentText(EnumChatFormatting.BLUE + " " + "N/A")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.LIGHT_PURPLE)));
|
player.addChatMessage(new ChatComponentTranslation("digamma.playerRes").appendSibling(new ChatComponentText(EnumChatFormatting.BLUE + " " + "N/A")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.LIGHT_PURPLE)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static enum HazardType {
|
||||||
|
MONOXIDE,
|
||||||
|
RADIATION,
|
||||||
|
ASBESTOS,
|
||||||
|
DIGAMMA
|
||||||
|
}
|
||||||
|
|
||||||
|
public static enum ContaminationType {
|
||||||
|
GAS, //filterable by gas mask
|
||||||
|
GAS_NON_REACTIVE, //not filterable by gas mask
|
||||||
|
GOGGLES, //preventable by goggles
|
||||||
|
FARADAY, //preventable by metal armor
|
||||||
|
HAZMAT, //preventable by hazmat
|
||||||
|
HAZMAT2, //preventable by heavy hazmat
|
||||||
|
DIGAMMA, //preventable by fau armor or stability
|
||||||
|
DIGAMMA2, //preventable by robes
|
||||||
|
CREATIVE, //preventable by creative mode
|
||||||
|
NONE //not preventable
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean contaminate(EntityLivingBase entity, HazardType hazard, ContaminationType cont, float amount) {
|
||||||
|
|
||||||
|
if(entity instanceof EntityPlayer) {
|
||||||
|
|
||||||
|
EntityPlayer player = (EntityPlayer)entity;
|
||||||
|
|
||||||
|
switch(cont) {
|
||||||
|
case GAS: if(ArmorUtil.checkForGasMask(player)) return false; break;
|
||||||
|
case GAS_NON_REACTIVE: if(ArmorUtil.checkForHaz2(player)) return false; break;
|
||||||
|
case GOGGLES: if(ArmorUtil.checkForGoggles(player)) return false; break;
|
||||||
|
case HAZMAT: if(ArmorUtil.checkForHazmat(player)) return false; break;
|
||||||
|
case HAZMAT2: if(ArmorUtil.checkForHaz2(player)) return false; break;
|
||||||
|
case DIGAMMA: if(ArmorUtil.checkForDigamma(player)) return false; if(player.isPotionActive(HbmPotion.stability.id)) return false; break;
|
||||||
|
case DIGAMMA2: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(player.capabilities.isCreativeMode && cont != ContaminationType.NONE)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if(player.ticksExisted < 200)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(hazard == HazardType.RADIATION && isRadImmune(entity))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
switch(hazard) {
|
||||||
|
case MONOXIDE: entity.attackEntityFrom(ModDamageSource.monoxide, amount); break;
|
||||||
|
case RADIATION: HbmLivingProps.incrementRadiation(entity, amount * calculateRadiationMod(entity)); break;
|
||||||
|
case ASBESTOS: HbmLivingProps.incrementAsbestos(entity, (int)amount); break;
|
||||||
|
case DIGAMMA: HbmLivingProps.incrementDigamma(entity, amount); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user