Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-12-28 00:50:13 +01:00
Fix >1.18 vibration particle handling
Dieser Commit ist enthalten in:
Ursprung
09b67fad63
Commit
e4a1530aa8
@ -83,5 +83,13 @@ public class Particle {
|
|||||||
public void setValue(Object value) {
|
public void setValue(Object value) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "ParticleData{" +
|
||||||
|
"type=" + type +
|
||||||
|
", value=" + value +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,6 +105,7 @@ public class ParticleType extends Type<Particle> {
|
|||||||
|
|
||||||
String resourceLocation = Type.STRING.read(buf);
|
String resourceLocation = Type.STRING.read(buf);
|
||||||
particle.add(Type.STRING, resourceLocation);
|
particle.add(Type.STRING, resourceLocation);
|
||||||
|
|
||||||
resourceLocation = Key.stripMinecraftNamespace(resourceLocation);
|
resourceLocation = Key.stripMinecraftNamespace(resourceLocation);
|
||||||
if (resourceLocation.equals("block")) {
|
if (resourceLocation.equals("block")) {
|
||||||
particle.add(Type.POSITION1_14, Type.POSITION1_14.read(buf)); // Target block pos
|
particle.add(Type.POSITION1_14, Type.POSITION1_14.read(buf)); // Target block pos
|
||||||
@ -115,6 +116,21 @@ public class ParticleType extends Type<Particle> {
|
|||||||
}
|
}
|
||||||
particle.add(Type.VAR_INT, Type.VAR_INT.readPrimitive(buf)); // Arrival in ticks
|
particle.add(Type.VAR_INT, Type.VAR_INT.readPrimitive(buf)); // Arrival in ticks
|
||||||
};
|
};
|
||||||
|
public static final ParticleReader VIBRATION1_19 = (buf, particle) -> {
|
||||||
|
String resourceLocation = Type.STRING.read(buf);
|
||||||
|
particle.add(Type.STRING, resourceLocation);
|
||||||
|
|
||||||
|
resourceLocation = Key.stripMinecraftNamespace(resourceLocation);
|
||||||
|
if (resourceLocation.equals("block")) {
|
||||||
|
particle.add(Type.POSITION1_14, Type.POSITION1_14.read(buf)); // Target block pos
|
||||||
|
} else if (resourceLocation.equals("entity")) {
|
||||||
|
particle.add(Type.VAR_INT, Type.VAR_INT.readPrimitive(buf)); // Target entity
|
||||||
|
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Y offset
|
||||||
|
} else {
|
||||||
|
Via.getPlatform().getLogger().warning("Unknown vibration path position source type: " + resourceLocation);
|
||||||
|
}
|
||||||
|
particle.add(Type.VAR_INT, Type.VAR_INT.readPrimitive(buf)); // Arrival in ticks
|
||||||
|
};
|
||||||
public static final ParticleReader SCULK_CHARGE = (buf, particle) -> {
|
public static final ParticleReader SCULK_CHARGE = (buf, particle) -> {
|
||||||
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Roll
|
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Roll
|
||||||
};
|
};
|
||||||
|
@ -289,7 +289,7 @@ public final class Protocol1_19_3To1_19_1 extends AbstractProtocol<ClientboundPa
|
|||||||
.reader("falling_dust", ParticleType.Readers.BLOCK)
|
.reader("falling_dust", ParticleType.Readers.BLOCK)
|
||||||
.reader("dust_color_transition", ParticleType.Readers.DUST_TRANSITION)
|
.reader("dust_color_transition", ParticleType.Readers.DUST_TRANSITION)
|
||||||
.reader("item", ParticleType.Readers.VAR_INT_ITEM)
|
.reader("item", ParticleType.Readers.VAR_INT_ITEM)
|
||||||
.reader("vibration", ParticleType.Readers.VIBRATION)
|
.reader("vibration", ParticleType.Readers.VIBRATION1_19)
|
||||||
.reader("sculk_charge", ParticleType.Readers.SCULK_CHARGE)
|
.reader("sculk_charge", ParticleType.Readers.SCULK_CHARGE)
|
||||||
.reader("shriek", ParticleType.Readers.SHRIEK);
|
.reader("shriek", ParticleType.Readers.SHRIEK);
|
||||||
Entity1_19_3Types.initialize(this);
|
Entity1_19_3Types.initialize(this);
|
||||||
|
@ -101,7 +101,7 @@ public final class Protocol1_19_4To1_19_3 extends AbstractProtocol<ClientboundPa
|
|||||||
.reader("falling_dust", ParticleType.Readers.BLOCK)
|
.reader("falling_dust", ParticleType.Readers.BLOCK)
|
||||||
.reader("dust_color_transition", ParticleType.Readers.DUST_TRANSITION)
|
.reader("dust_color_transition", ParticleType.Readers.DUST_TRANSITION)
|
||||||
.reader("item", ParticleType.Readers.VAR_INT_ITEM)
|
.reader("item", ParticleType.Readers.VAR_INT_ITEM)
|
||||||
.reader("vibration", ParticleType.Readers.VIBRATION)
|
.reader("vibration", ParticleType.Readers.VIBRATION1_19)
|
||||||
.reader("sculk_charge", ParticleType.Readers.SCULK_CHARGE)
|
.reader("sculk_charge", ParticleType.Readers.SCULK_CHARGE)
|
||||||
.reader("shriek", ParticleType.Readers.SHRIEK);
|
.reader("shriek", ParticleType.Readers.SHRIEK);
|
||||||
}
|
}
|
||||||
|
@ -275,7 +275,7 @@ public final class Protocol1_19To1_18_2 extends AbstractProtocol<ClientboundPack
|
|||||||
.reader("falling_dust", ParticleType.Readers.BLOCK)
|
.reader("falling_dust", ParticleType.Readers.BLOCK)
|
||||||
.reader("dust_color_transition", ParticleType.Readers.DUST_TRANSITION)
|
.reader("dust_color_transition", ParticleType.Readers.DUST_TRANSITION)
|
||||||
.reader("item", ParticleType.Readers.VAR_INT_ITEM)
|
.reader("item", ParticleType.Readers.VAR_INT_ITEM)
|
||||||
.reader("vibration", ParticleType.Readers.VIBRATION)
|
.reader("vibration", ParticleType.Readers.VIBRATION1_19)
|
||||||
.reader("sculk_charge", ParticleType.Readers.SCULK_CHARGE)
|
.reader("sculk_charge", ParticleType.Readers.SCULK_CHARGE)
|
||||||
.reader("shriek", ParticleType.Readers.SHRIEK);
|
.reader("shriek", ParticleType.Readers.SHRIEK);
|
||||||
Entity1_19Types.initialize(this);
|
Entity1_19Types.initialize(this);
|
||||||
|
@ -24,15 +24,18 @@ import com.github.steveice10.opennbt.tag.builtin.Tag;
|
|||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.google.gson.JsonElement;
|
import com.google.gson.JsonElement;
|
||||||
import com.viaversion.viaversion.api.Via;
|
import com.viaversion.viaversion.api.Via;
|
||||||
|
import com.viaversion.viaversion.api.data.ParticleMappings;
|
||||||
import com.viaversion.viaversion.api.data.entity.DimensionData;
|
import com.viaversion.viaversion.api.data.entity.DimensionData;
|
||||||
import com.viaversion.viaversion.api.minecraft.Position;
|
import com.viaversion.viaversion.api.minecraft.Position;
|
||||||
import com.viaversion.viaversion.api.minecraft.entities.Entity1_19Types;
|
import com.viaversion.viaversion.api.minecraft.entities.Entity1_19Types;
|
||||||
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
||||||
|
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
|
||||||
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
|
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
|
||||||
import com.viaversion.viaversion.api.minecraft.nbt.BinaryTagIO;
|
import com.viaversion.viaversion.api.minecraft.nbt.BinaryTagIO;
|
||||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
||||||
import com.viaversion.viaversion.api.type.Type;
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
|
import com.viaversion.viaversion.api.type.types.Particle;
|
||||||
import com.viaversion.viaversion.api.type.types.version.Types1_18;
|
import com.viaversion.viaversion.api.type.types.version.Types1_18;
|
||||||
import com.viaversion.viaversion.api.type.types.version.Types1_19;
|
import com.viaversion.viaversion.api.type.types.version.Types1_19;
|
||||||
import com.viaversion.viaversion.data.entity.DimensionDataImpl;
|
import com.viaversion.viaversion.data.entity.DimensionDataImpl;
|
||||||
@ -41,6 +44,7 @@ import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ClientboundPacke
|
|||||||
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_18_2;
|
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_18_2;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.storage.DimensionRegistryStorage;
|
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.storage.DimensionRegistryStorage;
|
||||||
import com.viaversion.viaversion.rewriter.EntityRewriter;
|
import com.viaversion.viaversion.rewriter.EntityRewriter;
|
||||||
|
import com.viaversion.viaversion.util.Key;
|
||||||
import com.viaversion.viaversion.util.Pair;
|
import com.viaversion.viaversion.util.Pair;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -353,9 +357,29 @@ public final class EntityPackets extends EntityRewriter<ClientboundPackets1_18,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void registerRewrites() {
|
protected void registerRewrites() {
|
||||||
filter().handler((event, meta) -> meta.setMetaType(Types1_19.META_TYPES.byId(meta.metaType().typeId())));
|
filter().handler((event, meta) -> {
|
||||||
|
meta.setMetaType(Types1_19.META_TYPES.byId(meta.metaType().typeId()));
|
||||||
|
|
||||||
registerMetaTypeHandler(Types1_19.META_TYPES.itemType, Types1_19.META_TYPES.blockStateType, null, Types1_19.META_TYPES.particleType);
|
final MetaType type = meta.metaType();
|
||||||
|
if (type == Types1_19.META_TYPES.particleType) {
|
||||||
|
final Particle particle = (Particle) meta.getValue();
|
||||||
|
final ParticleMappings particleMappings = protocol.getMappingData().getParticleMappings();
|
||||||
|
if (particle.getId() == particleMappings.id("vibration")) {
|
||||||
|
// Remove the position
|
||||||
|
particle.getArguments().remove(0);
|
||||||
|
|
||||||
|
final String resourceLocation = Key.stripMinecraftNamespace(particle.getArguments().get(0).get());
|
||||||
|
if (resourceLocation.equals("entity")) {
|
||||||
|
// Add Y offset
|
||||||
|
particle.getArguments().add(2, new Particle.ParticleData(Type.FLOAT, 0F));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rewriteParticle(particle);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
registerMetaTypeHandler(Types1_19.META_TYPES.itemType, Types1_19.META_TYPES.blockStateType, null, null);
|
||||||
|
|
||||||
filter().filterFamily(Entity1_19Types.MINECART_ABSTRACT).index(11).handler((event, meta) -> {
|
filter().filterFamily(Entity1_19Types.MINECART_ABSTRACT).index(11).handler((event, meta) -> {
|
||||||
// Convert to new block id
|
// Convert to new block id
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
package com.viaversion.viaversion.protocols.protocol1_19to1_18_2.packets;
|
package com.viaversion.viaversion.protocols.protocol1_19to1_18_2.packets;
|
||||||
|
|
||||||
import com.viaversion.viaversion.api.Via;
|
import com.viaversion.viaversion.api.Via;
|
||||||
|
import com.viaversion.viaversion.api.data.ParticleMappings;
|
||||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
|
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
|
||||||
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
|
||||||
import com.viaversion.viaversion.api.type.Type;
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
@ -27,6 +28,7 @@ import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ServerboundPacke
|
|||||||
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.provider.AckSequenceProvider;
|
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.provider.AckSequenceProvider;
|
||||||
import com.viaversion.viaversion.rewriter.ItemRewriter;
|
import com.viaversion.viaversion.rewriter.ItemRewriter;
|
||||||
import com.viaversion.viaversion.rewriter.RecipeRewriter;
|
import com.viaversion.viaversion.rewriter.RecipeRewriter;
|
||||||
|
import com.viaversion.viaversion.util.Key;
|
||||||
|
|
||||||
public final class InventoryPackets extends ItemRewriter<ClientboundPackets1_18, ServerboundPackets1_19, Protocol1_19To1_18_2> {
|
public final class InventoryPackets extends ItemRewriter<ClientboundPackets1_18, ServerboundPackets1_19, Protocol1_19To1_18_2> {
|
||||||
|
|
||||||
@ -54,6 +56,19 @@ public final class InventoryPackets extends ItemRewriter<ClientboundPackets1_18,
|
|||||||
map(Type.FLOAT); // 7 - Offset Z
|
map(Type.FLOAT); // 7 - Offset Z
|
||||||
map(Type.FLOAT); // 8 - Particle Data
|
map(Type.FLOAT); // 8 - Particle Data
|
||||||
map(Type.INT); // 9 - Particle Count
|
map(Type.INT); // 9 - Particle Count
|
||||||
|
handler(wrapper -> {
|
||||||
|
final int id = wrapper.get(Type.VAR_INT, 0);
|
||||||
|
final ParticleMappings particleMappings = protocol.getMappingData().getParticleMappings();
|
||||||
|
if (id == particleMappings.id("vibration")) {
|
||||||
|
wrapper.read(Type.POSITION1_14); // Remove position
|
||||||
|
|
||||||
|
final String resourceLocation = Key.stripMinecraftNamespace(wrapper.passthrough(Type.STRING));
|
||||||
|
if (resourceLocation.equals("entity")) {
|
||||||
|
wrapper.passthrough(Type.VAR_INT); // Target entity
|
||||||
|
wrapper.write(Type.FLOAT, 0F); // Y offset
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
handler(getSpawnParticleHandler(Type.VAR_INT, Type.FLAT_VAR_INT_ITEM));
|
handler(getSpawnParticleHandler(Type.VAR_INT, Type.FLAT_VAR_INT_ITEM));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -77,7 +77,7 @@ public final class Protocol1_20To1_19_4 extends AbstractProtocol<ClientboundPack
|
|||||||
.reader("falling_dust", ParticleType.Readers.BLOCK)
|
.reader("falling_dust", ParticleType.Readers.BLOCK)
|
||||||
.reader("dust_color_transition", ParticleType.Readers.DUST_TRANSITION)
|
.reader("dust_color_transition", ParticleType.Readers.DUST_TRANSITION)
|
||||||
.reader("item", ParticleType.Readers.VAR_INT_ITEM)
|
.reader("item", ParticleType.Readers.VAR_INT_ITEM)
|
||||||
.reader("vibration", ParticleType.Readers.VIBRATION)
|
.reader("vibration", ParticleType.Readers.VIBRATION1_19)
|
||||||
.reader("sculk_charge", ParticleType.Readers.SCULK_CHARGE)
|
.reader("sculk_charge", ParticleType.Readers.SCULK_CHARGE)
|
||||||
.reader("shriek", ParticleType.Readers.SHRIEK);
|
.reader("shriek", ParticleType.Readers.SHRIEK);
|
||||||
}
|
}
|
||||||
|
@ -371,7 +371,9 @@ public abstract class ItemRewriter<C extends ClientboundPacketType, S extends Se
|
|||||||
public PacketHandler getSpawnParticleHandler(Type<Integer> idType, Type<Item> itemType) {
|
public PacketHandler getSpawnParticleHandler(Type<Integer> idType, Type<Item> itemType) {
|
||||||
return wrapper -> {
|
return wrapper -> {
|
||||||
int id = wrapper.get(idType, 0);
|
int id = wrapper.get(idType, 0);
|
||||||
if (id == -1) return;
|
if (id == -1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ParticleMappings mappings = protocol.getMappingData().getParticleMappings();
|
ParticleMappings mappings = protocol.getMappingData().getParticleMappings();
|
||||||
if (mappings.isBlockParticle(id)) {
|
if (mappings.isBlockParticle(id)) {
|
||||||
@ -381,9 +383,9 @@ public abstract class ItemRewriter<C extends ClientboundPacketType, S extends Se
|
|||||||
handleItemToClient(wrapper.passthrough(itemType));
|
handleItemToClient(wrapper.passthrough(itemType));
|
||||||
}
|
}
|
||||||
|
|
||||||
int newId = protocol.getMappingData().getNewParticleId(id);
|
int mappedId = protocol.getMappingData().getNewParticleId(id);
|
||||||
if (newId != id) {
|
if (mappedId != id) {
|
||||||
wrapper.set(idType, 0, newId);
|
wrapper.set(idType, 0, mappedId);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren