diff --git a/src/main/java/electroblob/wizardry/CommonProxy.java b/src/main/java/electroblob/wizardry/CommonProxy.java index 63cf5ede..583929a0 100644 --- a/src/main/java/electroblob/wizardry/CommonProxy.java +++ b/src/main/java/electroblob/wizardry/CommonProxy.java @@ -247,6 +247,13 @@ public class CommonProxy { * @param intensity The amplitude of the shaking (around 10 looks about right) */ public void shakeScreen(EntityPlayer player, float intensity){} + + /** + * Loads the given shader for the given player, if they have shaders enabled. + * @param player The player to load the shader for + * @param shader The location of the shader to load + */ + public void loadShader(EntityPlayer player, ResourceLocation shader){} /** * Gets the client side world using Minecraft.getMinecraft().world. Only to be called client side! Returns diff --git a/src/main/java/electroblob/wizardry/client/ClientProxy.java b/src/main/java/electroblob/wizardry/client/ClientProxy.java index e97e0e62..07155cb6 100644 --- a/src/main/java/electroblob/wizardry/client/ClientProxy.java +++ b/src/main/java/electroblob/wizardry/client/ClientProxy.java @@ -199,6 +199,13 @@ public class ClientProxy extends CommonProxy { if(Minecraft.getMinecraft().player == player) WizardryClientEventHandler.shakeScreen(intensity); } + @Override + public void loadShader(EntityPlayer player, ResourceLocation shader){ + if(Minecraft.getMinecraft().player == player && Wizardry.settings.useShaders + && !Minecraft.getMinecraft().entityRenderer.isShaderActive()) + Minecraft.getMinecraft().entityRenderer.loadShader(shader); + } + @Override public Set getSpellHUDSkins(){ return GuiSpellDisplay.getSkinKeys(); diff --git a/src/main/java/electroblob/wizardry/potion/PotionSlowTime.java b/src/main/java/electroblob/wizardry/potion/PotionSlowTime.java index e849de0c..38224a7c 100644 --- a/src/main/java/electroblob/wizardry/potion/PotionSlowTime.java +++ b/src/main/java/electroblob/wizardry/potion/PotionSlowTime.java @@ -172,9 +172,9 @@ public class PotionSlowTime extends PotionMagicEffect implements ISyncedPotion { @SubscribeEvent public static void onPotionAddedEvent(PotionEvent.PotionAddedEvent event){ if(event.getEntity().world.isRemote && event.getPotionEffect().getPotion() == WizardryPotions.slow_time - && event.getEntity() == net.minecraft.client.Minecraft.getMinecraft().player){ - if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SlowTime.SHADER); - electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect(); + && event.getEntity() instanceof EntityPlayer){ + Wizardry.proxy.loadShader((EntityPlayer)event.getEntity(), SlowTime.SHADER); + Wizardry.proxy.playBlinkEffect((EntityPlayer)event.getEntity()); } } diff --git a/src/main/java/electroblob/wizardry/spell/Possession.java b/src/main/java/electroblob/wizardry/spell/Possession.java index e464b173..23e559f0 100644 --- a/src/main/java/electroblob/wizardry/spell/Possession.java +++ b/src/main/java/electroblob/wizardry/spell/Possession.java @@ -251,10 +251,10 @@ public class Possession extends SpellRay { } } - if(possessor.world.isRemote && possessor == net.minecraft.client.Minecraft.getMinecraft().player){ + if(possessor.world.isRemote){ // Shaders and effects - if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SHADER); - electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect(); // Looks quite nice... + Wizardry.proxy.loadShader(possessor, SHADER); + Wizardry.proxy.playBlinkEffect(possessor); }else{ @@ -348,7 +348,7 @@ public class Possession extends SpellRay { if(player.world.isRemote && player == net.minecraft.client.Minecraft.getMinecraft().player){ net.minecraft.client.Minecraft.getMinecraft().entityRenderer.stopUseShader(); - electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect(); // Looks quite nice... + Wizardry.proxy.playBlinkEffect(player); } for(IAttribute attribute : INHERITED_ATTRIBUTES.keySet()){ @@ -399,9 +399,7 @@ public class Possession extends SpellRay { if(player.world.isRemote){ ParticleBuilder.create(Type.DARK_MAGIC, player).clr(0.1f, 0, 0.3f).spawn(player.world); - // TODO: This (and a few other similar uses) needs ClientProxy-ing. - if(!net.minecraft.client.Minecraft.getMinecraft().entityRenderer.isShaderActive()) - if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SHADER); + Wizardry.proxy.loadShader(player, SHADER); } }else{ diff --git a/src/main/java/electroblob/wizardry/spell/SixthSense.java b/src/main/java/electroblob/wizardry/spell/SixthSense.java index b311c7cb..e8f5f926 100644 --- a/src/main/java/electroblob/wizardry/spell/SixthSense.java +++ b/src/main/java/electroblob/wizardry/spell/SixthSense.java @@ -39,9 +39,9 @@ public class SixthSense extends Spell { (int)(getProperty(EFFECT_DURATION).floatValue() * modifiers.get(WizardryItems.duration_upgrade)), (int)((modifiers.get(WizardryItems.range_upgrade) - 1f) / Constants.RANGE_INCREASE_PER_LEVEL))); - if(world.isRemote && caster == net.minecraft.client.Minecraft.getMinecraft().player){ - if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SHADER); - electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect(); + if(world.isRemote){ + Wizardry.proxy.loadShader(caster, SHADER); + Wizardry.proxy.playBlinkEffect(caster); } this.playSound(world, caster, ticksInUse, -1, modifiers); @@ -51,9 +51,9 @@ public class SixthSense extends Spell { @SubscribeEvent public static void onPotionAddedEvent(PotionEvent.PotionAddedEvent event){ if(event.getEntity().world.isRemote && event.getPotionEffect().getPotion() == WizardryPotions.sixth_sense - && event.getEntity() == net.minecraft.client.Minecraft.getMinecraft().player){ - if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SHADER); - electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect(); + && event.getEntity() instanceof EntityPlayer){ + Wizardry.proxy.loadShader((EntityPlayer)event.getEntity(), SHADER); + Wizardry.proxy.playBlinkEffect((EntityPlayer)event.getEntity()); } } diff --git a/src/main/java/electroblob/wizardry/spell/SlowTime.java b/src/main/java/electroblob/wizardry/spell/SlowTime.java index 2d00a81f..e625e3a6 100644 --- a/src/main/java/electroblob/wizardry/spell/SlowTime.java +++ b/src/main/java/electroblob/wizardry/spell/SlowTime.java @@ -24,8 +24,8 @@ public class SlowTime extends SpellBuff { @Override public boolean cast(World world, EntityPlayer caster, EnumHand hand, int ticksInUse, SpellModifiers modifiers){ - if(caster.world.isRemote && caster == net.minecraft.client.Minecraft.getMinecraft().player){ - if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SHADER); + if(caster.world.isRemote){ + Wizardry.proxy.loadShader(caster, SHADER); } return super.cast(world, caster, hand, ticksInUse, modifiers); diff --git a/src/main/java/electroblob/wizardry/spell/Transience.java b/src/main/java/electroblob/wizardry/spell/Transience.java index b47fdfcf..e20f1ac5 100644 --- a/src/main/java/electroblob/wizardry/spell/Transience.java +++ b/src/main/java/electroblob/wizardry/spell/Transience.java @@ -38,9 +38,9 @@ public class Transience extends Spell { @Override public boolean cast(World world, EntityPlayer caster, EnumHand hand, int ticksInUse, SpellModifiers modifiers){ - if(world.isRemote && caster == net.minecraft.client.Minecraft.getMinecraft().player){ - if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SHADER); - electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect(); + if(world.isRemote){ + Wizardry.proxy.loadShader(caster, SHADER); + Wizardry.proxy.playBlinkEffect(caster); } if(!caster.isPotionActive(WizardryPotions.transience)){ @@ -87,9 +87,9 @@ public class Transience extends Spell { @SubscribeEvent public static void onPotionAddedEvent(PotionEvent.PotionAddedEvent event){ if(event.getEntity().world.isRemote && event.getPotionEffect().getPotion() == WizardryPotions.transience - && event.getEntity() == net.minecraft.client.Minecraft.getMinecraft().player){ - if(Wizardry.settings.useShaders) net.minecraft.client.Minecraft.getMinecraft().entityRenderer.loadShader(SHADER); - electroblob.wizardry.client.WizardryClientEventHandler.playBlinkEffect(); + && event.getEntity() instanceof EntityPlayer){ + Wizardry.proxy.loadShader((EntityPlayer)event.getEntity(), SHADER); + Wizardry.proxy.playBlinkEffect((EntityPlayer)event.getEntity()); } }