mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-27 13:06:02 +01:00
Add MobEffect from mc-dev for diff visibility
This commit is contained in:
parent
a2d9f33ca3
commit
94f43d8c36
143
src/main/java/net/minecraft/server/MobEffect.java
Normal file
143
src/main/java/net/minecraft/server/MobEffect.java
Normal file
@ -0,0 +1,143 @@
|
||||
package net.minecraft.server;
|
||||
|
||||
public class MobEffect {
|
||||
|
||||
private int effectId;
|
||||
private int duration;
|
||||
private int amplification;
|
||||
private boolean splash;
|
||||
private boolean ambient;
|
||||
|
||||
public MobEffect(int i, int j) {
|
||||
this(i, j, 0);
|
||||
}
|
||||
|
||||
public MobEffect(int i, int j, int k) {
|
||||
this(i, j, k, false);
|
||||
}
|
||||
|
||||
public MobEffect(int i, int j, int k, boolean flag) {
|
||||
this.effectId = i;
|
||||
this.duration = j;
|
||||
this.amplification = k;
|
||||
this.ambient = flag;
|
||||
}
|
||||
|
||||
public MobEffect(MobEffect mobeffect) {
|
||||
this.effectId = mobeffect.effectId;
|
||||
this.duration = mobeffect.duration;
|
||||
this.amplification = mobeffect.amplification;
|
||||
}
|
||||
|
||||
public void a(MobEffect mobeffect) {
|
||||
if (this.effectId != mobeffect.effectId) {
|
||||
System.err.println("This method should only be called for matching effects!");
|
||||
}
|
||||
|
||||
if (mobeffect.amplification > this.amplification) {
|
||||
this.amplification = mobeffect.amplification;
|
||||
this.duration = mobeffect.duration;
|
||||
} else if (mobeffect.amplification == this.amplification && this.duration < mobeffect.duration) {
|
||||
this.duration = mobeffect.duration;
|
||||
} else if (!mobeffect.ambient && this.ambient) {
|
||||
this.ambient = mobeffect.ambient;
|
||||
}
|
||||
}
|
||||
|
||||
public int getEffectId() {
|
||||
return this.effectId;
|
||||
}
|
||||
|
||||
public int getDuration() {
|
||||
return this.duration;
|
||||
}
|
||||
|
||||
public int getAmplifier() {
|
||||
return this.amplification;
|
||||
}
|
||||
|
||||
public boolean isSplash() {
|
||||
return this.splash;
|
||||
}
|
||||
|
||||
public void setSplash(boolean flag) {
|
||||
this.splash = flag;
|
||||
}
|
||||
|
||||
public boolean isAmbient() {
|
||||
return this.ambient;
|
||||
}
|
||||
|
||||
public boolean tick(EntityLiving entityliving) {
|
||||
if (this.duration > 0) {
|
||||
if (MobEffectList.byId[this.effectId].a(this.duration, this.amplification)) {
|
||||
this.b(entityliving);
|
||||
}
|
||||
|
||||
this.h();
|
||||
}
|
||||
|
||||
return this.duration > 0;
|
||||
}
|
||||
|
||||
private int h() {
|
||||
return --this.duration;
|
||||
}
|
||||
|
||||
public void b(EntityLiving entityliving) {
|
||||
if (this.duration > 0) {
|
||||
MobEffectList.byId[this.effectId].tick(entityliving, this.amplification);
|
||||
}
|
||||
}
|
||||
|
||||
public String f() {
|
||||
return MobEffectList.byId[this.effectId].a();
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return this.effectId;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
String s = "";
|
||||
|
||||
if (this.getAmplifier() > 0) {
|
||||
s = this.f() + " x " + (this.getAmplifier() + 1) + ", Duration: " + this.getDuration();
|
||||
} else {
|
||||
s = this.f() + ", Duration: " + this.getDuration();
|
||||
}
|
||||
|
||||
if (this.splash) {
|
||||
s = s + ", Splash: true";
|
||||
}
|
||||
|
||||
return MobEffectList.byId[this.effectId].i() ? "(" + s + ")" : s;
|
||||
}
|
||||
|
||||
public boolean equals(Object object) {
|
||||
if (!(object instanceof MobEffect)) {
|
||||
return false;
|
||||
} else {
|
||||
MobEffect mobeffect = (MobEffect) object;
|
||||
|
||||
return this.effectId == mobeffect.effectId && this.amplification == mobeffect.amplification && this.duration == mobeffect.duration && this.splash == mobeffect.splash && this.ambient == mobeffect.ambient;
|
||||
}
|
||||
}
|
||||
|
||||
public NBTTagCompound a(NBTTagCompound nbttagcompound) {
|
||||
nbttagcompound.setByte("Id", (byte) this.getEffectId());
|
||||
nbttagcompound.setByte("Amplifier", (byte) this.getAmplifier());
|
||||
nbttagcompound.setInt("Duration", this.getDuration());
|
||||
nbttagcompound.setBoolean("Ambient", this.isAmbient());
|
||||
return nbttagcompound;
|
||||
}
|
||||
|
||||
public static MobEffect b(NBTTagCompound nbttagcompound) {
|
||||
byte b0 = nbttagcompound.getByte("Id");
|
||||
byte b1 = nbttagcompound.getByte("Amplifier");
|
||||
int i = nbttagcompound.getInt("Duration");
|
||||
boolean flag = nbttagcompound.getBoolean("Ambient");
|
||||
|
||||
return new MobEffect(b0, i, b1, flag);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user