mirror of
https://github.com/Sollace/Unicopia.git
synced 2024-11-27 23:27:59 +01:00
Fixed shield particles doubling up when switching races
This commit is contained in:
parent
e3e374dd87
commit
7e19fd08c5
3 changed files with 25 additions and 2 deletions
|
@ -39,6 +39,12 @@ public class ShieldSpell extends AbstractRangedAreaSpell implements Attached {
|
||||||
return 0x66CDAA;
|
return 0x66CDAA;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDead() {
|
||||||
|
super.setDead();
|
||||||
|
particlEffect.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(Caster<?> source) {
|
public void render(Caster<?> source) {
|
||||||
float radius = (float)getDrawDropOffRange(source);
|
float radius = (float)getDrawDropOffRange(source);
|
||||||
|
|
|
@ -66,6 +66,11 @@ public class SphereParticle extends Particle implements Attachment {
|
||||||
this.link.attach(caster);
|
this.link.attach(caster);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void detach() {
|
||||||
|
markDead();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setAttribute(int key, Object value) {
|
public void setAttribute(int key, Object value) {
|
||||||
if (key == 0) {
|
if (key == 0) {
|
||||||
|
|
|
@ -4,6 +4,7 @@ import java.util.Optional;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import com.minelittlepony.unicopia.ability.magic.Caster;
|
import com.minelittlepony.unicopia.ability.magic.Caster;
|
||||||
|
import com.minelittlepony.unicopia.entity.Equine;
|
||||||
|
|
||||||
import net.fabricmc.api.EnvType;
|
import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
|
@ -31,6 +32,10 @@ public class ParticleHandle {
|
||||||
return particleEffect;
|
return particleEffect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void destroy() {
|
||||||
|
particleEffect.ifPresent(Attachment::detach);
|
||||||
|
}
|
||||||
|
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
private void addParticle(ParticleEffect effect, Vec3d pos, Vec3d vel) {
|
private void addParticle(ParticleEffect effect, Vec3d pos, Vec3d vel) {
|
||||||
Particle p = MinecraftClient.getInstance().particleManager.addParticle(effect, pos.x, pos.y, pos.z, vel.x, vel.y, vel.z);
|
Particle p = MinecraftClient.getInstance().particleManager.addParticle(effect, pos.x, pos.y, pos.z, vel.x, vel.y, vel.z);
|
||||||
|
@ -46,6 +51,8 @@ public class ParticleHandle {
|
||||||
|
|
||||||
void attach(Caster<?> caster);
|
void attach(Caster<?> caster);
|
||||||
|
|
||||||
|
void detach();
|
||||||
|
|
||||||
void setAttribute(int key, Object value);
|
void setAttribute(int key, Object value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,7 +65,7 @@ public class ParticleHandle {
|
||||||
public void attach(Caster<?> caster) {
|
public void attach(Caster<?> caster) {
|
||||||
this.linked = true;
|
this.linked = true;
|
||||||
this.caster = Optional.of(caster);
|
this.caster = Optional.of(caster);
|
||||||
effect = caster.getSpell(false).getName();
|
this.effect = caster.getSpell(false).getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean linked() {
|
public boolean linked() {
|
||||||
|
@ -69,7 +76,12 @@ public class ParticleHandle {
|
||||||
caster = caster.filter(c -> {
|
caster = caster.filter(c -> {
|
||||||
Entity e = c.getEntity();
|
Entity e = c.getEntity();
|
||||||
|
|
||||||
return c.hasSpell() && c.getSpell(false).getName().equals(effect) && e != null && c.getWorld().getEntityById(e.getEntityId()) != null;
|
|
||||||
|
return Equine.of(e) == c
|
||||||
|
&& c.hasSpell()
|
||||||
|
&& c.getSpell(false).getName().equals(effect)
|
||||||
|
&& e != null
|
||||||
|
&& c.getWorld().getEntityById(e.getEntityId()) != null;
|
||||||
});
|
});
|
||||||
if (!caster.isPresent()) {
|
if (!caster.isPresent()) {
|
||||||
action.run();
|
action.run();
|
||||||
|
|
Loading…
Reference in a new issue