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());
}
}