fix WrappedParticle
This commit is contained in:
parent
aa663ced8b
commit
75b678b921
|
@ -805,6 +805,10 @@ public final class MinecraftReflection {
|
||||||
return getNullableNMS("core.particles.ParticleType", "core.particles.SimpleParticleType", "ParticleType");
|
return getNullableNMS("core.particles.ParticleType", "core.particles.SimpleParticleType", "ParticleType");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Class<?> getParticleClass() {
|
||||||
|
return getNullableNMS("core.particles.Particle");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the WorldType class.
|
* Retrieve the WorldType class.
|
||||||
*
|
*
|
||||||
|
|
|
@ -20,6 +20,7 @@ public class WrappedParticle<T> {
|
||||||
private static Class<?> VECTOR_3FA;
|
private static Class<?> VECTOR_3FA;
|
||||||
|
|
||||||
private static MethodAccessor toBukkit;
|
private static MethodAccessor toBukkit;
|
||||||
|
private static MethodAccessor getType;
|
||||||
private static MethodAccessor toNMS;
|
private static MethodAccessor toNMS;
|
||||||
private static MethodAccessor toCraftData;
|
private static MethodAccessor toCraftData;
|
||||||
|
|
||||||
|
@ -29,15 +30,33 @@ public class WrappedParticle<T> {
|
||||||
}
|
}
|
||||||
|
|
||||||
FuzzyReflection fuzzy = FuzzyReflection.fromClass(MinecraftReflection.getCraftBukkitClass("CraftParticle"));
|
FuzzyReflection fuzzy = FuzzyReflection.fromClass(MinecraftReflection.getCraftBukkitClass("CraftParticle"));
|
||||||
FuzzyMethodContract contract = FuzzyMethodContract
|
if (MinecraftVersion.CONFIG_PHASE_PROTOCOL_UPDATE.atOrAbove()) {
|
||||||
.newBuilder()
|
FuzzyMethodContract contract = FuzzyMethodContract
|
||||||
.requireModifier(Modifier.STATIC)
|
.newBuilder()
|
||||||
.returnTypeExact(Particle.class)
|
.requireModifier(Modifier.STATIC)
|
||||||
.parameterExactType(MinecraftReflection.getParticleParam())
|
.returnTypeExact(Particle.class)
|
||||||
.build();
|
.parameterExactArray(MinecraftReflection.getParticleClass())
|
||||||
toBukkit = Accessors.getMethodAccessor(fuzzy.getMethod(contract));
|
.build();
|
||||||
|
toBukkit = Accessors.getMethodAccessor(fuzzy.getMethod(contract));
|
||||||
|
|
||||||
contract = FuzzyMethodContract
|
FuzzyReflection particleParam = FuzzyReflection.fromClass(MinecraftReflection.getParticleParam(), false);
|
||||||
|
contract = FuzzyMethodContract
|
||||||
|
.newBuilder()
|
||||||
|
.returnTypeExact(MinecraftReflection.getParticleClass())
|
||||||
|
.parameterCount(0)
|
||||||
|
.build();
|
||||||
|
getType = Accessors.getMethodAccessor(particleParam.getMethod(contract));
|
||||||
|
} else {
|
||||||
|
FuzzyMethodContract contract = FuzzyMethodContract
|
||||||
|
.newBuilder()
|
||||||
|
.requireModifier(Modifier.STATIC)
|
||||||
|
.returnTypeExact(Particle.class)
|
||||||
|
.parameterExactType(MinecraftReflection.getParticleParam())
|
||||||
|
.build();
|
||||||
|
toBukkit = Accessors.getMethodAccessor(fuzzy.getMethod(contract));
|
||||||
|
}
|
||||||
|
|
||||||
|
FuzzyMethodContract contract = FuzzyMethodContract
|
||||||
.newBuilder()
|
.newBuilder()
|
||||||
.requireModifier(Modifier.STATIC)
|
.requireModifier(Modifier.STATIC)
|
||||||
.returnTypeExact(MinecraftReflection.getParticleParam())
|
.returnTypeExact(MinecraftReflection.getParticleParam())
|
||||||
|
@ -117,9 +136,15 @@ public class WrappedParticle<T> {
|
||||||
public static WrappedParticle fromHandle(Object handle) {
|
public static WrappedParticle fromHandle(Object handle) {
|
||||||
ensureMethods();
|
ensureMethods();
|
||||||
|
|
||||||
Particle bukkit = (Particle) toBukkit.invoke(null, handle);
|
Particle bukkit;
|
||||||
Object data = null;
|
if (MinecraftVersion.CONFIG_PHASE_PROTOCOL_UPDATE.atOrAbove()) {
|
||||||
|
Object particle = getType.invoke(handle);
|
||||||
|
bukkit = (Particle) toBukkit.invoke(null, particle);
|
||||||
|
} else {
|
||||||
|
bukkit = (Particle) toBukkit.invoke(null, handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
Object data = null;
|
||||||
switch (bukkit) {
|
switch (bukkit) {
|
||||||
case BLOCK_CRACK:
|
case BLOCK_CRACK:
|
||||||
case BLOCK_DUST:
|
case BLOCK_DUST:
|
||||||
|
|
Loading…
Reference in New Issue