mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
tried and failed shader magic
This commit is contained in:
parent
80a8883706
commit
7a24c74435
15
src/main/java/api/hbm/item/IGasMask.java
Normal file
15
src/main/java/api/hbm/item/IGasMask.java
Normal file
@ -0,0 +1,15 @@
|
||||
package api.hbm.item;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.util.ArmorRegistry.HazardClass;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public interface IGasMask {
|
||||
|
||||
public List<HazardClass> getBlacklist(ItemStack stack, EntityPlayer player);
|
||||
public ItemStack getFilter(ItemStack stack, EntityPlayer player);
|
||||
public void damageFilter(ItemStack stack, EntityPlayer player);
|
||||
}
|
||||
@ -10,6 +10,7 @@ import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.util.ChatComponentTranslation;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
@ -64,7 +65,7 @@ public class MachineFractionTower extends BlockDummyable {
|
||||
player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "=== FRACTIONING TOWER Y:" + pos[1] + " ==="));
|
||||
|
||||
for(int i = 0; i < frac.tanks.length; i++)
|
||||
player.addChatComponentMessage(new ChatComponentText(frac.tanks[i].getTankType() + ": " + frac.tanks[i].getFill() + "/" + frac.tanks[i].getMaxFill() + "mB"));
|
||||
player.addChatComponentMessage(new ChatComponentTranslation("hbmfluid." + frac.tanks[i].getTankType().getName().toLowerCase()).appendSibling(new ChatComponentText(": " + frac.tanks[i].getFill() + "/" + frac.tanks[i].getMaxFill() + "mB")));
|
||||
} else {
|
||||
|
||||
if(world.getTileEntity(pos[0], pos[1] - 3, pos[2]) instanceof TileEntityMachineFractionTower) {
|
||||
|
||||
@ -49,7 +49,7 @@ public class ToolRecipes {
|
||||
addHoe( ModItems.ingot_combine_steel, ModItems.cmb_hoe);
|
||||
addSword( "ingotDesh", ModItems.desh_sword);
|
||||
addPickaxe( "ingotDesh", ModItems.desh_pickaxe);
|
||||
addAxe( "ingotDesh", ModItems.desh_pickaxe);
|
||||
addAxe( "ingotDesh", ModItems.desh_axe);
|
||||
addShovel( "ingotDesh", ModItems.desh_shovel);
|
||||
addHoe( "ingotDesh", ModItems.desh_hoe);
|
||||
|
||||
|
||||
@ -2,6 +2,8 @@ package com.hbm.entity.mob;
|
||||
|
||||
import net.minecraft.entity.EntityAgeable;
|
||||
import net.minecraft.entity.passive.EntityChicken;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EntityDuck extends EntityChicken {
|
||||
@ -9,21 +11,29 @@ public class EntityDuck extends EntityChicken {
|
||||
public EntityDuck(World world) {
|
||||
super(world);
|
||||
}
|
||||
|
||||
protected String getLivingSound() {
|
||||
return "hbm:entity.ducc";
|
||||
}
|
||||
|
||||
protected String getHurtSound() {
|
||||
return "hbm:entity.ducc";
|
||||
}
|
||||
|
||||
protected String getDeathSound() {
|
||||
return "hbm:entity.ducc";
|
||||
}
|
||||
|
||||
public EntityDuck createChild(EntityAgeable entity) {
|
||||
return new EntityDuck(this.worldObj);
|
||||
}
|
||||
|
||||
protected String getLivingSound() {
|
||||
return "hbm:entity.ducc";
|
||||
}
|
||||
protected void damageEntity(DamageSource p_70665_1_, float p_70665_2_) {
|
||||
super.damageEntity(p_70665_1_, p_70665_2_);
|
||||
}
|
||||
|
||||
protected String getHurtSound() {
|
||||
return "hbm:entity.ducc";
|
||||
}
|
||||
|
||||
protected String getDeathSound() {
|
||||
return "hbm:entity.ducc";
|
||||
}
|
||||
|
||||
public EntityDuck createChild(EntityAgeable entity)
|
||||
{
|
||||
return new EntityDuck(this.worldObj);
|
||||
}
|
||||
public void onDeath(DamageSource p_70645_1_) {
|
||||
if(!worldObj.isRemote) MinecraftServer.getServer().getConfigurationManager().sendChatMsg(this.func_110142_aN().func_151521_b());
|
||||
super.onDeath(p_70645_1_);
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,7 +12,6 @@ import com.hbm.interfaces.IBulletUpdateBehavior;
|
||||
import com.hbm.interfaces.Untested;
|
||||
import com.hbm.lib.ModDamageSource;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
|
||||
@ -6,6 +6,7 @@ import com.hbm.handler.BulletConfigSyncingUtil;
|
||||
import com.hbm.handler.BulletConfiguration;
|
||||
import com.hbm.handler.GunConfiguration;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.lib.ModDamageSource;
|
||||
import com.hbm.potion.HbmPotion;
|
||||
import com.hbm.render.util.RenderScreenOverlay.Crosshair;
|
||||
|
||||
@ -292,10 +293,13 @@ public class Gun357MagnumFactory {
|
||||
bullet.bulletsMax = 6;
|
||||
bullet.dmgMin = 50;
|
||||
bullet.dmgMax = 150;
|
||||
bullet.doesRicochet = false;
|
||||
bullet.destroysBlocks = true;
|
||||
bullet.style = bullet.STYLE_BOLT;
|
||||
bullet.trail = bullet.BOLT_NIGHTMARE;
|
||||
|
||||
bullet.damageType = ModDamageSource.s_laser;
|
||||
|
||||
return bullet;
|
||||
}
|
||||
|
||||
|
||||
@ -4553,9 +4553,9 @@ public class ModItems {
|
||||
|
||||
goggles = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("goggles").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":goggles");
|
||||
ashglasses = new ArmorAshGlasses(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("ashglasses").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":ashglasses");
|
||||
gas_mask = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("gas_mask").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":gas_mask");
|
||||
gas_mask_m65 = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("gas_mask_m65").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":gas_mask_m65");
|
||||
gas_mask_mono = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("gas_mask_mono").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":gas_mask_mono");
|
||||
gas_mask = new ArmorGasMask().setUnlocalizedName("gas_mask").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":gas_mask");
|
||||
gas_mask_m65 = new ArmorGasMask().setUnlocalizedName("gas_mask_m65").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":gas_mask_m65");
|
||||
gas_mask_mono = new ArmorGasMask().setUnlocalizedName("gas_mask_mono").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":gas_mask_mono");
|
||||
hat = new ArmorHat(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("nossy_hat").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":hat");
|
||||
beta = new ItemDrop().setUnlocalizedName("beta").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":beta");
|
||||
//oxy_mask = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("oxy_mask").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":oxy_mask");
|
||||
|
||||
162
src/main/java/com/hbm/items/armor/ArmorGasMask.java
Normal file
162
src/main/java/com/hbm/items/armor/ArmorGasMask.java
Normal file
@ -0,0 +1,162 @@
|
||||
package com.hbm.items.armor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.render.model.ModelGasMask;
|
||||
import com.hbm.render.model.ModelM65;
|
||||
import com.hbm.util.ArmorRegistry.HazardClass;
|
||||
|
||||
import api.hbm.item.IGasMask;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemArmor;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class ArmorGasMask extends ItemArmor implements IGasMask {
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
private ModelGasMask modelGas;
|
||||
@SideOnly(Side.CLIENT)
|
||||
private ModelM65 modelM65;
|
||||
|
||||
private ResourceLocation[] googleBlur = new ResourceLocation[] {
|
||||
new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_goggles_0.png"),
|
||||
new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_goggles_1.png"),
|
||||
new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_goggles_2.png"),
|
||||
new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_goggles_3.png"),
|
||||
new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_goggles_4.png"),
|
||||
new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_goggles_5.png")
|
||||
};
|
||||
|
||||
private ResourceLocation[] maskBlur = new ResourceLocation[] {
|
||||
new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_gasmask_0.png"),
|
||||
new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_gasmask_1.png"),
|
||||
new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_gasmask_2.png"),
|
||||
new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_gasmask_3.png"),
|
||||
new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_gasmask_4.png"),
|
||||
new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_gasmask_5.png")
|
||||
};
|
||||
|
||||
public ArmorGasMask() {
|
||||
super(ArmorMaterial.IRON, 7, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) {
|
||||
|
||||
if(this == ModItems.gas_mask) {
|
||||
if(armorSlot == 0) {
|
||||
if(this.modelGas == null) {
|
||||
this.modelGas = new ModelGasMask();
|
||||
}
|
||||
return this.modelGas;
|
||||
}
|
||||
}
|
||||
|
||||
if(this == ModItems.gas_mask_m65 || this == ModItems.gas_mask_mono) {
|
||||
if(armorSlot == 0) {
|
||||
if(this.modelM65 == null) {
|
||||
this.modelM65 = new ModelM65();
|
||||
}
|
||||
return this.modelM65;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) {
|
||||
|
||||
if(stack.getItem() == ModItems.gas_mask) {
|
||||
return "hbm:textures/models/GasMask.png";
|
||||
}
|
||||
if(stack.getItem() == ModItems.gas_mask_m65) {
|
||||
return "hbm:textures/models/ModelM65.png";
|
||||
}
|
||||
if(stack.getItem() == ModItems.gas_mask_mono) {
|
||||
return "hbm:textures/models/ModelM65Mono.png";
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void renderHelmetOverlay(ItemStack stack, EntityPlayer player, ScaledResolution resolution, float partialTicks, boolean hasScreen, int mouseX, int mouseY) {
|
||||
|
||||
ResourceLocation tex = null;
|
||||
|
||||
if(this == ModItems.goggles || this == ModItems.gas_mask_m65) {
|
||||
int index = (int) ((double) stack.getItemDamage() / (double) stack.getMaxDamage() * 6D);
|
||||
tex = this.googleBlur[index];
|
||||
}
|
||||
|
||||
if(this == ModItems.gas_mask) {
|
||||
int index = (int) ((double) stack.getItemDamage() / (double) stack.getMaxDamage() * 6D);
|
||||
tex = this.maskBlur[index];
|
||||
}
|
||||
|
||||
if(tex == null)
|
||||
return;
|
||||
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(tex);
|
||||
|
||||
GL11.glDisable(GL11.GL_DEPTH_TEST);
|
||||
GL11.glDepthMask(false);
|
||||
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GL11.glDisable(GL11.GL_ALPHA_TEST);
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.addVertexWithUV(0.0D, (double) resolution.getScaledHeight(), -90.0D, 0.0D, 1.0D);
|
||||
tessellator.addVertexWithUV((double) resolution.getScaledWidth(), (double) resolution.getScaledHeight(), -90.0D, 1.0D, 1.0D);
|
||||
tessellator.addVertexWithUV((double) resolution.getScaledWidth(), 0.0D, -90.0D, 1.0D, 0.0D);
|
||||
tessellator.addVertexWithUV(0.0D, 0.0D, -90.0D, 0.0D, 0.0D);
|
||||
tessellator.draw();
|
||||
GL11.glDepthMask(true);
|
||||
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||||
GL11.glEnable(GL11.GL_ALPHA_TEST);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HazardClass> getBlacklist(ItemStack stack, EntityPlayer player) {
|
||||
|
||||
if(this == ModItems.gas_mask_mono) {
|
||||
return Arrays.asList(new HazardClass[] {HazardClass.GAS_CHLORINE, HazardClass.BACTERIA});
|
||||
}
|
||||
|
||||
return new ArrayList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getFilter(ItemStack stack, EntityPlayer player) {
|
||||
|
||||
if(stack == null || !(stack.getItem() instanceof IGasMask) || !stack.hasTagCompound())
|
||||
return null;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void damageFilter(ItemStack stack, EntityPlayer player) {
|
||||
|
||||
}
|
||||
}
|
||||
@ -8,7 +8,6 @@ import com.hbm.interfaces.Spaghetti;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.render.model.ModelCloak;
|
||||
import com.hbm.render.model.ModelGasMask;
|
||||
import com.hbm.render.model.ModelGoggles;
|
||||
import com.hbm.render.model.ModelHat;
|
||||
import com.hbm.render.model.ModelM65;
|
||||
@ -35,8 +34,6 @@ public class ArmorModel extends ItemArmor {
|
||||
@SideOnly(Side.CLIENT)
|
||||
private ModelGoggles modelGoggles;
|
||||
@SideOnly(Side.CLIENT)
|
||||
private ModelGasMask modelGas;
|
||||
@SideOnly(Side.CLIENT)
|
||||
private ModelCloak modelCloak;
|
||||
@SideOnly(Side.CLIENT)
|
||||
private ModelOxygenMask modelOxy;
|
||||
@ -51,59 +48,11 @@ public class ArmorModel extends ItemArmor {
|
||||
private ResourceLocation goggleBlur3 = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_goggles_3.png");
|
||||
private ResourceLocation goggleBlur4 = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_goggles_4.png");
|
||||
private ResourceLocation goggleBlur5 = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_goggles_5.png");
|
||||
private ResourceLocation gasmaskBlur0 = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_gasmask_0.png");
|
||||
private ResourceLocation gasmaskBlur1 = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_gasmask_1.png");
|
||||
private ResourceLocation gasmaskBlur2 = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_gasmask_2.png");
|
||||
private ResourceLocation gasmaskBlur3 = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_gasmask_3.png");
|
||||
private ResourceLocation gasmaskBlur4 = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_gasmask_4.png");
|
||||
private ResourceLocation gasmaskBlur5 = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_gasmask_5.png");
|
||||
|
||||
public ArmorModel(ArmorMaterial armorMaterial, int renderIndex, int armorType) {
|
||||
super(armorMaterial, renderIndex, armorType);
|
||||
}
|
||||
|
||||
//there was no reason to override this
|
||||
/*@Override
|
||||
public boolean isValidArmor(ItemStack stack, int armorType, Entity entity) {
|
||||
if (this == ModItems.goggles) {
|
||||
return armorType == 0;
|
||||
}
|
||||
if (this == ModItems.gas_mask) {
|
||||
return armorType == 0;
|
||||
}
|
||||
if (this == ModItems.gas_mask_m65) {
|
||||
return armorType == 0;
|
||||
}
|
||||
if (this == ModItems.gas_mask_mono) {
|
||||
return armorType == 0;
|
||||
}
|
||||
if (this == ModItems.hat) {
|
||||
return armorType == 0;
|
||||
}
|
||||
if (this == ModItems.hazmat_helmet_red) {
|
||||
return armorType == 0;
|
||||
}
|
||||
if (this == ModItems.hazmat_helmet_grey) {
|
||||
return armorType == 0;
|
||||
}
|
||||
if (this == ModItems.oxy_mask) {
|
||||
return armorType == 0;
|
||||
}
|
||||
if (this == ModItems.cape_test) {
|
||||
return armorType == 1;
|
||||
}
|
||||
if (this == ModItems.cape_radiation) {
|
||||
return armorType == 1;
|
||||
}
|
||||
if (this == ModItems.cape_gasmask) {
|
||||
return armorType == 1;
|
||||
}
|
||||
if (this == ModItems.cape_schrabidium) {
|
||||
return armorType == 1;
|
||||
}
|
||||
return armorType == 0;
|
||||
}*/
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) {
|
||||
@ -115,15 +64,7 @@ public class ArmorModel extends ItemArmor {
|
||||
return this.modelGoggles;
|
||||
}
|
||||
}
|
||||
if (this == ModItems.gas_mask) {
|
||||
if (armorSlot == 0) {
|
||||
if (this.modelGas == null) {
|
||||
this.modelGas = new ModelGasMask();
|
||||
}
|
||||
return this.modelGas;
|
||||
}
|
||||
}
|
||||
if (this == ModItems.gas_mask_m65 || this == ModItems.hazmat_helmet_red || this == ModItems.hazmat_helmet_grey || this == ModItems.gas_mask_mono) {
|
||||
if (this == ModItems.hazmat_helmet_red || this == ModItems.hazmat_helmet_grey) {
|
||||
if (armorSlot == 0) {
|
||||
if (this.modelM65 == null) {
|
||||
this.modelM65 = new ModelM65();
|
||||
@ -163,15 +104,6 @@ public class ArmorModel extends ItemArmor {
|
||||
if (stack.getItem() == ModItems.goggles) {
|
||||
return "hbm:textures/models/Goggles.png";
|
||||
}
|
||||
if (stack.getItem() == ModItems.gas_mask) {
|
||||
return "hbm:textures/models/GasMask.png";
|
||||
}
|
||||
if (stack.getItem() == ModItems.gas_mask_m65) {
|
||||
return "hbm:textures/models/ModelM65.png";
|
||||
}
|
||||
if (stack.getItem() == ModItems.gas_mask_mono) {
|
||||
return "hbm:textures/models/ModelM65Mono.png";
|
||||
}
|
||||
if (stack.getItem() == ModItems.hazmat_helmet_red) {
|
||||
return "hbm:textures/models/ModelHazRed.png";
|
||||
}
|
||||
@ -209,7 +141,7 @@ public class ArmorModel extends ItemArmor {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GL11.glDisable(GL11.GL_ALPHA_TEST);
|
||||
|
||||
if(this == ModItems.goggles || this == ModItems.gas_mask_m65 || this == ModItems.hazmat_helmet_red || this == ModItems.hazmat_helmet_grey) {
|
||||
if(this == ModItems.hazmat_helmet_red || this == ModItems.hazmat_helmet_grey) {
|
||||
switch((int)((double)stack.getItemDamage() / (double)stack.getMaxDamage() * 6D)) {
|
||||
case 0:
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(goggleBlur0); break;
|
||||
@ -227,24 +159,6 @@ public class ArmorModel extends ItemArmor {
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(goggleBlur5); break;
|
||||
}
|
||||
}
|
||||
if(this == ModItems.gas_mask) {
|
||||
switch((int)((double)stack.getItemDamage() / (double)stack.getMaxDamage() * 6D)) {
|
||||
case 0:
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(gasmaskBlur0); break;
|
||||
case 1:
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(gasmaskBlur1); break;
|
||||
case 2:
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(gasmaskBlur2); break;
|
||||
case 3:
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(gasmaskBlur3); break;
|
||||
case 4:
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(gasmaskBlur4); break;
|
||||
case 5:
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(gasmaskBlur5); break;
|
||||
default:
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(gasmaskBlur5); break;
|
||||
}
|
||||
}
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
tessellator.startDrawingQuads();
|
||||
@ -271,12 +185,5 @@ public class ArmorModel extends ItemArmor {
|
||||
if(this == ModItems.cape_schrabidium) {
|
||||
list.add("Avalible for everyone");
|
||||
}
|
||||
|
||||
if(this == ModItems.gas_mask || this == ModItems.gas_mask_m65) {
|
||||
list.add("Protects against most harmful gasses");
|
||||
}
|
||||
if(this == ModItems.gas_mask_mono) {
|
||||
list.add("Protects against carbon monoxide");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -466,7 +466,7 @@ public class ModEventHandlerClient {
|
||||
List<String> list = event.toolTip;
|
||||
|
||||
/// HAZMAT INFO ///
|
||||
List<HazardClass> hazInfo = ArmorRegistry.armor.get(stack.getItem());
|
||||
List<HazardClass> hazInfo = ArmorRegistry.hazardClasses.get(stack.getItem());
|
||||
|
||||
if(hazInfo != null) {
|
||||
list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("hazard.prot"));
|
||||
|
||||
@ -2,12 +2,16 @@ package com.hbm.main;
|
||||
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.render.loader.HFRWavefrontObject;
|
||||
import com.hbm.render.shader.Shader;
|
||||
import com.hbm.render.shader.ShaderManager;
|
||||
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.client.model.AdvancedModelLoader;
|
||||
import net.minecraftforge.client.model.IModelCustom;
|
||||
|
||||
public class ResourceManager {
|
||||
|
||||
public static final Shader test_shader = ShaderManager.loadShader(new ResourceLocation(RefStrings.MODID, "shaders/test_shader"));
|
||||
|
||||
//God
|
||||
public static final IModelCustom error = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/error.obj"));
|
||||
|
||||
42
src/main/java/com/hbm/render/shader/Shader.java
Normal file
42
src/main/java/com/hbm/render/shader/Shader.java
Normal file
@ -0,0 +1,42 @@
|
||||
package com.hbm.render.shader;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.lwjgl.opengl.GL20;
|
||||
|
||||
public class Shader {
|
||||
|
||||
private int shader;
|
||||
private List<Uniform> uniforms = new ArrayList<>(2);
|
||||
|
||||
public Shader(int shader) {
|
||||
this.shader = shader;
|
||||
}
|
||||
|
||||
public Shader withUniforms(Uniform... uniforms) {
|
||||
for(Uniform u : uniforms) {
|
||||
this.uniforms.add(u);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public void use() {
|
||||
|
||||
if(!ShaderManager.enableShaders)
|
||||
return;
|
||||
|
||||
GL20.glUseProgram(shader);
|
||||
for(Uniform u : uniforms) {
|
||||
u.apply(shader);
|
||||
}
|
||||
}
|
||||
|
||||
public void release() {
|
||||
GL20.glUseProgram(0);
|
||||
}
|
||||
|
||||
public int getShaderId() {
|
||||
return shader;
|
||||
}
|
||||
}
|
||||
81
src/main/java/com/hbm/render/shader/ShaderManager.java
Normal file
81
src/main/java/com/hbm/render/shader/ShaderManager.java
Normal file
@ -0,0 +1,81 @@
|
||||
package com.hbm.render.shader;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.lwjgl.BufferUtils;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL20;
|
||||
|
||||
import com.hbm.main.MainRegistry;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class ShaderManager {
|
||||
|
||||
public static boolean enableShaders = true;
|
||||
|
||||
public static final Uniform LIGHTMAP = shader -> {
|
||||
GL20.glUniform1i(GL20.glGetUniformLocation(shader, "lightmap"), 1);
|
||||
};
|
||||
|
||||
public static Shader loadShader(ResourceLocation file) {
|
||||
|
||||
if(!enableShaders)
|
||||
return new Shader(0);
|
||||
|
||||
int vertexShader = 0;
|
||||
int fragmentShader = 0;
|
||||
|
||||
try {
|
||||
int program = GL20.glCreateProgram();
|
||||
|
||||
vertexShader = GL20.glCreateShader(GL20.GL_VERTEX_SHADER);
|
||||
GL20.glShaderSource(vertexShader, readFileToBuf(new ResourceLocation(file.getResourceDomain(), file.getResourcePath() + ".vert")));
|
||||
GL20.glCompileShader(vertexShader);
|
||||
if(GL20.glGetShaderi(vertexShader, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE) {
|
||||
MainRegistry.logger.error(GL20.glGetShaderInfoLog(vertexShader, GL20.GL_INFO_LOG_LENGTH));
|
||||
throw new RuntimeException("Error creating vertex shader: " + file);
|
||||
}
|
||||
|
||||
fragmentShader = GL20.glCreateShader(GL20.GL_FRAGMENT_SHADER);
|
||||
GL20.glShaderSource(fragmentShader, readFileToBuf(new ResourceLocation(file.getResourceDomain(), file.getResourcePath() + ".frag")));
|
||||
GL20.glCompileShader(fragmentShader);
|
||||
if(GL20.glGetShaderi(fragmentShader, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE) {
|
||||
MainRegistry.logger.error(GL20.glGetShaderInfoLog(fragmentShader, GL20.GL_INFO_LOG_LENGTH));
|
||||
throw new RuntimeException("Error creating fragment shader: " + file);
|
||||
}
|
||||
|
||||
GL20.glAttachShader(program, vertexShader);
|
||||
GL20.glAttachShader(program, fragmentShader);
|
||||
GL20.glLinkProgram(program);
|
||||
if(GL20.glGetProgrami(program, GL20.GL_LINK_STATUS) == GL11.GL_FALSE) {
|
||||
MainRegistry.logger.error(GL20.glGetProgramInfoLog(program, GL20.GL_INFO_LOG_LENGTH));
|
||||
throw new RuntimeException("Error creating fragment shader: " + file);
|
||||
}
|
||||
|
||||
GL20.glDeleteShader(vertexShader);
|
||||
GL20.glDeleteShader(fragmentShader);
|
||||
|
||||
return new Shader(program);
|
||||
} catch(Exception x) {
|
||||
GL20.glDeleteShader(vertexShader);
|
||||
GL20.glDeleteShader(fragmentShader);
|
||||
x.printStackTrace();
|
||||
}
|
||||
return new Shader(0);
|
||||
}
|
||||
|
||||
private static ByteBuffer readFileToBuf(ResourceLocation file) throws IOException {
|
||||
InputStream in = Minecraft.getMinecraft().getResourceManager().getResource(file).getInputStream();
|
||||
byte[] bytes = IOUtils.toByteArray(in);
|
||||
IOUtils.closeQuietly(in);
|
||||
ByteBuffer buf = BufferUtils.createByteBuffer(bytes.length);
|
||||
buf.put(bytes);
|
||||
buf.rewind();
|
||||
return buf;
|
||||
}
|
||||
}
|
||||
6
src/main/java/com/hbm/render/shader/Uniform.java
Normal file
6
src/main/java/com/hbm/render/shader/Uniform.java
Normal file
@ -0,0 +1,6 @@
|
||||
package com.hbm.render.shader;
|
||||
|
||||
public interface Uniform {
|
||||
|
||||
public void apply(int shader);
|
||||
}
|
||||
@ -16,6 +16,8 @@ public class RenderTurretChekhov extends RenderTurretBase {
|
||||
|
||||
TileEntityTurretChekhov turret = (TileEntityTurretChekhov)te;
|
||||
Vec3 pos = turret.getHorizontalOffset();
|
||||
|
||||
ResourceManager.test_shader.use();
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x + pos.xCoord, y, z + pos.zCoord);
|
||||
@ -50,5 +52,7 @@ public class RenderTurretChekhov extends RenderTurretBase {
|
||||
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
ResourceManager.test_shader.release();
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,11 +8,11 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
|
||||
public class ArmorRegistry {
|
||||
|
||||
public static HashMap<Item, List<HazardClass>> hazardClasses = new HashMap();
|
||||
|
||||
public static HashMap<Item, List<HazardClass>> armor = new HashMap();
|
||||
|
||||
public static void registerArmor(Item item, HazardClass... hazards) {
|
||||
armor.put(item, Arrays.asList(hazards));
|
||||
public static void registerHazard(Item item, HazardClass... hazards) {
|
||||
hazardClasses.put(item, Arrays.asList(hazards));
|
||||
}
|
||||
|
||||
public static boolean hasProtection(EntityPlayer player, int slot, HazardClass clazz) {
|
||||
@ -20,7 +20,7 @@ public class ArmorRegistry {
|
||||
if(ArmorUtil.checkArmorNull(player, slot))
|
||||
return false;
|
||||
|
||||
List<HazardClass> list = armor.get(player.inventory.armorInventory[slot].getItem());
|
||||
List<HazardClass> list = hazardClasses.get(player.inventory.armorInventory[slot].getItem());
|
||||
|
||||
if(list == null)
|
||||
return false;
|
||||
@ -43,12 +43,12 @@ public class ArmorRegistry {
|
||||
}
|
||||
}
|
||||
|
||||
public static enum ArmorClass {
|
||||
/*public static enum ArmorClass {
|
||||
MASK_FILTERED,
|
||||
MASK_OXY,
|
||||
GOGGLES,
|
||||
HAZMAT_HEAT,
|
||||
HAZMAT_RADIATION,
|
||||
HAZMAT_BIO;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
@ -17,9 +17,8 @@ import net.minecraft.network.NetHandlerPlayServer;
|
||||
public class ArmorUtil {
|
||||
|
||||
public static void register() {
|
||||
ArmorRegistry.registerArmor(ModItems.gas_mask, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE);
|
||||
ArmorRegistry.registerArmor(ModItems.gas_mask_m65, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE);
|
||||
ArmorRegistry.registerArmor(ModItems.gas_mask_mono, HazardClass.PARTICLE_COARSE, HazardClass.GAS_MONOXIDE);
|
||||
ArmorRegistry.registerHazard(ModItems.gas_mask_filter_mono, HazardClass.PARTICLE_COARSE, HazardClass.GAS_MONOXIDE);
|
||||
ArmorRegistry.registerHazard(ModItems.gas_mask_filter, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_CHLORINE, HazardClass.BACTERIA);
|
||||
}
|
||||
|
||||
public static boolean checkArmor(EntityPlayer player, Item... armor) {
|
||||
|
||||
@ -312,6 +312,7 @@ death.attack.euthanizedSelf2=%1$s gewinnt den Darwin Award.
|
||||
death.attack.euthanizedSelf=%1$s hat sich selbst eingeschläfert, was für ein Vollpfosten.
|
||||
death.attack.exhaust=%1$s wurde von einer startenden Rakete verbrutzelt.
|
||||
death.attack.flamethrower=%1$s wurde von %2$s gegrillt.
|
||||
death.attack.flamethrower.item=%1$s wurde von %2$s mit %3$s gegrillt.
|
||||
death.attack.ice=%1$s wurde von %2$s in ein Eis am Stiel verwandelt.
|
||||
death.attack.laser=%1$s wurde von %2$s zerbröselt.
|
||||
death.attack.laser.item=%1$s wurde von %2$s mit %3$s zerbröselt.
|
||||
@ -326,7 +327,7 @@ death.attack.pc=%1$s wurde zu einer Pfütze in der pinken Wolke.
|
||||
death.attack.plasma=%1$s wurde von %2$s eingeäschert.
|
||||
death.attack.radiation=%1$s starb an Strahlenvergiftung.
|
||||
death.attack.revolverBullet=%1$s wurde von %2$s in den Kopf geschossen.
|
||||
death.attack.revolverBullet.item=%1$s wurde von %2$s mit %3$s in den Kopf geschossen.
|
||||
death.attack.revolverBullet.item.item=%1$s wurde von %2$s mit %3$s in den Kopf geschossen.
|
||||
death.attack.rubble=%1$s wurde von Schutt zerquetscht.
|
||||
death.attack.shrapnel=%1$s wurde von einem Schrapnell zerfetzt.
|
||||
death.attack.spikes=%1$s wurde aufgespießt.
|
||||
|
||||
@ -380,6 +380,7 @@ death.attack.euthanizedSelf2=%1$s wins the Darwin Award.
|
||||
death.attack.euthanizedSelf=%1$s euthanized himself, what a dork.
|
||||
death.attack.exhaust=%1$s was turned into shish kebab by a starting rocket.
|
||||
death.attack.flamethrower=%1$s was cremated by %2$s.
|
||||
death.attack.flamethrower.item=%1$s was cremated by %2$s using %3$s.
|
||||
death.attack.ice=%1$s was turned into a popsicle by %2$s.
|
||||
death.attack.laser=%1$s was turned into ash by %2$s.
|
||||
death.attack.laser.item=%1$s was turned into ash by %2$s using %3$s.
|
||||
@ -394,7 +395,7 @@ death.attack.pc=%1$s was reduced to a puddle in the pink cloud.
|
||||
death.attack.plasma=%1$s was immolated by %2$s.
|
||||
death.attack.radiation=%1$s died from radiation poisoning.
|
||||
death.attack.revolverBullet=%1$s was shot in the head by %2$s.
|
||||
death.attack.revolverBullet=%1$s was shot in the head by %2$s using %3$s.
|
||||
death.attack.revolverBullet.item=%1$s was shot in the head by %2$s using %3$s.
|
||||
death.attack.rubble=%1$s was squashed by debris.
|
||||
death.attack.shrapnel=%1$s was ragged by a shrapnel.
|
||||
death.attack.spikes=%1$s got impaled.
|
||||
|
||||
25
src/main/resources/assets/hbm/shaders/test_shader.frag
Normal file
25
src/main/resources/assets/hbm/shaders/test_shader.frag
Normal file
@ -0,0 +1,25 @@
|
||||
#version 330 compatibility
|
||||
|
||||
in vec2 texCoord;
|
||||
in vec2 lightCoord;
|
||||
in vec4 color;
|
||||
in vec3 lighting;
|
||||
out vec4 FragColor;
|
||||
|
||||
uniform sampler2D texture;
|
||||
uniform sampler2D lightmap;
|
||||
|
||||
void main(){
|
||||
vec4 center = texture2D(DiffuseSampler, texCoord);
|
||||
vec4 up = texture2D(DiffuseSampler, texCoord + vec2( 0.0, -oneTexel.y));
|
||||
vec4 down = texture2D(DiffuseSampler, texCoord + vec2( oneTexel.x, 0.0));
|
||||
vec4 left = texture2D(DiffuseSampler, texCoord + vec2(-oneTexel.x, 0.0));
|
||||
vec4 right = texture2D(DiffuseSampler, texCoord + vec2( 0.0, oneTexel.y));
|
||||
vec4 uDiff = center - up;
|
||||
vec4 dDiff = center - down;
|
||||
vec4 lDiff = center - left;
|
||||
vec4 rDiff = center - right;
|
||||
vec4 sum = uDiff + dDiff + lDiff + rDiff;
|
||||
vec3 clamped = clamp(center.rgb - sum.rgb, 0.0, 1.0);
|
||||
gl_FragColor = vec4(clamped, center.a);
|
||||
}
|
||||
26
src/main/resources/assets/hbm/shaders/test_shader.vert
Normal file
26
src/main/resources/assets/hbm/shaders/test_shader.vert
Normal file
@ -0,0 +1,26 @@
|
||||
#version 330 compatibility
|
||||
|
||||
out vec2 texCoord;
|
||||
out vec2 lightCoord;
|
||||
out vec4 color;
|
||||
out vec3 lighting;
|
||||
|
||||
void main(){
|
||||
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
|
||||
texCoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).st;
|
||||
lightCoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).st;
|
||||
color = gl_Color;
|
||||
|
||||
vec3 totalLighting = vec3(gl_LightModel.ambient) * vec3(gl_FrontMaterial.emission);
|
||||
vec3 normal = (gl_NormalMatrix * gl_Normal).xyz;
|
||||
vec4 difftot = vec4(0.0F);
|
||||
|
||||
for (int i = 0; i < gl_MaxLights; i ++){
|
||||
|
||||
vec4 diff = gl_FrontLightProduct[i].diffuse * max(dot(normal,gl_LightSource[i].position.xyz), 0.0f);
|
||||
diff = clamp(diff, 0.0F, 1.0F);
|
||||
|
||||
difftot += diff;
|
||||
}
|
||||
lighting = clamp((difftot + gl_LightModel.ambient).rgb, 0.0F, 1.0F);
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
Loading…
x
Reference in New Issue
Block a user