Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-12-28 00:50:13 +01:00
Handle item and particle meta
Dieser Commit ist enthalten in:
Ursprung
a6292988d5
Commit
02bf9501a9
@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||||
|
* Copyright (C) 2016-2021 ViaVersion and contributors
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
package com.viaversion.viaversion.api.minecraft.metadata.types;
|
||||||
|
|
||||||
|
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
|
||||||
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
|
import com.viaversion.viaversion.api.type.types.version.Types1_17;
|
||||||
|
|
||||||
|
public enum MetaType1_18 implements MetaType {
|
||||||
|
BYTE(0, Type.BYTE),
|
||||||
|
VAR_INT(1, Type.VAR_INT),
|
||||||
|
FLOAT(2, Type.FLOAT),
|
||||||
|
STRING(3, Type.STRING),
|
||||||
|
COMPONENT(4, Type.COMPONENT),
|
||||||
|
OPT_COMPONENT(5, Type.OPTIONAL_COMPONENT),
|
||||||
|
ITEM(6, Type.FLAT_VAR_INT_ITEM),
|
||||||
|
BOOLEAN(7, Type.BOOLEAN),
|
||||||
|
ROTATION(8, Type.ROTATION),
|
||||||
|
POSITION(9, Type.POSITION1_14),
|
||||||
|
OPT_POSITION(10, Type.OPTIONAL_POSITION_1_14),
|
||||||
|
DIRECTION(11, Type.VAR_INT),
|
||||||
|
OPT_UUID(12, Type.OPTIONAL_UUID),
|
||||||
|
BLOCK_STATE(13, Type.VAR_INT),
|
||||||
|
NBT(14, Type.NBT),
|
||||||
|
PARTICLE(15, Types1_17.PARTICLE),
|
||||||
|
VILLAGER_DATA(16, Type.VILLAGER_DATA),
|
||||||
|
OPT_VAR_INT(17, Type.OPTIONAL_VAR_INT),
|
||||||
|
POSE(18, Type.VAR_INT);
|
||||||
|
|
||||||
|
private static final MetaType1_18[] VALUES = values();
|
||||||
|
private final int typeId;
|
||||||
|
private final Type type;
|
||||||
|
|
||||||
|
MetaType1_18(int typeId, Type type) {
|
||||||
|
this.typeId = typeId;
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MetaType1_18 byId(int id) {
|
||||||
|
return VALUES[id];
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int typeId() {
|
||||||
|
return typeId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Type type() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||||
|
* Copyright (C) 2016-2021 ViaVersion and contributors
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
package com.viaversion.viaversion.api.type.types.minecraft;
|
||||||
|
|
||||||
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
|
|
||||||
|
public class Particle1_18Type extends AbstractParticleType {
|
||||||
|
|
||||||
|
public Particle1_18Type() {
|
||||||
|
readers.put(2, blockHandler());
|
||||||
|
readers.put(3, blockHandler());
|
||||||
|
readers.put(24, blockHandler());
|
||||||
|
readers.put(14, dustHandler());
|
||||||
|
readers.put(15, dustTransitionHandler());
|
||||||
|
readers.put(35, itemHandler(Type.FLAT_VAR_INT_ITEM));
|
||||||
|
readers.put(36, vibrationHandler(Type.POSITION1_14));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||||
|
* Copyright (C) 2016-2021 ViaVersion and contributors
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
package com.viaversion.viaversion.api.type.types.version;
|
||||||
|
|
||||||
|
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
|
||||||
|
import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_18;
|
||||||
|
import com.viaversion.viaversion.api.type.types.minecraft.ModernMetaType;
|
||||||
|
|
||||||
|
public class Metadata1_18Type extends ModernMetaType {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected MetaType getType(final int index) {
|
||||||
|
return MetaType1_18.byId(index);
|
||||||
|
}
|
||||||
|
}
|
@ -23,12 +23,18 @@
|
|||||||
package com.viaversion.viaversion.api.type.types.version;
|
package com.viaversion.viaversion.api.type.types.version;
|
||||||
|
|
||||||
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
|
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
|
||||||
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
|
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
|
||||||
import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
|
|
||||||
import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
|
|
||||||
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.minecraft.MetaListType;
|
||||||
|
import com.viaversion.viaversion.api.type.types.minecraft.Particle1_18Type;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public final class Types1_18 {
|
public final class Types1_18 {
|
||||||
|
|
||||||
public static final Type<BlockEntity> BLOCK_ENTITY = new BlockEntityType1_18();
|
public static final Type<BlockEntity> BLOCK_ENTITY = new BlockEntityType1_18();
|
||||||
|
public static final Type<Metadata> METADATA = new Metadata1_18Type();
|
||||||
|
public static final Type<List<Metadata>> METADATA_LIST = new MetaListType(METADATA);
|
||||||
|
public static final Type<Particle> PARTICLE = new Particle1_18Type();
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,11 @@ package com.viaversion.viaversion.protocols.protocol1_18to1_17_1.packets;
|
|||||||
import com.viaversion.viaversion.api.data.entity.EntityTracker;
|
import com.viaversion.viaversion.api.data.entity.EntityTracker;
|
||||||
import com.viaversion.viaversion.api.minecraft.entities.Entity1_17Types;
|
import com.viaversion.viaversion.api.minecraft.entities.Entity1_17Types;
|
||||||
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
||||||
|
import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_18;
|
||||||
import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper;
|
import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper;
|
||||||
import com.viaversion.viaversion.api.type.Type;
|
import com.viaversion.viaversion.api.type.Type;
|
||||||
|
import com.viaversion.viaversion.api.type.types.version.Types1_17;
|
||||||
|
import com.viaversion.viaversion.api.type.types.version.Types1_18;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_17_1to1_17.ClientboundPackets1_17_1;
|
import com.viaversion.viaversion.protocols.protocol1_17_1to1_17.ClientboundPackets1_17_1;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.Protocol1_18To1_17_1;
|
import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.Protocol1_18To1_17_1;
|
||||||
import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.storage.ChunkLightStorage;
|
import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.storage.ChunkLightStorage;
|
||||||
@ -39,10 +42,8 @@ public final class EntityPackets extends EntityRewriter<Protocol1_18To1_17_1> {
|
|||||||
/*registerTrackerWithData(ClientboundPackets1_17_1.SPAWN_ENTITY, Entity1_18Types.FALLING_BLOCK);
|
/*registerTrackerWithData(ClientboundPackets1_17_1.SPAWN_ENTITY, Entity1_18Types.FALLING_BLOCK);
|
||||||
registerTracker(ClientboundPackets1_17_1.SPAWN_MOB);
|
registerTracker(ClientboundPackets1_17_1.SPAWN_MOB);
|
||||||
registerTracker(ClientboundPackets1_17_1.SPAWN_PLAYER, Entity1_18Types.PLAYER);
|
registerTracker(ClientboundPackets1_17_1.SPAWN_PLAYER, Entity1_18Types.PLAYER);
|
||||||
registerMetadataRewriter(ClientboundPackets1_17_1.ENTITY_METADATA, Types1_17.METADATA_LIST);
|
|
||||||
registerRemoveEntities(ClientboundPackets1_17_1.REMOVE_ENTITIES);*/
|
registerRemoveEntities(ClientboundPackets1_17_1.REMOVE_ENTITIES);*/
|
||||||
|
registerMetadataRewriter(ClientboundPackets1_17_1.ENTITY_METADATA, Types1_17.METADATA_LIST, Types1_18.METADATA_LIST);
|
||||||
//TODO NEW METATYPE FOR PARTICLE CHANGE
|
|
||||||
|
|
||||||
protocol.registerClientbound(ClientboundPackets1_17_1.JOIN_GAME, new PacketRemapper() {
|
protocol.registerClientbound(ClientboundPackets1_17_1.JOIN_GAME, new PacketRemapper() {
|
||||||
@Override
|
@Override
|
||||||
@ -85,7 +86,8 @@ public final class EntityPackets extends EntityRewriter<Protocol1_18To1_17_1> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void registerRewrites() {
|
protected void registerRewrites() {
|
||||||
//registerMetaTypeHandler(MetaType1_17.ITEM, MetaType1_17.BLOCK_STATE, MetaType1_17.PARTICLE); //TODO with nulls if needed
|
filter().handler((event, meta) -> meta.setMetaType(MetaType1_18.byId(meta.metaType().typeId())));
|
||||||
|
registerMetaTypeHandler(MetaType1_18.ITEM, null, MetaType1_18.PARTICLE);
|
||||||
|
|
||||||
/*filter().filterFamily(Entity1_17Types.MINECART_ABSTRACT).index(11).handler((event, meta) -> { //TODO check id
|
/*filter().filterFamily(Entity1_17Types.MINECART_ABSTRACT).index(11).handler((event, meta) -> { //TODO check id
|
||||||
// Convert to new block id
|
// Convert to new block id
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren