Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
01cdc4416c | ||
|
|
7c2845b884 | ||
|
|
7cbfffaa68 | ||
|
|
0d0719040c | ||
|
|
858fcb2b16 | ||
|
|
dc4c929108 | ||
|
|
0fe3d9410e | ||
|
|
cc9bf7284a | ||
|
|
383281cb9f | ||
|
|
d18825e700 | ||
|
|
2427690b78 | ||
|
|
a4261d6d9e | ||
|
|
091a63e45d | ||
|
|
9a9c6c4644 | ||
|
|
808b1fd2f0 | ||
|
|
9d3ee288df | ||
|
|
100901029e | ||
|
|
5bf8b59e91 | ||
|
|
c554027108 | ||
|
|
4d295fbe2c |
No files matched your search
@@ -8,18 +8,18 @@ on: [push, pull_request]
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up JDK 11
|
||||
uses: actions/setup-java@v2
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
distribution: 'temurin'
|
||||
java-version: 11
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew build
|
||||
- uses: actions/upload-artifact@v2
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: artifact
|
||||
path: build/libs
|
||||
+1
-1
@@ -5,7 +5,7 @@ plugins {
|
||||
|
||||
allprojects {
|
||||
group = "com.viaversion"
|
||||
version = "4.4.2"
|
||||
version = "4.5.1"
|
||||
description = "Allow older clients to join newer server versions."
|
||||
}
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@ import com.viaversion.viabackwards.protocol.protocol1_17_1to1_18.Protocol1_17_1T
|
||||
import com.viaversion.viabackwards.protocol.protocol1_17to1_17_1.Protocol1_17To1_17_1;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.Protocol1_18_2To1_19;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_18to1_18_2.Protocol1_18To1_18_2;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.Protocol1_19_1To1_19_3;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.Protocol1_19To1_19_1;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_9_4to1_10.Protocol1_9_4To1_10;
|
||||
import com.viaversion.viaversion.api.Via;
|
||||
@@ -59,7 +60,7 @@ import java.util.logging.Logger;
|
||||
|
||||
public interface ViaBackwardsPlatform {
|
||||
|
||||
String MINIMUM_VV_VERSION = "4.4.2";
|
||||
String MINIMUM_VV_VERSION = "4.5.0";
|
||||
String IMPL_VERSION = "$IMPL_VERSION";
|
||||
|
||||
/**
|
||||
@@ -119,6 +120,8 @@ public interface ViaBackwardsPlatform {
|
||||
|
||||
protocolManager.registerProtocol(new Protocol1_18_2To1_19(), ProtocolVersion.v1_18_2, ProtocolVersion.v1_19);
|
||||
protocolManager.registerProtocol(new Protocol1_19To1_19_1(), ProtocolVersion.v1_19, ProtocolVersion.v1_19_1);
|
||||
|
||||
protocolManager.registerProtocol(new Protocol1_19_1To1_19_3(), ProtocolVersion.v1_19_1, ProtocolVersion.v1_19_3);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -104,7 +104,7 @@ public class BackwardsMappings extends MappingDataBase {
|
||||
/**
|
||||
* To be overridden.
|
||||
*/
|
||||
protected void loadVBExtras(JsonObject oldMappings, JsonObject newMappings) {
|
||||
protected void loadVBExtras(JsonObject unmapped, JsonObject mapped) {
|
||||
}
|
||||
|
||||
protected boolean shouldWarnOnMissing(String key) {
|
||||
|
||||
@@ -91,6 +91,11 @@ public abstract class EntityRewriter<T extends BackwardsProtocol> extends Entity
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a handler to track the current world and uncache entity data on world changes.
|
||||
*
|
||||
* @return handler to track the current world
|
||||
*/
|
||||
public PacketHandler worldTrackerHandlerByKey() {
|
||||
return wrapper -> {
|
||||
EntityTracker tracker = tracker(wrapper.user());
|
||||
|
||||
@@ -55,7 +55,10 @@ public class SoundRewriter extends com.viaversion.viaversion.rewriter.SoundRewri
|
||||
return wrapper -> {
|
||||
String soundId = wrapper.get(Type.STRING, 0);
|
||||
String mappedId = protocol.getMappingData().getMappedNamedSound(soundId);
|
||||
if (mappedId == null) return;
|
||||
if (mappedId == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mappedId.isEmpty()) {
|
||||
wrapper.set(Type.STRING, 0, mappedId);
|
||||
} else {
|
||||
@@ -89,4 +92,35 @@ public class SoundRewriter extends com.viaversion.viaversion.rewriter.SoundRewri
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public PacketHandler get1_19_3SoundHandler() {
|
||||
return wrapper -> {
|
||||
final int soundId = wrapper.read(Type.VAR_INT);
|
||||
if (soundId != 0) {
|
||||
final int mappedId = idRewriter.rewrite(soundId - 1); // Normalize the id
|
||||
if (mappedId == -1) {
|
||||
wrapper.cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
wrapper.write(Type.VAR_INT, mappedId + 1);
|
||||
return;
|
||||
}
|
||||
|
||||
// Is followed by the resource loation
|
||||
wrapper.write(Type.VAR_INT, 0);
|
||||
|
||||
String soundIdentifier = wrapper.read(Type.STRING);
|
||||
final String mappedIdentifier = protocol.getMappingData().getMappedNamedSound(soundIdentifier);
|
||||
if (mappedIdentifier != null) {
|
||||
if (mappedIdentifier.isEmpty()) {
|
||||
wrapper.cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
soundIdentifier = mappedIdentifier;
|
||||
}
|
||||
wrapper.write(Type.STRING, soundIdentifier);
|
||||
};
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -37,7 +37,7 @@ public class TranslatableRewriter extends ComponentRewriter {
|
||||
protected final Map<String, String> newTranslatables;
|
||||
|
||||
public static void loadTranslatables() {
|
||||
JsonObject jsonObject = VBMappingDataLoader.loadData("translation-mappings.json");
|
||||
JsonObject jsonObject = VBMappingDataLoader.loadFromDataDir("translation-mappings.json");
|
||||
for (Map.Entry<String, JsonElement> entry : jsonObject.entrySet()) {
|
||||
Map<String, String> versionMappings = new HashMap<>();
|
||||
TRANSLATABLES.put(entry.getKey(), versionMappings);
|
||||
|
||||
+2
-2
@@ -47,9 +47,9 @@ public class BackwardsMappings extends com.viaversion.viabackwards.api.data.Back
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadVBExtras(JsonObject oldMappings, JsonObject newMappings) {
|
||||
public void loadVBExtras(JsonObject unmapped, JsonObject mapped) {
|
||||
enchantmentMappings = VBMappings.vbBuilder().warnOnMissing(false)
|
||||
.unmapped(oldMappings.getAsJsonArray("enchantments")).mapped(newMappings.getAsJsonObject("legacy_enchantments")).build();
|
||||
.unmapped(unmapped.getAsJsonArray("enchantments")).mapped(mapped.getAsJsonObject("legacy_enchantments")).build();
|
||||
for (Map.Entry<String, Integer> entry : StatisticMappings.CUSTOM_STATS.entrySet()) {
|
||||
statisticMappings.put(entry.getValue().intValue(), entry.getKey());
|
||||
}
|
||||
|
||||
+3
-9
@@ -192,23 +192,17 @@ public class PlayerPacket1_13 extends RewriterBase<Protocol1_12_2To1_13> {
|
||||
for (int j = 0; j < nProperties; j++) {
|
||||
packetWrapper.passthrough(Type.STRING);
|
||||
packetWrapper.passthrough(Type.STRING);
|
||||
if (packetWrapper.passthrough(Type.BOOLEAN)) {
|
||||
packetWrapper.passthrough(Type.STRING);
|
||||
}
|
||||
packetWrapper.passthrough(Type.OPTIONAL_STRING);
|
||||
}
|
||||
packetWrapper.passthrough(Type.VAR_INT);
|
||||
packetWrapper.passthrough(Type.VAR_INT);
|
||||
if (packetWrapper.passthrough(Type.BOOLEAN)) {
|
||||
packetWrapper.passthrough(Type.COMPONENT);
|
||||
}
|
||||
packetWrapper.passthrough(Type.OPTIONAL_COMPONENT);
|
||||
} else if (action == 1) { // Update Game Mode
|
||||
packetWrapper.passthrough(Type.VAR_INT);
|
||||
} else if (action == 2) { // Update Ping
|
||||
packetWrapper.passthrough(Type.VAR_INT);
|
||||
} else if (action == 3) { // Update Display Name
|
||||
if (packetWrapper.passthrough(Type.BOOLEAN)) {
|
||||
packetWrapper.passthrough(Type.COMPONENT);
|
||||
}
|
||||
packetWrapper.passthrough(Type.OPTIONAL_COMPONENT);
|
||||
} else if (action == 4) { // Remove Player
|
||||
storage.usernames().remove(uuid);
|
||||
}
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@ public class BlockItemPackets1_15 extends com.viaversion.viabackwards.api.rewrit
|
||||
registerSetCooldown(ClientboundPackets1_15.COOLDOWN);
|
||||
registerWindowItems(ClientboundPackets1_15.WINDOW_ITEMS, Type.FLAT_VAR_INT_ITEM_ARRAY);
|
||||
registerSetSlot(ClientboundPackets1_15.SET_SLOT, Type.FLAT_VAR_INT_ITEM);
|
||||
registerTradeList(ClientboundPackets1_15.TRADE_LIST, Type.FLAT_VAR_INT_ITEM);
|
||||
registerTradeList(ClientboundPackets1_15.TRADE_LIST);
|
||||
registerEntityEquipment(ClientboundPackets1_15.ENTITY_EQUIPMENT, Type.FLAT_VAR_INT_ITEM);
|
||||
registerAdvancements(ClientboundPackets1_15.ADVANCEMENTS, Type.FLAT_VAR_INT_ITEM);
|
||||
registerClickWindow(ServerboundPackets1_14.CLICK_WINDOW, Type.FLAT_VAR_INT_ITEM);
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ public class BackwardsMappings extends com.viaversion.viabackwards.api.data.Back
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadVBExtras(JsonObject oldMappings, JsonObject newMappings) {
|
||||
protected void loadVBExtras(JsonObject unmapped, JsonObject mapped) {
|
||||
for (Map.Entry<String, String> entry : Protocol1_16To1_15_2.MAPPINGS.getAttributeMappings().entrySet()) {
|
||||
attributeMappings.put(entry.getValue(), entry.getKey());
|
||||
}
|
||||
|
||||
+1
-1
@@ -98,7 +98,7 @@ public class BlockItemPackets1_16 extends com.viaversion.viabackwards.api.rewrit
|
||||
registerSetCooldown(ClientboundPackets1_16.COOLDOWN);
|
||||
registerWindowItems(ClientboundPackets1_16.WINDOW_ITEMS, Type.FLAT_VAR_INT_ITEM_ARRAY);
|
||||
registerSetSlot(ClientboundPackets1_16.SET_SLOT, Type.FLAT_VAR_INT_ITEM);
|
||||
registerTradeList(ClientboundPackets1_16.TRADE_LIST, Type.FLAT_VAR_INT_ITEM);
|
||||
registerTradeList(ClientboundPackets1_16.TRADE_LIST);
|
||||
registerAdvancements(ClientboundPackets1_16.ADVANCEMENTS, Type.FLAT_VAR_INT_ITEM);
|
||||
|
||||
blockRewriter.registerAcknowledgePlayerDigging(ClientboundPackets1_16.ACKNOWLEDGE_PLAYER_DIGGING);
|
||||
|
||||
+5
-11
@@ -221,25 +221,19 @@ public class EntityPackets1_16 extends EntityRewriter<Protocol1_15_2To1_16> {
|
||||
for (int j = 0; j < properties; j++) {
|
||||
packetWrapper.passthrough(Type.STRING);
|
||||
packetWrapper.passthrough(Type.STRING);
|
||||
if (packetWrapper.passthrough(Type.BOOLEAN)) {
|
||||
packetWrapper.passthrough(Type.STRING);
|
||||
}
|
||||
packetWrapper.passthrough(Type.OPTIONAL_STRING);
|
||||
}
|
||||
packetWrapper.passthrough(Type.VAR_INT);
|
||||
packetWrapper.passthrough(Type.VAR_INT);
|
||||
if (packetWrapper.passthrough(Type.BOOLEAN)) {
|
||||
// Display Name
|
||||
protocol.getTranslatableRewriter().processText(packetWrapper.passthrough(Type.COMPONENT));
|
||||
}
|
||||
// Display Name
|
||||
protocol.getTranslatableRewriter().processText(packetWrapper.passthrough(Type.OPTIONAL_COMPONENT));
|
||||
} else if (action == 1) { // Update Game Mode
|
||||
packetWrapper.passthrough(Type.VAR_INT);
|
||||
} else if (action == 2) { // Update Ping
|
||||
packetWrapper.passthrough(Type.VAR_INT);
|
||||
} else if (action == 3) { // Update Display Name
|
||||
if (packetWrapper.passthrough(Type.BOOLEAN)) {
|
||||
// Display name
|
||||
protocol.getTranslatableRewriter().processText(packetWrapper.passthrough(Type.COMPONENT));
|
||||
}
|
||||
// Display name
|
||||
protocol.getTranslatableRewriter().processText(packetWrapper.passthrough(Type.OPTIONAL_COMPONENT));
|
||||
} // 4 = Remove Player
|
||||
}
|
||||
});
|
||||
|
||||
+2
-2
@@ -51,8 +51,8 @@ public class BlockItemPackets1_16_2 extends com.viaversion.viabackwards.api.rewr
|
||||
registerSetCooldown(ClientboundPackets1_16_2.COOLDOWN);
|
||||
registerWindowItems(ClientboundPackets1_16_2.WINDOW_ITEMS, Type.FLAT_VAR_INT_ITEM_ARRAY);
|
||||
registerSetSlot(ClientboundPackets1_16_2.SET_SLOT, Type.FLAT_VAR_INT_ITEM);
|
||||
registerEntityEquipmentArray(ClientboundPackets1_16_2.ENTITY_EQUIPMENT, Type.FLAT_VAR_INT_ITEM);
|
||||
registerTradeList(ClientboundPackets1_16_2.TRADE_LIST, Type.FLAT_VAR_INT_ITEM);
|
||||
registerEntityEquipmentArray(ClientboundPackets1_16_2.ENTITY_EQUIPMENT);
|
||||
registerTradeList(ClientboundPackets1_16_2.TRADE_LIST);
|
||||
registerAdvancements(ClientboundPackets1_16_2.ADVANCEMENTS, Type.FLAT_VAR_INT_ITEM);
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_16_2.UNLOCK_RECIPES, new PacketRemapper() {
|
||||
|
||||
+2
-2
@@ -66,8 +66,8 @@ public final class BlockItemPackets1_17 extends ItemRewriter<Protocol1_16_4To1_1
|
||||
|
||||
registerSetCooldown(ClientboundPackets1_17.COOLDOWN);
|
||||
registerWindowItems(ClientboundPackets1_17.WINDOW_ITEMS, Type.FLAT_VAR_INT_ITEM_ARRAY);
|
||||
registerEntityEquipmentArray(ClientboundPackets1_17.ENTITY_EQUIPMENT, Type.FLAT_VAR_INT_ITEM);
|
||||
registerTradeList(ClientboundPackets1_17.TRADE_LIST, Type.FLAT_VAR_INT_ITEM);
|
||||
registerEntityEquipmentArray(ClientboundPackets1_17.ENTITY_EQUIPMENT);
|
||||
registerTradeList(ClientboundPackets1_17.TRADE_LIST);
|
||||
registerAdvancements(ClientboundPackets1_17.ADVANCEMENTS, Type.FLAT_VAR_INT_ITEM);
|
||||
|
||||
blockRewriter.registerAcknowledgePlayerDigging(ClientboundPackets1_17.ACKNOWLEDGE_PLAYER_DIGGING);
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ public final class BackwardsMappings extends com.viaversion.viabackwards.api.dat
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadVBExtras(final JsonObject oldMappings, final JsonObject newMappings) {
|
||||
protected void loadVBExtras(final JsonObject unmapped, final JsonObject mapped) {
|
||||
for (final Object2IntMap.Entry<String> entry : Protocol1_18To1_17_1.MAPPINGS.blockEntityIds().object2IntEntrySet()) {
|
||||
blockEntities.put(entry.getIntValue(), entry.getKey());
|
||||
}
|
||||
|
||||
+5
-5
@@ -58,12 +58,12 @@ public final class BlockItemPackets1_18 extends ItemRewriter<Protocol1_17_1To1_1
|
||||
new RecipeRewriter1_16(protocol).registerDefaultHandler(ClientboundPackets1_18.DECLARE_RECIPES);
|
||||
|
||||
registerSetCooldown(ClientboundPackets1_18.COOLDOWN);
|
||||
registerWindowItems1_17_1(ClientboundPackets1_18.WINDOW_ITEMS, Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, Type.FLAT_VAR_INT_ITEM);
|
||||
registerSetSlot1_17_1(ClientboundPackets1_18.SET_SLOT, Type.FLAT_VAR_INT_ITEM);
|
||||
registerEntityEquipmentArray(ClientboundPackets1_18.ENTITY_EQUIPMENT, Type.FLAT_VAR_INT_ITEM);
|
||||
registerTradeList(ClientboundPackets1_18.TRADE_LIST, Type.FLAT_VAR_INT_ITEM);
|
||||
registerWindowItems1_17_1(ClientboundPackets1_18.WINDOW_ITEMS);
|
||||
registerSetSlot1_17_1(ClientboundPackets1_18.SET_SLOT);
|
||||
registerEntityEquipmentArray(ClientboundPackets1_18.ENTITY_EQUIPMENT);
|
||||
registerTradeList(ClientboundPackets1_18.TRADE_LIST);
|
||||
registerAdvancements(ClientboundPackets1_18.ADVANCEMENTS, Type.FLAT_VAR_INT_ITEM);
|
||||
registerClickWindow1_17_1(ServerboundPackets1_17.CLICK_WINDOW, Type.FLAT_VAR_INT_ITEM);
|
||||
registerClickWindow1_17_1(ServerboundPackets1_17.CLICK_WINDOW);
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_18.EFFECT, new PacketRemapper() {
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -43,9 +43,9 @@ public final class BackwardsMappings extends com.viaversion.viabackwards.api.dat
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadVBExtras(final JsonObject oldMappings, final JsonObject newMappings) {
|
||||
protected void loadVBExtras(final JsonObject unmapped, final JsonObject mapped) {
|
||||
int i = 0;
|
||||
final JsonArray types = oldMappings.getAsJsonArray("argumenttypes");
|
||||
final JsonArray types = unmapped.getAsJsonArray("argumenttypes");
|
||||
this.argumentTypes = new String[types.size()];
|
||||
for (final JsonElement element : types) {
|
||||
final String id = element.getAsString();
|
||||
|
||||
+4
-4
@@ -49,11 +49,11 @@ public final class BlockItemPackets1_19 extends ItemRewriter<Protocol1_18_2To1_1
|
||||
new RecipeRewriter1_16(protocol).registerDefaultHandler(ClientboundPackets1_19.DECLARE_RECIPES);
|
||||
|
||||
registerSetCooldown(ClientboundPackets1_19.COOLDOWN);
|
||||
registerWindowItems1_17_1(ClientboundPackets1_19.WINDOW_ITEMS, Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, Type.FLAT_VAR_INT_ITEM);
|
||||
registerSetSlot1_17_1(ClientboundPackets1_19.SET_SLOT, Type.FLAT_VAR_INT_ITEM);
|
||||
registerEntityEquipmentArray(ClientboundPackets1_19.ENTITY_EQUIPMENT, Type.FLAT_VAR_INT_ITEM);
|
||||
registerWindowItems1_17_1(ClientboundPackets1_19.WINDOW_ITEMS);
|
||||
registerSetSlot1_17_1(ClientboundPackets1_19.SET_SLOT);
|
||||
registerEntityEquipmentArray(ClientboundPackets1_19.ENTITY_EQUIPMENT);
|
||||
registerAdvancements(ClientboundPackets1_19.ADVANCEMENTS, Type.FLAT_VAR_INT_ITEM);
|
||||
registerClickWindow1_17_1(ServerboundPackets1_17.CLICK_WINDOW, Type.FLAT_VAR_INT_ITEM);
|
||||
registerClickWindow1_17_1(ServerboundPackets1_17.CLICK_WINDOW);
|
||||
|
||||
blockRewriter.registerBlockAction(ClientboundPackets1_19.BLOCK_ACTION);
|
||||
blockRewriter.registerBlockChange(ClientboundPackets1_19.BLOCK_CHANGE);
|
||||
|
||||
+14
-19
@@ -219,25 +219,19 @@ public final class EntityPackets1_19 extends EntityRewriter<Protocol1_18_2To1_19
|
||||
for (int j = 0; j < properties; j++) {
|
||||
wrapper.passthrough(Type.STRING); // Name
|
||||
wrapper.passthrough(Type.STRING); // Value
|
||||
if (wrapper.passthrough(Type.BOOLEAN)) {
|
||||
wrapper.passthrough(Type.STRING); // Signature
|
||||
}
|
||||
wrapper.passthrough(Type.OPTIONAL_STRING); // Signature
|
||||
}
|
||||
|
||||
wrapper.passthrough(Type.VAR_INT); // Gamemode
|
||||
wrapper.passthrough(Type.VAR_INT); // Ping
|
||||
if (wrapper.passthrough(Type.BOOLEAN)) {
|
||||
wrapper.passthrough(Type.COMPONENT); // Display name
|
||||
}
|
||||
wrapper.passthrough(Type.OPTIONAL_COMPONENT); // Display name
|
||||
|
||||
// Remove public profile signature
|
||||
wrapper.read(Type.OPTIONAL_PROFILE_KEY);
|
||||
} else if (action == 1 || action == 2) { // Update gamemode/update latency
|
||||
wrapper.passthrough(Type.VAR_INT);
|
||||
} else if (action == 3) { // Update display name
|
||||
if (wrapper.passthrough(Type.BOOLEAN)) {
|
||||
wrapper.passthrough(Type.COMPONENT);
|
||||
}
|
||||
wrapper.passthrough(Type.OPTIONAL_COMPONENT);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -246,7 +240,7 @@ public final class EntityPackets1_19 extends EntityRewriter<Protocol1_18_2To1_19
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMappingDataLoaded() {
|
||||
protected void registerRewrites() {
|
||||
filter().handler((event, meta) -> {
|
||||
if (meta.metaType().typeId() <= Types1_18.META_TYPES.poseType.typeId()) {
|
||||
meta.setMetaType(Types1_18.META_TYPES.byId(meta.metaType().typeId()));
|
||||
@@ -282,8 +276,6 @@ public final class EntityPackets1_19 extends EntityRewriter<Protocol1_18_2To1_19
|
||||
|
||||
registerMetaTypeHandler(Types1_18.META_TYPES.itemType, Types1_18.META_TYPES.blockStateType, null, Types1_18.META_TYPES.optionalComponentType);
|
||||
|
||||
mapTypes();
|
||||
|
||||
filter().filterFamily(Entity1_19Types.MINECART_ABSTRACT).index(11).handler((event, meta) -> {
|
||||
final int data = (int) meta.getValue();
|
||||
meta.setValue(protocol.getMappingData().getNewBlockStateId(data));
|
||||
@@ -315,20 +307,23 @@ public final class EntityPackets1_19 extends EntityRewriter<Protocol1_18_2To1_19
|
||||
filter().type(Entity1_19Types.FROG).cancel(16); // Age
|
||||
filter().type(Entity1_19Types.FROG).cancel(17); // Variant
|
||||
filter().type(Entity1_19Types.FROG).cancel(18); // Tongue target
|
||||
mapEntityTypeWithData(Entity1_19Types.FROG, Entity1_19Types.RABBIT).jsonName();
|
||||
|
||||
mapEntityTypeWithData(Entity1_19Types.TADPOLE, Entity1_19Types.PUFFERFISH).jsonName();
|
||||
mapEntityTypeWithData(Entity1_19Types.CHEST_BOAT, Entity1_19Types.BOAT);
|
||||
|
||||
filter().type(Entity1_19Types.WARDEN).cancel(16); // Anger
|
||||
mapEntityTypeWithData(Entity1_19Types.WARDEN, Entity1_19Types.IRON_GOLEM).jsonName();
|
||||
|
||||
mapEntityTypeWithData(Entity1_19Types.ALLAY, Entity1_19Types.VEX).jsonName();
|
||||
|
||||
filter().type(Entity1_19Types.GOAT).cancel(18);
|
||||
filter().type(Entity1_19Types.GOAT).cancel(19);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMappingDataLoaded() {
|
||||
mapTypes();
|
||||
mapEntityTypeWithData(Entity1_19Types.FROG, Entity1_19Types.RABBIT).jsonName();
|
||||
mapEntityTypeWithData(Entity1_19Types.TADPOLE, Entity1_19Types.PUFFERFISH).jsonName();
|
||||
mapEntityTypeWithData(Entity1_19Types.CHEST_BOAT, Entity1_19Types.BOAT);
|
||||
mapEntityTypeWithData(Entity1_19Types.WARDEN, Entity1_19Types.IRON_GOLEM).jsonName();
|
||||
mapEntityTypeWithData(Entity1_19Types.ALLAY, Entity1_19Types.VEX).jsonName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType typeFromId(final int typeId) {
|
||||
return Entity1_19Types.getTypeFromId(typeId);
|
||||
|
||||
+404
@@ -0,0 +1,404 @@
|
||||
/*
|
||||
* This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards
|
||||
* Copyright (C) 2016-2022 ViaVersion and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.viaversion.viabackwards.api.BackwardsProtocol;
|
||||
import com.viaversion.viabackwards.api.rewriters.SoundRewriter;
|
||||
import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.data.BackwardsMappings;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.packets.BlockItemPackets1_19_3;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.packets.EntityPackets1_19_3;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.storage.ChatSessionStorage;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.storage.ChatTypeStorage1_19_3;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.storage.NonceStorage;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.Protocol1_19To1_19_1;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.minecraft.ProfileKey;
|
||||
import com.viaversion.viaversion.api.minecraft.RegistryType;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.Entity1_19_3Types;
|
||||
import com.viaversion.viaversion.api.protocol.packet.State;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper;
|
||||
import com.viaversion.viaversion.api.rewriter.EntityRewriter;
|
||||
import com.viaversion.viaversion.api.rewriter.ItemRewriter;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.api.type.types.BitSetType;
|
||||
import com.viaversion.viaversion.api.type.types.ByteArrayType;
|
||||
import com.viaversion.viaversion.data.entity.EntityTrackerBase;
|
||||
import com.viaversion.viaversion.libs.gson.JsonElement;
|
||||
import com.viaversion.viaversion.libs.kyori.adventure.text.Component;
|
||||
import com.viaversion.viaversion.libs.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||
import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets;
|
||||
import com.viaversion.viaversion.protocols.base.ServerboundLoginPackets;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.ClientboundPackets1_19_1;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.ServerboundPackets1_19_1;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPackets1_19_3;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.Protocol1_19_3To1_19_1;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ServerboundPackets1_19_3;
|
||||
import com.viaversion.viaversion.rewriter.CommandRewriter;
|
||||
import com.viaversion.viaversion.rewriter.StatisticsRewriter;
|
||||
import com.viaversion.viaversion.rewriter.TagRewriter;
|
||||
import com.viaversion.viaversion.util.CipherUtil;
|
||||
|
||||
import java.util.BitSet;
|
||||
|
||||
public final class Protocol1_19_1To1_19_3 extends BackwardsProtocol<ClientboundPackets1_19_3, ClientboundPackets1_19_1, ServerboundPackets1_19_3, ServerboundPackets1_19_1> {
|
||||
|
||||
public static final BackwardsMappings MAPPINGS = new BackwardsMappings();
|
||||
private static final ByteArrayType.OptionalByteArrayType OPTIONAL_SIGNATURE_BYTES_TYPE = new ByteArrayType.OptionalByteArrayType(256);
|
||||
private static final ByteArrayType SIGNATURE_BYTES_TYPE = new ByteArrayType(256);
|
||||
private final EntityPackets1_19_3 entityRewriter = new EntityPackets1_19_3(this);
|
||||
private final BlockItemPackets1_19_3 itemRewriter = new BlockItemPackets1_19_3(this);
|
||||
private final TranslatableRewriter translatableRewriter = new TranslatableRewriter(this);
|
||||
|
||||
public Protocol1_19_1To1_19_3() {
|
||||
super(ClientboundPackets1_19_3.class, ClientboundPackets1_19_1.class, ServerboundPackets1_19_3.class, ServerboundPackets1_19_1.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void registerPackets() {
|
||||
executeAsyncAfterLoaded(Protocol1_19_3To1_19_1.class, () -> {
|
||||
MAPPINGS.load();
|
||||
entityRewriter.onMappingDataLoaded();
|
||||
});
|
||||
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_3.SYSTEM_CHAT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_3.ACTIONBAR);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_3.TITLE_TEXT);
|
||||
translatableRewriter.registerComponentPacket(ClientboundPackets1_19_3.TITLE_SUBTITLE);
|
||||
translatableRewriter.registerBossBar(ClientboundPackets1_19_3.BOSSBAR);
|
||||
translatableRewriter.registerDisconnect(ClientboundPackets1_19_3.DISCONNECT);
|
||||
translatableRewriter.registerTabList(ClientboundPackets1_19_3.TAB_LIST);
|
||||
translatableRewriter.registerOpenWindow(ClientboundPackets1_19_3.OPEN_WINDOW);
|
||||
translatableRewriter.registerCombatKill(ClientboundPackets1_19_3.COMBAT_KILL);
|
||||
translatableRewriter.registerPing();
|
||||
|
||||
itemRewriter.register();
|
||||
entityRewriter.register();
|
||||
|
||||
final SoundRewriter soundRewriter = new SoundRewriter(this);
|
||||
soundRewriter.registerStopSound(ClientboundPackets1_19_3.STOP_SOUND);
|
||||
registerClientbound(ClientboundPackets1_19_3.SOUND, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
handler(wrapper -> {
|
||||
final int soundId = wrapper.read(Type.VAR_INT) - 1; // Normalize the id
|
||||
if (soundId != -1) {
|
||||
final int mappedId = MAPPINGS.getSoundMappings().getNewId(soundId);
|
||||
if (mappedId == -1) {
|
||||
wrapper.cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
wrapper.write(Type.VAR_INT, mappedId);
|
||||
return;
|
||||
}
|
||||
|
||||
String soundIdentifier = wrapper.read(Type.STRING);
|
||||
wrapper.read(Type.OPTIONAL_FLOAT); // Fixed range
|
||||
final String mappedIdentifier = MAPPINGS.getMappedNamedSound(soundIdentifier);
|
||||
if (mappedIdentifier != null) {
|
||||
if (mappedIdentifier.isEmpty()) {
|
||||
wrapper.cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
soundIdentifier = mappedIdentifier;
|
||||
}
|
||||
|
||||
wrapper.write(Type.STRING, soundIdentifier);
|
||||
wrapper.setPacketType(ClientboundPackets1_19_1.NAMED_SOUND);
|
||||
});
|
||||
}
|
||||
});
|
||||
registerClientbound(ClientboundPackets1_19_3.ENTITY_SOUND, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
handler(wrapper -> {
|
||||
final int soundId = wrapper.read(Type.VAR_INT) - 1; // Normalize the id
|
||||
if (soundId != -1) {
|
||||
final int mappedId = MAPPINGS.getSoundMappings().getNewId(soundId);
|
||||
if (mappedId == -1) {
|
||||
wrapper.cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
wrapper.write(Type.VAR_INT, mappedId);
|
||||
}
|
||||
|
||||
// Convert the resource location to the corresponding integer id
|
||||
String soundIdentifier = wrapper.read(Type.STRING);
|
||||
wrapper.read(Type.OPTIONAL_FLOAT); // Fixed range
|
||||
final String mappedIdentifier = MAPPINGS.getMappedNamedSound(soundIdentifier);
|
||||
if (mappedIdentifier != null) {
|
||||
if (mappedIdentifier.isEmpty()) {
|
||||
wrapper.cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
soundIdentifier = mappedIdentifier;
|
||||
}
|
||||
|
||||
final int mappedId = MAPPINGS.mappedSound(soundIdentifier);
|
||||
if (mappedId == -1) {
|
||||
wrapper.cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
wrapper.write(Type.VAR_INT, mappedId);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
final TagRewriter tagRewriter = new TagRewriter(this);
|
||||
tagRewriter.addEmptyTag(RegistryType.BLOCK, "minecraft:non_flammable_wood");
|
||||
tagRewriter.addEmptyTag(RegistryType.ITEM, "minecraft:overworld_natural_logs");
|
||||
tagRewriter.registerGeneric(ClientboundPackets1_19_3.TAGS);
|
||||
|
||||
new StatisticsRewriter(this).register(ClientboundPackets1_19_3.STATISTICS);
|
||||
|
||||
final CommandRewriter commandRewriter = new CommandRewriter(this);
|
||||
registerClientbound(ClientboundPackets1_19_3.DECLARE_COMMANDS, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
handler(wrapper -> {
|
||||
final int size = wrapper.passthrough(Type.VAR_INT);
|
||||
for (int i = 0; i < size; i++) {
|
||||
final byte flags = wrapper.passthrough(Type.BYTE);
|
||||
wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices
|
||||
if ((flags & 0x08) != 0) {
|
||||
wrapper.passthrough(Type.VAR_INT); // Redirect node index
|
||||
}
|
||||
|
||||
final int nodeType = flags & 0x03;
|
||||
if (nodeType == 1 || nodeType == 2) { // Literal/argument node
|
||||
wrapper.passthrough(Type.STRING); // Name
|
||||
}
|
||||
|
||||
if (nodeType == 2) { // Argument node
|
||||
final int argumentTypeId = wrapper.read(Type.VAR_INT);
|
||||
final int mappedArgumentTypeId = MAPPINGS.getArgumentTypeMappings().mappings().getNewId(argumentTypeId);
|
||||
Preconditions.checkArgument(mappedArgumentTypeId != -1, "Unknown command argument type id: " + argumentTypeId);
|
||||
wrapper.write(Type.VAR_INT, mappedArgumentTypeId);
|
||||
|
||||
final String identifier = MAPPINGS.getArgumentTypeMappings().identifier(argumentTypeId);
|
||||
commandRewriter.handleArgument(wrapper, identifier);
|
||||
if (identifier.equals("minecraft:gamemode")) {
|
||||
wrapper.write(Type.VAR_INT, 0); // Word
|
||||
}
|
||||
|
||||
if ((flags & 0x10) != 0) {
|
||||
wrapper.passthrough(Type.STRING); // Suggestion type
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wrapper.passthrough(Type.VAR_INT); // Root node index
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
registerClientbound(ClientboundPackets1_19_3.SERVER_DATA, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.OPTIONAL_COMPONENT); // Motd
|
||||
map(Type.OPTIONAL_STRING); // Encoded icon
|
||||
create(Type.BOOLEAN, false); // Previews chat
|
||||
}
|
||||
});
|
||||
|
||||
// Remove the key once again
|
||||
registerServerbound(State.LOGIN, ServerboundLoginPackets.HELLO.getId(), ServerboundLoginPackets.HELLO.getId(), new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.STRING); // Name
|
||||
handler(wrapper -> {
|
||||
final ProfileKey profileKey = wrapper.read(Type.OPTIONAL_PROFILE_KEY);
|
||||
if (profileKey == null) {
|
||||
wrapper.user().put(new NonceStorage(null));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
registerClientbound(State.LOGIN, ClientboundLoginPackets.HELLO.getId(), ClientboundLoginPackets.HELLO.getId(), new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.STRING); // Server id
|
||||
handler(wrapper -> {
|
||||
if (wrapper.user().has(NonceStorage.class)) {
|
||||
return;
|
||||
}
|
||||
final byte[] publicKey = wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE);
|
||||
final byte[] nonce = wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE);
|
||||
wrapper.user().put(new NonceStorage(CipherUtil.encryptNonce(publicKey, nonce)));
|
||||
});
|
||||
}
|
||||
});
|
||||
registerServerbound(State.LOGIN, ServerboundLoginPackets.ENCRYPTION_KEY.getId(), ServerboundLoginPackets.ENCRYPTION_KEY.getId(), new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.BYTE_ARRAY_PRIMITIVE); // Keys
|
||||
handler(wrapper -> {
|
||||
final NonceStorage nonceStorage = wrapper.user().remove(NonceStorage.class);
|
||||
final boolean isNonce = wrapper.read(Type.BOOLEAN);
|
||||
if (!isNonce) {
|
||||
wrapper.read(Type.LONG); // Salt
|
||||
wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); // Signature
|
||||
wrapper.write(Type.BYTE_ARRAY_PRIMITIVE, nonceStorage.nonce() != null ? nonceStorage.nonce() : new byte[0]);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
registerServerbound(ServerboundPackets1_19_1.CHAT_MESSAGE, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.STRING); // Message
|
||||
map(Type.LONG); // Timestamp
|
||||
map(Type.LONG); // Salt
|
||||
read(Type.BYTE_ARRAY_PRIMITIVE); // Signature
|
||||
create(OPTIONAL_SIGNATURE_BYTES_TYPE, null); // No signature
|
||||
read(Type.BOOLEAN); // Signed preview
|
||||
read(Type.PLAYER_MESSAGE_SIGNATURE_ARRAY); // Last seen messages
|
||||
read(Type.OPTIONAL_PLAYER_MESSAGE_SIGNATURE); // Last received message
|
||||
handler(wrapper -> {
|
||||
//TODO is this fine (probably not)? same for chat_command
|
||||
final int offset = 0;
|
||||
final BitSet acknowledged = new BitSet(20);
|
||||
wrapper.write(Type.VAR_INT, offset);
|
||||
wrapper.write(new BitSetType(20), acknowledged);
|
||||
});
|
||||
}
|
||||
});
|
||||
registerServerbound(ServerboundPackets1_19_1.CHAT_COMMAND, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.STRING); // Command
|
||||
map(Type.LONG); // Timestamp
|
||||
map(Type.LONG); // Salt
|
||||
handler(wrapper -> {
|
||||
final int signatures = wrapper.read(Type.VAR_INT);
|
||||
wrapper.write(Type.VAR_INT, 0);
|
||||
for (int i = 0; i < signatures; i++) {
|
||||
wrapper.read(Type.STRING); // Name
|
||||
wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); // Signature
|
||||
}
|
||||
wrapper.read(Type.BOOLEAN); // Signed preview
|
||||
|
||||
final int offset = 0;
|
||||
final BitSet acknowledged = new BitSet(20);
|
||||
wrapper.write(Type.VAR_INT, offset);
|
||||
wrapper.write(new BitSetType(20), acknowledged);
|
||||
});
|
||||
read(Type.PLAYER_MESSAGE_SIGNATURE_ARRAY); // Last seen messages
|
||||
read(Type.OPTIONAL_PLAYER_MESSAGE_SIGNATURE); // Last received message
|
||||
}
|
||||
});
|
||||
registerClientbound(ClientboundPackets1_19_3.PLAYER_CHAT, ClientboundPackets1_19_1.SYSTEM_CHAT, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
read(Type.UUID); // Sender
|
||||
read(Type.VAR_INT); // Index
|
||||
read(OPTIONAL_SIGNATURE_BYTES_TYPE); // Signature
|
||||
handler(wrapper -> {
|
||||
final String plainContent = wrapper.read(Type.STRING);
|
||||
wrapper.read(Type.LONG); // Timestamp
|
||||
wrapper.read(Type.LONG); // Salt
|
||||
final int lastSeen = wrapper.read(Type.VAR_INT);
|
||||
for (int i = 0; i < lastSeen; i++) {
|
||||
final int index = wrapper.read(Type.VAR_INT);
|
||||
if (index == 0) {
|
||||
wrapper.read(SIGNATURE_BYTES_TYPE);
|
||||
}
|
||||
}
|
||||
|
||||
final JsonElement unsignedContent = wrapper.read(Type.OPTIONAL_COMPONENT);
|
||||
final JsonElement content = unsignedContent != null ? unsignedContent : GsonComponentSerializer.gson().serializeToTree(Component.text(plainContent));
|
||||
translatableRewriter.processText(content);
|
||||
final int filterMaskType = wrapper.read(Type.VAR_INT);
|
||||
if (filterMaskType == 2) {
|
||||
wrapper.read(Type.LONG_ARRAY_PRIMITIVE); // Mask
|
||||
}
|
||||
|
||||
final int chatTypeId = wrapper.read(Type.VAR_INT);
|
||||
final JsonElement senderName = wrapper.read(Type.COMPONENT);
|
||||
final JsonElement targetName = wrapper.read(Type.OPTIONAL_COMPONENT);
|
||||
final JsonElement result = Protocol1_19To1_19_1.decorateChatMessage(wrapper.user().get(ChatTypeStorage1_19_3.class), chatTypeId, senderName, targetName, content);
|
||||
if (result == null) {
|
||||
wrapper.cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
wrapper.write(Type.COMPONENT, result);
|
||||
wrapper.write(Type.BOOLEAN, false);
|
||||
});
|
||||
}
|
||||
});
|
||||
registerClientbound(ClientboundPackets1_19_3.DISGUISED_CHAT, ClientboundPackets1_19_1.SYSTEM_CHAT, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
handler(wrapper -> {
|
||||
final JsonElement content = wrapper.read(Type.COMPONENT);
|
||||
translatableRewriter.processText(content);
|
||||
final int chatTypeId = wrapper.read(Type.VAR_INT);
|
||||
final JsonElement senderName = wrapper.read(Type.COMPONENT);
|
||||
final JsonElement targetName = wrapper.read(Type.OPTIONAL_COMPONENT);
|
||||
final JsonElement result = Protocol1_19To1_19_1.decorateChatMessage(wrapper.user().get(ChatTypeStorage1_19_3.class), chatTypeId, senderName, targetName, content);
|
||||
if (result == null) {
|
||||
wrapper.cancel();
|
||||
return;
|
||||
}
|
||||
|
||||
wrapper.write(Type.COMPONENT, result);
|
||||
wrapper.write(Type.BOOLEAN, false);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
cancelClientbound(ClientboundPackets1_19_3.UPDATE_ENABLED_FEATURES);
|
||||
cancelServerbound(ServerboundPackets1_19_1.CHAT_PREVIEW);
|
||||
cancelServerbound(ServerboundPackets1_19_1.CHAT_ACK);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(final UserConnection user) {
|
||||
user.put(new ChatSessionStorage());
|
||||
user.put(new ChatTypeStorage1_19_3());
|
||||
addEntityTracker(user, new EntityTrackerBase(user, Entity1_19_3Types.PLAYER, true));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BackwardsMappings getMappingData() {
|
||||
return MAPPINGS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TranslatableRewriter getTranslatableRewriter() {
|
||||
return translatableRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemRewriter getItemRewriter() {
|
||||
return itemRewriter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityRewriter getEntityRewriter() {
|
||||
return entityRewriter;
|
||||
}
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards
|
||||
* Copyright (C) 2016-2022 ViaVersion and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.data;
|
||||
|
||||
import com.viaversion.viaversion.libs.fastutil.objects.Object2IntMap;
|
||||
import com.viaversion.viaversion.libs.fastutil.objects.Object2IntOpenHashMap;
|
||||
import com.viaversion.viaversion.libs.gson.JsonElement;
|
||||
import com.viaversion.viaversion.libs.gson.JsonObject;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.Protocol1_19_3To1_19_1;
|
||||
|
||||
public final class BackwardsMappings extends com.viaversion.viabackwards.api.data.BackwardsMappings {
|
||||
|
||||
private final Object2IntMap<String> mappedSounds = new Object2IntOpenHashMap<>();
|
||||
|
||||
public BackwardsMappings() {
|
||||
super("1.19.3", "1.19", Protocol1_19_3To1_19_1.class, true);
|
||||
mappedSounds.defaultReturnValue(-1);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadVBExtras(final JsonObject unmapped, final JsonObject mapped) {
|
||||
int i = 0;
|
||||
for (final JsonElement sound : mapped.getAsJsonArray("sounds")) {
|
||||
mappedSounds.put(sound.getAsString(), i++);
|
||||
}
|
||||
}
|
||||
|
||||
public int mappedSound(final String sound) {
|
||||
return mappedSounds.getInt(sound.replace("minecraft:", ""));
|
||||
}
|
||||
}
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
/*
|
||||
* This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards
|
||||
* Copyright (C) 2016-2022 ViaVersion and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.packets;
|
||||
|
||||
import com.viaversion.viabackwards.api.rewriters.ItemRewriter;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.Protocol1_19_1To1_19_3;
|
||||
import com.viaversion.viaversion.api.minecraft.item.Item;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.data.RecipeRewriter1_16;
|
||||
import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.types.Chunk1_18Type;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.ServerboundPackets1_19_1;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPackets1_19_3;
|
||||
import com.viaversion.viaversion.rewriter.BlockRewriter;
|
||||
|
||||
public final class BlockItemPackets1_19_3 extends ItemRewriter<Protocol1_19_1To1_19_3> {
|
||||
|
||||
public BlockItemPackets1_19_3(final Protocol1_19_1To1_19_3 protocol) {
|
||||
super(protocol);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void registerPackets() {
|
||||
final BlockRewriter blockRewriter = new BlockRewriter(protocol, Type.POSITION1_14);
|
||||
blockRewriter.registerBlockAction(ClientboundPackets1_19_3.BLOCK_ACTION);
|
||||
blockRewriter.registerBlockChange(ClientboundPackets1_19_3.BLOCK_CHANGE);
|
||||
blockRewriter.registerVarLongMultiBlockChange(ClientboundPackets1_19_3.MULTI_BLOCK_CHANGE);
|
||||
blockRewriter.registerEffect(ClientboundPackets1_19_3.EFFECT, 1010, 2001);
|
||||
blockRewriter.registerChunkData1_19(ClientboundPackets1_19_3.CHUNK_DATA, Chunk1_18Type::new);
|
||||
blockRewriter.registerBlockEntityData(ClientboundPackets1_19_3.BLOCK_ENTITY_DATA);
|
||||
|
||||
registerSetCooldown(ClientboundPackets1_19_3.COOLDOWN);
|
||||
registerWindowItems1_17_1(ClientboundPackets1_19_3.WINDOW_ITEMS);
|
||||
registerSetSlot1_17_1(ClientboundPackets1_19_3.SET_SLOT);
|
||||
registerEntityEquipmentArray(ClientboundPackets1_19_3.ENTITY_EQUIPMENT);
|
||||
registerAdvancements(ClientboundPackets1_19_3.ADVANCEMENTS, Type.FLAT_VAR_INT_ITEM);
|
||||
registerClickWindow1_17_1(ServerboundPackets1_19_1.CLICK_WINDOW);
|
||||
registerTradeList1_19(ClientboundPackets1_19_3.TRADE_LIST);
|
||||
registerCreativeInvAction(ServerboundPackets1_19_1.CREATIVE_INVENTORY_ACTION, Type.FLAT_VAR_INT_ITEM);
|
||||
registerWindowPropertyEnchantmentHandler(ClientboundPackets1_19_3.WINDOW_PROPERTY);
|
||||
registerSpawnParticle1_19(ClientboundPackets1_19_3.SPAWN_PARTICLE);
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_19_3.EXPLOSION, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.DOUBLE, Type.FLOAT); // X
|
||||
map(Type.DOUBLE, Type.FLOAT); // Y
|
||||
map(Type.DOUBLE, Type.FLOAT); // Z
|
||||
}
|
||||
});
|
||||
|
||||
final RecipeRewriter1_16 recipeRewriter = new RecipeRewriter1_16(protocol);
|
||||
protocol.registerClientbound(ClientboundPackets1_19_3.DECLARE_RECIPES, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
handler(wrapper -> {
|
||||
final int size = wrapper.passthrough(Type.VAR_INT);
|
||||
for (int i = 0; i < size; i++) {
|
||||
final String type = wrapper.passthrough(Type.STRING).replace("minecraft:", "");
|
||||
wrapper.passthrough(Type.STRING); // Recipe Identifier
|
||||
switch (type) {
|
||||
case "crafting_shapeless": {
|
||||
wrapper.passthrough(Type.STRING); // Group
|
||||
wrapper.read(Type.VAR_INT); // Crafting book category
|
||||
final int ingredients = wrapper.passthrough(Type.VAR_INT);
|
||||
for (int j = 0; j < ingredients; j++) {
|
||||
final Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients
|
||||
for (final Item item : items) {
|
||||
handleItemToClient(item);
|
||||
}
|
||||
}
|
||||
handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result
|
||||
break;
|
||||
}
|
||||
case "crafting_shaped": {
|
||||
final int ingredients = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT);
|
||||
wrapper.passthrough(Type.STRING); // Group
|
||||
wrapper.read(Type.VAR_INT); // Crafting book category
|
||||
for (int j = 0; j < ingredients; j++) {
|
||||
final Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients
|
||||
for (final Item item : items) {
|
||||
handleItemToClient(item);
|
||||
}
|
||||
}
|
||||
handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result
|
||||
break;
|
||||
}
|
||||
case "smelting":
|
||||
case "campfire_cooking":
|
||||
case "blasting":
|
||||
case "smoking":
|
||||
wrapper.passthrough(Type.STRING); // Group
|
||||
wrapper.read(Type.VAR_INT); // Crafting book category
|
||||
final Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients
|
||||
for (final Item item : items) {
|
||||
handleItemToClient(item);
|
||||
}
|
||||
handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result
|
||||
wrapper.passthrough(Type.FLOAT); // EXP
|
||||
wrapper.passthrough(Type.VAR_INT); // Cooking time
|
||||
break;
|
||||
case "crafting_special_armordye":
|
||||
case "crafting_special_bookcloning":
|
||||
case "crafting_special_mapcloning":
|
||||
case "crafting_special_mapextending":
|
||||
case "crafting_special_firework_rocket":
|
||||
case "crafting_special_firework_star":
|
||||
case "crafting_special_firework_star_fade":
|
||||
case "crafting_special_tippedarrow":
|
||||
case "crafting_special_bannerduplicate":
|
||||
case "crafting_special_shielddecoration":
|
||||
case "crafting_special_shulkerboxcoloring":
|
||||
case "crafting_special_suspiciousstew":
|
||||
case "crafting_special_repairitem":
|
||||
wrapper.read(Type.VAR_INT); // Crafting book category
|
||||
break;
|
||||
default:
|
||||
recipeRewriter.handle(wrapper, type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
+293
@@ -0,0 +1,293 @@
|
||||
/*
|
||||
* This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards
|
||||
* Copyright (C) 2016-2022 ViaVersion and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.packets;
|
||||
|
||||
import com.viaversion.viabackwards.api.rewriters.EntityRewriter;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.Protocol1_19_1To1_19_3;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.storage.ChatTypeStorage1_19_3;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
import com.viaversion.viaversion.api.minecraft.ProfileKey;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.Entity1_19_3Types;
|
||||
import com.viaversion.viaversion.api.minecraft.entities.EntityType;
|
||||
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
|
||||
import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper;
|
||||
import com.viaversion.viaversion.api.type.Type;
|
||||
import com.viaversion.viaversion.api.type.types.BitSetType;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_19;
|
||||
import com.viaversion.viaversion.api.type.types.version.Types1_19_3;
|
||||
import com.viaversion.viaversion.libs.gson.JsonElement;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag;
|
||||
import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.ClientboundPackets1_19_1;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPackets1_19_3;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
import java.util.BitSet;
|
||||
import java.util.UUID;
|
||||
|
||||
public final class EntityPackets1_19_3 extends EntityRewriter<Protocol1_19_1To1_19_3> {
|
||||
|
||||
private static final BitSetType PROFILE_ACTIONS_ENUM_TYPE = new BitSetType(6);
|
||||
private static final int[] PROFILE_ACTIONS = {2, 4, 5}; // Ignore initialize chat and listed status; add player already handled before
|
||||
private static final int ADD_PLAYER = 0;
|
||||
private static final int INITIALIZE_CHAT = 1;
|
||||
private static final int UPDATE_GAMEMODE = 2;
|
||||
private static final int UPDATE_LISTED = 3;
|
||||
private static final int UPDATE_LATENCY = 4;
|
||||
private static final int UPDATE_DISPLAYNAME = 5;
|
||||
|
||||
public EntityPackets1_19_3(final Protocol1_19_1To1_19_3 protocol) {
|
||||
super(protocol);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void registerPackets() {
|
||||
registerMetadataRewriter(ClientboundPackets1_19_3.ENTITY_METADATA, Types1_19_3.METADATA_LIST, Types1_19.METADATA_LIST);
|
||||
registerRemoveEntities(ClientboundPackets1_19_3.REMOVE_ENTITIES);
|
||||
registerTrackerWithData1_19(ClientboundPackets1_19_3.SPAWN_ENTITY, Entity1_19_3Types.FALLING_BLOCK);
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_19_3.JOIN_GAME, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.INT); // Entity id
|
||||
map(Type.BOOLEAN); // Hardcore
|
||||
map(Type.UNSIGNED_BYTE); // Gamemode
|
||||
map(Type.BYTE); // Previous Gamemode
|
||||
map(Type.STRING_ARRAY); // World List
|
||||
map(Type.NBT); // Dimension registry
|
||||
map(Type.STRING); // Dimension key
|
||||
map(Type.STRING); // World
|
||||
handler(dimensionDataHandler());
|
||||
handler(biomeSizeTracker());
|
||||
handler(worldDataTrackerHandlerByKey());
|
||||
handler(wrapper -> {
|
||||
final ChatTypeStorage1_19_3 chatTypeStorage = wrapper.user().get(ChatTypeStorage1_19_3.class);
|
||||
chatTypeStorage.clear();
|
||||
final CompoundTag registry = wrapper.get(Type.NBT, 0);
|
||||
final ListTag chatTypes = ((CompoundTag) registry.get("minecraft:chat_type")).get("value");
|
||||
for (final Tag chatType : chatTypes) {
|
||||
final CompoundTag chatTypeCompound = (CompoundTag) chatType;
|
||||
final NumberTag idTag = chatTypeCompound.get("id");
|
||||
chatTypeStorage.addChatType(idTag.asInt(), chatTypeCompound);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_19_3.RESPAWN, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.STRING); // Dimension
|
||||
map(Type.STRING); // World
|
||||
map(Type.LONG); // Seed
|
||||
map(Type.UNSIGNED_BYTE); // Gamemode
|
||||
map(Type.BYTE); // Previous gamemode
|
||||
map(Type.BOOLEAN); // Debug
|
||||
map(Type.BOOLEAN); // Flat
|
||||
handler(worldDataTrackerHandlerByKey());
|
||||
handler(wrapper -> {
|
||||
// Old clients will always keep entity data (packed here as 0x02), nothing we can do there
|
||||
final byte keepDataMask = wrapper.read(Type.BYTE);
|
||||
wrapper.write(Type.BOOLEAN, (keepDataMask & 1) != 0); // Keep attributes
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
protocol.registerClientbound(ClientboundPackets1_19_3.PLAYER_INFO_UPDATE, ClientboundPackets1_19_1.PLAYER_INFO, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
handler(wrapper -> {
|
||||
wrapper.cancel();
|
||||
final BitSet actions = wrapper.read(PROFILE_ACTIONS_ENUM_TYPE);
|
||||
final int entries = wrapper.read(Type.VAR_INT);
|
||||
if (actions.get(ADD_PLAYER)) {
|
||||
// Special case, as we need to write everything into one action
|
||||
final PacketWrapper playerInfoPacket = wrapper.create(ClientboundPackets1_19_1.PLAYER_INFO);
|
||||
playerInfoPacket.write(Type.VAR_INT, 0);
|
||||
playerInfoPacket.write(Type.VAR_INT, entries);
|
||||
for (int i = 0; i < entries; i++) {
|
||||
playerInfoPacket.write(Type.UUID, wrapper.read(Type.UUID));
|
||||
playerInfoPacket.write(Type.STRING, wrapper.read(Type.STRING)); // Player Name
|
||||
|
||||
final int properties = wrapper.read(Type.VAR_INT);
|
||||
playerInfoPacket.write(Type.VAR_INT, properties);
|
||||
for (int j = 0; j < properties; j++) {
|
||||
playerInfoPacket.write(Type.STRING, wrapper.read(Type.STRING)); // Name
|
||||
playerInfoPacket.write(Type.STRING, wrapper.read(Type.STRING)); // Value
|
||||
playerInfoPacket.write(Type.OPTIONAL_STRING, wrapper.read(Type.OPTIONAL_STRING)); // Signature
|
||||
}
|
||||
|
||||
// Now check for the other parts individually and add dummy values if not present
|
||||
final ProfileKey profileKey;
|
||||
if (actions.get(INITIALIZE_CHAT) && wrapper.read(Type.BOOLEAN)) {
|
||||
wrapper.read(Type.UUID); // Session UUID
|
||||
profileKey = wrapper.read(Type.PROFILE_KEY);
|
||||
} else {
|
||||
profileKey = null;
|
||||
}
|
||||
|
||||
final int gamemode = actions.get(UPDATE_GAMEMODE) ? wrapper.read(Type.VAR_INT) : 0;
|
||||
if (actions.get(UPDATE_LISTED)) {
|
||||
wrapper.read(Type.BOOLEAN); // Listed - throw away
|
||||
}
|
||||
|
||||
final int latency = actions.get(UPDATE_LATENCY) ? wrapper.read(Type.VAR_INT) : 0;
|
||||
final JsonElement displayName = actions.get(UPDATE_DISPLAYNAME) ? wrapper.read(Type.OPTIONAL_COMPONENT) : null;
|
||||
playerInfoPacket.write(Type.VAR_INT, gamemode);
|
||||
playerInfoPacket.write(Type.VAR_INT, latency);
|
||||
playerInfoPacket.write(Type.OPTIONAL_COMPONENT, displayName);
|
||||
playerInfoPacket.write(Type.OPTIONAL_PROFILE_KEY, profileKey);
|
||||
}
|
||||
playerInfoPacket.send(Protocol1_19_1To1_19_3.class);
|
||||
return;
|
||||
}
|
||||
|
||||
final PlayerProfileUpdate[] updates = new PlayerProfileUpdate[entries];
|
||||
for (int i = 0; i < entries; i++) {
|
||||
final UUID uuid = wrapper.read(Type.UUID);
|
||||
int gamemode = 0;
|
||||
int latency = 0;
|
||||
JsonElement displayName = null;
|
||||
for (final int action : PROFILE_ACTIONS) {
|
||||
if (!actions.get(action)) {
|
||||
continue;
|
||||
}
|
||||
switch (action) {
|
||||
case UPDATE_GAMEMODE:
|
||||
gamemode = wrapper.read(Type.VAR_INT);
|
||||
break;
|
||||
case UPDATE_LATENCY:
|
||||
latency = wrapper.read(Type.VAR_INT);
|
||||
break;
|
||||
case UPDATE_DISPLAYNAME:
|
||||
displayName = wrapper.read(Type.OPTIONAL_COMPONENT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
updates[i] = new PlayerProfileUpdate(uuid, gamemode, latency, displayName);
|
||||
}
|
||||
|
||||
if (actions.get(UPDATE_GAMEMODE)) {
|
||||
sendPlayerProfileUpdate(wrapper.user(), 1, updates);
|
||||
} else if (actions.get(UPDATE_LATENCY)) {
|
||||
sendPlayerProfileUpdate(wrapper.user(), 2, updates);
|
||||
} else if (actions.get(UPDATE_DISPLAYNAME)) {
|
||||
sendPlayerProfileUpdate(wrapper.user(), 3, updates);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
protocol.registerClientbound(ClientboundPackets1_19_3.PLAYER_INFO_REMOVE, ClientboundPackets1_19_1.PLAYER_INFO, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
handler(wrapper -> {
|
||||
final UUID[] uuids = wrapper.read(Type.UUID_ARRAY);
|
||||
wrapper.write(Type.VAR_INT, 4); // Remove player
|
||||
wrapper.write(Type.VAR_INT, uuids.length);
|
||||
for (final UUID uuid : uuids) {
|
||||
wrapper.write(Type.UUID, uuid);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void sendPlayerProfileUpdate(final UserConnection connection, final int action, final PlayerProfileUpdate[] updates) throws Exception {
|
||||
final PacketWrapper playerInfoPacket = PacketWrapper.create(ClientboundPackets1_19_1.PLAYER_INFO, connection);
|
||||
playerInfoPacket.write(Type.VAR_INT, action);
|
||||
playerInfoPacket.write(Type.VAR_INT, updates.length);
|
||||
for (final PlayerProfileUpdate update : updates) {
|
||||
playerInfoPacket.write(Type.UUID, update.uuid());
|
||||
if (action == 1) {
|
||||
playerInfoPacket.write(Type.VAR_INT, update.gamemode());
|
||||
} else if (action == 2) {
|
||||
playerInfoPacket.write(Type.VAR_INT, update.latency());
|
||||
} else if (action == 3) {
|
||||
playerInfoPacket.write(Type.OPTIONAL_COMPONENT, update.displayName());
|
||||
} else {
|
||||
throw new IllegalArgumentException("Invalid action: " + action);
|
||||
}
|
||||
}
|
||||
playerInfoPacket.send(Protocol1_19_1To1_19_3.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerRewrites() {
|
||||
filter().handler((event, meta) -> {
|
||||
final int id = meta.metaType().typeId();
|
||||
if (id > 2) {
|
||||
meta.setMetaType(Types1_19.META_TYPES.byId(id - 1)); // long added
|
||||
} else if (id != 2) {
|
||||
meta.setMetaType(Types1_19.META_TYPES.byId(id));
|
||||
}
|
||||
});
|
||||
registerMetaTypeHandler(Types1_19.META_TYPES.itemType, Types1_19.META_TYPES.blockStateType, Types1_19.META_TYPES.particleType, Types1_19.META_TYPES.optionalComponentType);
|
||||
|
||||
filter().filterFamily(Entity1_19_3Types.MINECART_ABSTRACT).index(11).handler((event, meta) -> {
|
||||
final int data = (int) meta.getValue();
|
||||
meta.setValue(protocol.getMappingData().getNewBlockStateId(data));
|
||||
});
|
||||
|
||||
filter().type(Entity1_19_3Types.CAMEL).cancel(19); // Dashing
|
||||
filter().type(Entity1_19_3Types.CAMEL).cancel(20); // Last pose change time
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMappingDataLoaded() {
|
||||
mapTypes();
|
||||
mapEntityTypeWithData(Entity1_19_3Types.CAMEL, Entity1_19_3Types.DONKEY).jsonName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityType typeFromId(final int typeId) {
|
||||
return Entity1_19_3Types.getTypeFromId(typeId);
|
||||
}
|
||||
|
||||
private static final class PlayerProfileUpdate {
|
||||
private final UUID uuid;
|
||||
private final int gamemode;
|
||||
private final int latency;
|
||||
private final JsonElement displayName;
|
||||
|
||||
private PlayerProfileUpdate(final UUID uuid, final int gamemode, final int latency, @Nullable final JsonElement displayName) {
|
||||
this.uuid = uuid;
|
||||
this.gamemode = gamemode;
|
||||
this.latency = latency;
|
||||
this.displayName = displayName;
|
||||
}
|
||||
|
||||
public UUID uuid() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
public int gamemode() {
|
||||
return gamemode;
|
||||
}
|
||||
|
||||
public int latency() {
|
||||
return latency;
|
||||
}
|
||||
|
||||
public @Nullable JsonElement displayName() {
|
||||
return displayName;
|
||||
}
|
||||
}
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards
|
||||
* Copyright (C) 2016-2022 ViaVersion and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.storage;
|
||||
|
||||
import com.viaversion.viaversion.api.connection.StorableObject;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public final class ChatSessionStorage implements StorableObject {
|
||||
|
||||
private final UUID uuid = UUID.randomUUID();
|
||||
|
||||
public UUID uuid() {
|
||||
return uuid;
|
||||
}
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||
* Copyright (C) 2016-2022 ViaVersion and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.storage;
|
||||
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.storage.ChatRegistryStorage;
|
||||
|
||||
public final class ChatTypeStorage1_19_3 extends ChatRegistryStorage {
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
|
||||
* Copyright (C) 2016-2022 ViaVersion and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.storage;
|
||||
|
||||
import com.viaversion.viaversion.api.connection.StorableObject;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
public final class NonceStorage implements StorableObject {
|
||||
|
||||
private final byte[] nonce;
|
||||
|
||||
public NonceStorage(final byte @Nullable[] nonce) {
|
||||
this.nonce = nonce;
|
||||
}
|
||||
|
||||
public byte @Nullable [] nonce() {
|
||||
return nonce;
|
||||
}
|
||||
}
|
||||
+7
-9
@@ -23,6 +23,7 @@ import com.viaversion.viabackwards.api.BackwardsProtocol;
|
||||
import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.packets.EntityPackets1_19_1;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.storage.ChatRegistryStorage;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.storage.ChatRegistryStorage1_19_1;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.storage.NonceStorage;
|
||||
import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.storage.ReceivedMessagesStorage;
|
||||
import com.viaversion.viaversion.api.connection.UserConnection;
|
||||
@@ -101,7 +102,7 @@ public final class Protocol1_19To1_19_1 extends BackwardsProtocol<ClientboundPac
|
||||
map(Type.STRING); // Dimension key
|
||||
map(Type.STRING); // World
|
||||
handler(wrapper -> {
|
||||
final ChatRegistryStorage chatTypeStorage = wrapper.user().get(ChatRegistryStorage.class);
|
||||
final ChatRegistryStorage chatTypeStorage = wrapper.user().get(ChatRegistryStorage1_19_1.class);
|
||||
chatTypeStorage.clear();
|
||||
|
||||
final CompoundTag registry = wrapper.get(Type.NBT, 0);
|
||||
@@ -124,10 +125,7 @@ public final class Protocol1_19To1_19_1 extends BackwardsProtocol<ClientboundPac
|
||||
@Override
|
||||
public void registerMap() {
|
||||
handler(wrapper -> {
|
||||
if (wrapper.read(Type.BOOLEAN)) {
|
||||
// Previous signature
|
||||
wrapper.read(Type.BYTE_ARRAY_PRIMITIVE);
|
||||
}
|
||||
wrapper.read(Type.OPTIONAL_BYTE_ARRAY_PRIMITIVE); // Previous signature
|
||||
|
||||
final PlayerMessageSignature signature = wrapper.read(Type.PLAYER_MESSAGE_SIGNATURE);
|
||||
|
||||
@@ -175,7 +173,7 @@ public final class Protocol1_19To1_19_1 extends BackwardsProtocol<ClientboundPac
|
||||
final int chatTypeId = wrapper.read(Type.VAR_INT);
|
||||
final JsonElement senderName = wrapper.read(Type.COMPONENT);
|
||||
final JsonElement targetName = wrapper.read(Type.OPTIONAL_COMPONENT);
|
||||
decoratedMessage = decorateChatMessage(wrapper, chatTypeId, senderName, targetName, message);
|
||||
decoratedMessage = decorateChatMessage(wrapper.user().get(ChatRegistryStorage1_19_1.class), chatTypeId, senderName, targetName, message);
|
||||
if (decoratedMessage == null) {
|
||||
wrapper.cancel();
|
||||
return;
|
||||
@@ -351,7 +349,7 @@ public final class Protocol1_19To1_19_1 extends BackwardsProtocol<ClientboundPac
|
||||
|
||||
@Override
|
||||
public void init(final UserConnection user) {
|
||||
user.put(new ChatRegistryStorage());
|
||||
user.put(new ChatRegistryStorage1_19_1());
|
||||
user.put(new ReceivedMessagesStorage());
|
||||
addEntityTracker(user, new EntityTrackerBase(user, Entity1_19Types.PLAYER, true));
|
||||
}
|
||||
@@ -366,8 +364,8 @@ public final class Protocol1_19To1_19_1 extends BackwardsProtocol<ClientboundPac
|
||||
return entityRewriter;
|
||||
}
|
||||
|
||||
private @Nullable JsonElement decorateChatMessage(final PacketWrapper wrapper, final int chatTypeId, final JsonElement senderName, @Nullable final JsonElement targetName, final JsonElement message) {
|
||||
CompoundTag chatType = wrapper.user().get(ChatRegistryStorage.class).chatType(chatTypeId);
|
||||
public static @Nullable JsonElement decorateChatMessage(final ChatRegistryStorage chatRegistryStorage, final int chatTypeId, final JsonElement senderName, @Nullable final JsonElement targetName, final JsonElement message) {
|
||||
CompoundTag chatType = chatRegistryStorage.chatType(chatTypeId);
|
||||
if (chatType == null) {
|
||||
ViaBackwards.getPlatform().getLogger().warning("Chat message has unknown chat type id " + chatTypeId + ". Message: " + message);
|
||||
return null;
|
||||
|
||||
+1
-1
@@ -24,7 +24,7 @@ import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag;
|
||||
import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_18_2;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
public final class ChatRegistryStorage implements StorableObject {
|
||||
public abstract class ChatRegistryStorage implements StorableObject {
|
||||
|
||||
private final Int2ObjectMap<CompoundTag> chatTypes = new Int2ObjectOpenHashMap<>();
|
||||
|
||||
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards
|
||||
* Copyright (C) 2016-2022 ViaVersion and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.storage;
|
||||
|
||||
public final class ChatRegistryStorage1_19_1 extends ChatRegistryStorage {
|
||||
}
|
||||
@@ -17,7 +17,7 @@
|
||||
"minecraft:sparse_jungle": "jungle_edge",
|
||||
"minecraft:stony_shore": "stone_shore",
|
||||
"minecraft:old_growth_pine_taiga": "giant_spruce_taiga",
|
||||
"minecraft:windswept_forest": "forest",
|
||||
"minecraft:windswept_forest": "wooded_mountains",
|
||||
"minecraft:wooded_badlands": "wooded_badlands_plateau",
|
||||
"minecraft:windswept_gravelly_hills": "gravelly_mountains",
|
||||
"minecraft:old_growth_birch_forest": "tall_birch_forest",
|
||||
|
||||
@@ -0,0 +1,897 @@
|
||||
{
|
||||
"blockstates": {
|
||||
"minecraft:note_block": "minecraft:note_block[instrument=harp,note=0,powered=false]",
|
||||
"minecraft:piglin_head": "minecraft:zombie_head[",
|
||||
"minecraft:piglin_wall_head": "minecraft:zombie_wall_head[",
|
||||
"minecraft:bamboo_planks": "minecraft:birch_planks",
|
||||
"minecraft:bamboo_mosaic": "minecraft:birch_planks",
|
||||
"minecraft:chiseled_bookshelf": "minecraft:bookshelf",
|
||||
"minecraft:bamboo_sign": "minecraft:birch_sign[",
|
||||
"minecraft:bamboo_wall_sign": "minecraft:birch_wall_sign[",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=0,waterlogged=true]": "minecraft:oak_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=0,waterlogged=false]": "minecraft:oak_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=1,waterlogged=true]": "minecraft:oak_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=1,waterlogged=false]": "minecraft:oak_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=2,waterlogged=true]": "minecraft:oak_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=2,waterlogged=false]": "minecraft:oak_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=3,waterlogged=true]": "minecraft:oak_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=3,waterlogged=false]": "minecraft:oak_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=4,waterlogged=true]": "minecraft:oak_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=4,waterlogged=false]": "minecraft:oak_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=5,waterlogged=true]": "minecraft:oak_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=5,waterlogged=false]": "minecraft:oak_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=6,waterlogged=true]": "minecraft:oak_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=6,waterlogged=false]": "minecraft:oak_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=7,waterlogged=true]": "minecraft:oak_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=7,waterlogged=false]": "minecraft:oak_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=8,waterlogged=true]": "minecraft:oak_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=8,waterlogged=false]": "minecraft:oak_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=9,waterlogged=true]": "minecraft:oak_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=9,waterlogged=false]": "minecraft:oak_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=10,waterlogged=true]": "minecraft:oak_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=10,waterlogged=false]": "minecraft:oak_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=11,waterlogged=true]": "minecraft:oak_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=11,waterlogged=false]": "minecraft:oak_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=12,waterlogged=true]": "minecraft:oak_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=12,waterlogged=false]": "minecraft:oak_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=13,waterlogged=true]": "minecraft:oak_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=13,waterlogged=false]": "minecraft:oak_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=14,waterlogged=true]": "minecraft:oak_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=14,waterlogged=false]": "minecraft:oak_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=15,waterlogged=true]": "minecraft:oak_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=true,rotation=15,waterlogged=false]": "minecraft:oak_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=0,waterlogged=true]": "minecraft:oak_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=0,waterlogged=false]": "minecraft:oak_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=1,waterlogged=true]": "minecraft:oak_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=1,waterlogged=false]": "minecraft:oak_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=2,waterlogged=true]": "minecraft:oak_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=2,waterlogged=false]": "minecraft:oak_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=3,waterlogged=true]": "minecraft:oak_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=3,waterlogged=false]": "minecraft:oak_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=4,waterlogged=true]": "minecraft:oak_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=4,waterlogged=false]": "minecraft:oak_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=5,waterlogged=true]": "minecraft:oak_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=5,waterlogged=false]": "minecraft:oak_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=6,waterlogged=true]": "minecraft:oak_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=6,waterlogged=false]": "minecraft:oak_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=7,waterlogged=true]": "minecraft:oak_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=7,waterlogged=false]": "minecraft:oak_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=8,waterlogged=true]": "minecraft:oak_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=8,waterlogged=false]": "minecraft:oak_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=9,waterlogged=true]": "minecraft:oak_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=9,waterlogged=false]": "minecraft:oak_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=10,waterlogged=true]": "minecraft:oak_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=10,waterlogged=false]": "minecraft:oak_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=11,waterlogged=true]": "minecraft:oak_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=11,waterlogged=false]": "minecraft:oak_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=12,waterlogged=true]": "minecraft:oak_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=12,waterlogged=false]": "minecraft:oak_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=13,waterlogged=true]": "minecraft:oak_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=13,waterlogged=false]": "minecraft:oak_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=14,waterlogged=true]": "minecraft:oak_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=14,waterlogged=false]": "minecraft:oak_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=15,waterlogged=true]": "minecraft:oak_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:oak_hanging_sign[attached=false,rotation=15,waterlogged=false]": "minecraft:oak_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=0,waterlogged=true]": "minecraft:spruce_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=0,waterlogged=false]": "minecraft:spruce_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=1,waterlogged=true]": "minecraft:spruce_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=1,waterlogged=false]": "minecraft:spruce_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=2,waterlogged=true]": "minecraft:spruce_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=2,waterlogged=false]": "minecraft:spruce_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=3,waterlogged=true]": "minecraft:spruce_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=3,waterlogged=false]": "minecraft:spruce_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=4,waterlogged=true]": "minecraft:spruce_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=4,waterlogged=false]": "minecraft:spruce_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=5,waterlogged=true]": "minecraft:spruce_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=5,waterlogged=false]": "minecraft:spruce_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=6,waterlogged=true]": "minecraft:spruce_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=6,waterlogged=false]": "minecraft:spruce_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=7,waterlogged=true]": "minecraft:spruce_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=7,waterlogged=false]": "minecraft:spruce_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=8,waterlogged=true]": "minecraft:spruce_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=8,waterlogged=false]": "minecraft:spruce_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=9,waterlogged=true]": "minecraft:spruce_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=9,waterlogged=false]": "minecraft:spruce_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=10,waterlogged=true]": "minecraft:spruce_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=10,waterlogged=false]": "minecraft:spruce_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=11,waterlogged=true]": "minecraft:spruce_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=11,waterlogged=false]": "minecraft:spruce_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=12,waterlogged=true]": "minecraft:spruce_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=12,waterlogged=false]": "minecraft:spruce_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=13,waterlogged=true]": "minecraft:spruce_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=13,waterlogged=false]": "minecraft:spruce_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=14,waterlogged=true]": "minecraft:spruce_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=14,waterlogged=false]": "minecraft:spruce_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=15,waterlogged=true]": "minecraft:spruce_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=true,rotation=15,waterlogged=false]": "minecraft:spruce_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=0,waterlogged=true]": "minecraft:spruce_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=0,waterlogged=false]": "minecraft:spruce_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=1,waterlogged=true]": "minecraft:spruce_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=1,waterlogged=false]": "minecraft:spruce_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=2,waterlogged=true]": "minecraft:spruce_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=2,waterlogged=false]": "minecraft:spruce_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=3,waterlogged=true]": "minecraft:spruce_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=3,waterlogged=false]": "minecraft:spruce_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=4,waterlogged=true]": "minecraft:spruce_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=4,waterlogged=false]": "minecraft:spruce_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=5,waterlogged=true]": "minecraft:spruce_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=5,waterlogged=false]": "minecraft:spruce_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=6,waterlogged=true]": "minecraft:spruce_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=6,waterlogged=false]": "minecraft:spruce_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=7,waterlogged=true]": "minecraft:spruce_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=7,waterlogged=false]": "minecraft:spruce_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=8,waterlogged=true]": "minecraft:spruce_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=8,waterlogged=false]": "minecraft:spruce_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=9,waterlogged=true]": "minecraft:spruce_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=9,waterlogged=false]": "minecraft:spruce_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=10,waterlogged=true]": "minecraft:spruce_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=10,waterlogged=false]": "minecraft:spruce_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=11,waterlogged=true]": "minecraft:spruce_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=11,waterlogged=false]": "minecraft:spruce_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=12,waterlogged=true]": "minecraft:spruce_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=12,waterlogged=false]": "minecraft:spruce_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=13,waterlogged=true]": "minecraft:spruce_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=13,waterlogged=false]": "minecraft:spruce_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=14,waterlogged=true]": "minecraft:spruce_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=14,waterlogged=false]": "minecraft:spruce_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=15,waterlogged=true]": "minecraft:spruce_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:spruce_hanging_sign[attached=false,rotation=15,waterlogged=false]": "minecraft:spruce_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=0,waterlogged=true]": "minecraft:birch_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=0,waterlogged=false]": "minecraft:birch_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=1,waterlogged=true]": "minecraft:birch_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=1,waterlogged=false]": "minecraft:birch_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=2,waterlogged=true]": "minecraft:birch_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=2,waterlogged=false]": "minecraft:birch_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=3,waterlogged=true]": "minecraft:birch_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=3,waterlogged=false]": "minecraft:birch_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=4,waterlogged=true]": "minecraft:birch_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=4,waterlogged=false]": "minecraft:birch_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=5,waterlogged=true]": "minecraft:birch_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=5,waterlogged=false]": "minecraft:birch_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=6,waterlogged=true]": "minecraft:birch_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=6,waterlogged=false]": "minecraft:birch_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=7,waterlogged=true]": "minecraft:birch_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=7,waterlogged=false]": "minecraft:birch_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=8,waterlogged=true]": "minecraft:birch_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=8,waterlogged=false]": "minecraft:birch_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=9,waterlogged=true]": "minecraft:birch_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=9,waterlogged=false]": "minecraft:birch_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=10,waterlogged=true]": "minecraft:birch_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=10,waterlogged=false]": "minecraft:birch_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=11,waterlogged=true]": "minecraft:birch_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=11,waterlogged=false]": "minecraft:birch_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=12,waterlogged=true]": "minecraft:birch_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=12,waterlogged=false]": "minecraft:birch_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=13,waterlogged=true]": "minecraft:birch_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=13,waterlogged=false]": "minecraft:birch_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=14,waterlogged=true]": "minecraft:birch_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=14,waterlogged=false]": "minecraft:birch_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=15,waterlogged=true]": "minecraft:birch_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=true,rotation=15,waterlogged=false]": "minecraft:birch_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=0,waterlogged=true]": "minecraft:birch_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=0,waterlogged=false]": "minecraft:birch_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=1,waterlogged=true]": "minecraft:birch_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=1,waterlogged=false]": "minecraft:birch_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=2,waterlogged=true]": "minecraft:birch_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=2,waterlogged=false]": "minecraft:birch_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=3,waterlogged=true]": "minecraft:birch_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=3,waterlogged=false]": "minecraft:birch_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=4,waterlogged=true]": "minecraft:birch_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=4,waterlogged=false]": "minecraft:birch_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=5,waterlogged=true]": "minecraft:birch_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=5,waterlogged=false]": "minecraft:birch_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=6,waterlogged=true]": "minecraft:birch_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=6,waterlogged=false]": "minecraft:birch_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=7,waterlogged=true]": "minecraft:birch_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=7,waterlogged=false]": "minecraft:birch_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=8,waterlogged=true]": "minecraft:birch_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=8,waterlogged=false]": "minecraft:birch_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=9,waterlogged=true]": "minecraft:birch_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=9,waterlogged=false]": "minecraft:birch_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=10,waterlogged=true]": "minecraft:birch_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=10,waterlogged=false]": "minecraft:birch_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=11,waterlogged=true]": "minecraft:birch_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=11,waterlogged=false]": "minecraft:birch_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=12,waterlogged=true]": "minecraft:birch_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=12,waterlogged=false]": "minecraft:birch_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=13,waterlogged=true]": "minecraft:birch_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=13,waterlogged=false]": "minecraft:birch_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=14,waterlogged=true]": "minecraft:birch_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=14,waterlogged=false]": "minecraft:birch_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=15,waterlogged=true]": "minecraft:birch_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:birch_hanging_sign[attached=false,rotation=15,waterlogged=false]": "minecraft:birch_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=0,waterlogged=true]": "minecraft:acacia_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=0,waterlogged=false]": "minecraft:acacia_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=1,waterlogged=true]": "minecraft:acacia_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=1,waterlogged=false]": "minecraft:acacia_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=2,waterlogged=true]": "minecraft:acacia_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=2,waterlogged=false]": "minecraft:acacia_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=3,waterlogged=true]": "minecraft:acacia_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=3,waterlogged=false]": "minecraft:acacia_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=4,waterlogged=true]": "minecraft:acacia_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=4,waterlogged=false]": "minecraft:acacia_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=5,waterlogged=true]": "minecraft:acacia_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=5,waterlogged=false]": "minecraft:acacia_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=6,waterlogged=true]": "minecraft:acacia_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=6,waterlogged=false]": "minecraft:acacia_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=7,waterlogged=true]": "minecraft:acacia_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=7,waterlogged=false]": "minecraft:acacia_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=8,waterlogged=true]": "minecraft:acacia_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=8,waterlogged=false]": "minecraft:acacia_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=9,waterlogged=true]": "minecraft:acacia_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=9,waterlogged=false]": "minecraft:acacia_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=10,waterlogged=true]": "minecraft:acacia_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=10,waterlogged=false]": "minecraft:acacia_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=11,waterlogged=true]": "minecraft:acacia_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=11,waterlogged=false]": "minecraft:acacia_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=12,waterlogged=true]": "minecraft:acacia_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=12,waterlogged=false]": "minecraft:acacia_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=13,waterlogged=true]": "minecraft:acacia_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=13,waterlogged=false]": "minecraft:acacia_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=14,waterlogged=true]": "minecraft:acacia_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=14,waterlogged=false]": "minecraft:acacia_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=15,waterlogged=true]": "minecraft:acacia_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=true,rotation=15,waterlogged=false]": "minecraft:acacia_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=0,waterlogged=true]": "minecraft:acacia_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=0,waterlogged=false]": "minecraft:acacia_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=1,waterlogged=true]": "minecraft:acacia_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=1,waterlogged=false]": "minecraft:acacia_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=2,waterlogged=true]": "minecraft:acacia_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=2,waterlogged=false]": "minecraft:acacia_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=3,waterlogged=true]": "minecraft:acacia_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=3,waterlogged=false]": "minecraft:acacia_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=4,waterlogged=true]": "minecraft:acacia_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=4,waterlogged=false]": "minecraft:acacia_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=5,waterlogged=true]": "minecraft:acacia_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=5,waterlogged=false]": "minecraft:acacia_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=6,waterlogged=true]": "minecraft:acacia_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=6,waterlogged=false]": "minecraft:acacia_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=7,waterlogged=true]": "minecraft:acacia_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=7,waterlogged=false]": "minecraft:acacia_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=8,waterlogged=true]": "minecraft:acacia_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=8,waterlogged=false]": "minecraft:acacia_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=9,waterlogged=true]": "minecraft:acacia_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=9,waterlogged=false]": "minecraft:acacia_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=10,waterlogged=true]": "minecraft:acacia_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=10,waterlogged=false]": "minecraft:acacia_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=11,waterlogged=true]": "minecraft:acacia_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=11,waterlogged=false]": "minecraft:acacia_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=12,waterlogged=true]": "minecraft:acacia_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=12,waterlogged=false]": "minecraft:acacia_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=13,waterlogged=true]": "minecraft:acacia_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=13,waterlogged=false]": "minecraft:acacia_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=14,waterlogged=true]": "minecraft:acacia_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=14,waterlogged=false]": "minecraft:acacia_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=15,waterlogged=true]": "minecraft:acacia_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:acacia_hanging_sign[attached=false,rotation=15,waterlogged=false]": "minecraft:acacia_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=0,waterlogged=true]": "minecraft:jungle_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=0,waterlogged=false]": "minecraft:jungle_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=1,waterlogged=true]": "minecraft:jungle_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=1,waterlogged=false]": "minecraft:jungle_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=2,waterlogged=true]": "minecraft:jungle_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=2,waterlogged=false]": "minecraft:jungle_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=3,waterlogged=true]": "minecraft:jungle_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=3,waterlogged=false]": "minecraft:jungle_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=4,waterlogged=true]": "minecraft:jungle_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=4,waterlogged=false]": "minecraft:jungle_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=5,waterlogged=true]": "minecraft:jungle_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=5,waterlogged=false]": "minecraft:jungle_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=6,waterlogged=true]": "minecraft:jungle_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=6,waterlogged=false]": "minecraft:jungle_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=7,waterlogged=true]": "minecraft:jungle_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=7,waterlogged=false]": "minecraft:jungle_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=8,waterlogged=true]": "minecraft:jungle_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=8,waterlogged=false]": "minecraft:jungle_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=9,waterlogged=true]": "minecraft:jungle_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=9,waterlogged=false]": "minecraft:jungle_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=10,waterlogged=true]": "minecraft:jungle_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=10,waterlogged=false]": "minecraft:jungle_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=11,waterlogged=true]": "minecraft:jungle_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=11,waterlogged=false]": "minecraft:jungle_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=12,waterlogged=true]": "minecraft:jungle_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=12,waterlogged=false]": "minecraft:jungle_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=13,waterlogged=true]": "minecraft:jungle_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=13,waterlogged=false]": "minecraft:jungle_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=14,waterlogged=true]": "minecraft:jungle_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=14,waterlogged=false]": "minecraft:jungle_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=15,waterlogged=true]": "minecraft:jungle_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=true,rotation=15,waterlogged=false]": "minecraft:jungle_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=0,waterlogged=true]": "minecraft:jungle_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=0,waterlogged=false]": "minecraft:jungle_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=1,waterlogged=true]": "minecraft:jungle_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=1,waterlogged=false]": "minecraft:jungle_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=2,waterlogged=true]": "minecraft:jungle_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=2,waterlogged=false]": "minecraft:jungle_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=3,waterlogged=true]": "minecraft:jungle_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=3,waterlogged=false]": "minecraft:jungle_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=4,waterlogged=true]": "minecraft:jungle_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=4,waterlogged=false]": "minecraft:jungle_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=5,waterlogged=true]": "minecraft:jungle_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=5,waterlogged=false]": "minecraft:jungle_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=6,waterlogged=true]": "minecraft:jungle_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=6,waterlogged=false]": "minecraft:jungle_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=7,waterlogged=true]": "minecraft:jungle_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=7,waterlogged=false]": "minecraft:jungle_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=8,waterlogged=true]": "minecraft:jungle_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=8,waterlogged=false]": "minecraft:jungle_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=9,waterlogged=true]": "minecraft:jungle_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=9,waterlogged=false]": "minecraft:jungle_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=10,waterlogged=true]": "minecraft:jungle_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=10,waterlogged=false]": "minecraft:jungle_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=11,waterlogged=true]": "minecraft:jungle_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=11,waterlogged=false]": "minecraft:jungle_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=12,waterlogged=true]": "minecraft:jungle_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=12,waterlogged=false]": "minecraft:jungle_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=13,waterlogged=true]": "minecraft:jungle_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=13,waterlogged=false]": "minecraft:jungle_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=14,waterlogged=true]": "minecraft:jungle_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=14,waterlogged=false]": "minecraft:jungle_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=15,waterlogged=true]": "minecraft:jungle_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:jungle_hanging_sign[attached=false,rotation=15,waterlogged=false]": "minecraft:jungle_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=0,waterlogged=true]": "minecraft:dark_oak_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=0,waterlogged=false]": "minecraft:dark_oak_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=1,waterlogged=true]": "minecraft:dark_oak_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=1,waterlogged=false]": "minecraft:dark_oak_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=2,waterlogged=true]": "minecraft:dark_oak_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=2,waterlogged=false]": "minecraft:dark_oak_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=3,waterlogged=true]": "minecraft:dark_oak_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=3,waterlogged=false]": "minecraft:dark_oak_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=4,waterlogged=true]": "minecraft:dark_oak_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=4,waterlogged=false]": "minecraft:dark_oak_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=5,waterlogged=true]": "minecraft:dark_oak_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=5,waterlogged=false]": "minecraft:dark_oak_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=6,waterlogged=true]": "minecraft:dark_oak_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=6,waterlogged=false]": "minecraft:dark_oak_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=7,waterlogged=true]": "minecraft:dark_oak_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=7,waterlogged=false]": "minecraft:dark_oak_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=8,waterlogged=true]": "minecraft:dark_oak_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=8,waterlogged=false]": "minecraft:dark_oak_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=9,waterlogged=true]": "minecraft:dark_oak_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=9,waterlogged=false]": "minecraft:dark_oak_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=10,waterlogged=true]": "minecraft:dark_oak_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=10,waterlogged=false]": "minecraft:dark_oak_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=11,waterlogged=true]": "minecraft:dark_oak_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=11,waterlogged=false]": "minecraft:dark_oak_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=12,waterlogged=true]": "minecraft:dark_oak_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=12,waterlogged=false]": "minecraft:dark_oak_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=13,waterlogged=true]": "minecraft:dark_oak_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=13,waterlogged=false]": "minecraft:dark_oak_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=14,waterlogged=true]": "minecraft:dark_oak_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=14,waterlogged=false]": "minecraft:dark_oak_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=15,waterlogged=true]": "minecraft:dark_oak_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=true,rotation=15,waterlogged=false]": "minecraft:dark_oak_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=0,waterlogged=true]": "minecraft:dark_oak_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=0,waterlogged=false]": "minecraft:dark_oak_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=1,waterlogged=true]": "minecraft:dark_oak_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=1,waterlogged=false]": "minecraft:dark_oak_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=2,waterlogged=true]": "minecraft:dark_oak_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=2,waterlogged=false]": "minecraft:dark_oak_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=3,waterlogged=true]": "minecraft:dark_oak_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=3,waterlogged=false]": "minecraft:dark_oak_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=4,waterlogged=true]": "minecraft:dark_oak_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=4,waterlogged=false]": "minecraft:dark_oak_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=5,waterlogged=true]": "minecraft:dark_oak_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=5,waterlogged=false]": "minecraft:dark_oak_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=6,waterlogged=true]": "minecraft:dark_oak_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=6,waterlogged=false]": "minecraft:dark_oak_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=7,waterlogged=true]": "minecraft:dark_oak_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=7,waterlogged=false]": "minecraft:dark_oak_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=8,waterlogged=true]": "minecraft:dark_oak_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=8,waterlogged=false]": "minecraft:dark_oak_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=9,waterlogged=true]": "minecraft:dark_oak_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=9,waterlogged=false]": "minecraft:dark_oak_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=10,waterlogged=true]": "minecraft:dark_oak_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=10,waterlogged=false]": "minecraft:dark_oak_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=11,waterlogged=true]": "minecraft:dark_oak_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=11,waterlogged=false]": "minecraft:dark_oak_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=12,waterlogged=true]": "minecraft:dark_oak_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=12,waterlogged=false]": "minecraft:dark_oak_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=13,waterlogged=true]": "minecraft:dark_oak_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=13,waterlogged=false]": "minecraft:dark_oak_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=14,waterlogged=true]": "minecraft:dark_oak_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=14,waterlogged=false]": "minecraft:dark_oak_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=15,waterlogged=true]": "minecraft:dark_oak_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:dark_oak_hanging_sign[attached=false,rotation=15,waterlogged=false]": "minecraft:dark_oak_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=0,waterlogged=true]": "minecraft:crimson_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=0,waterlogged=false]": "minecraft:crimson_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=1,waterlogged=true]": "minecraft:crimson_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=1,waterlogged=false]": "minecraft:crimson_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=2,waterlogged=true]": "minecraft:crimson_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=2,waterlogged=false]": "minecraft:crimson_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=3,waterlogged=true]": "minecraft:crimson_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=3,waterlogged=false]": "minecraft:crimson_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=4,waterlogged=true]": "minecraft:crimson_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=4,waterlogged=false]": "minecraft:crimson_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=5,waterlogged=true]": "minecraft:crimson_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=5,waterlogged=false]": "minecraft:crimson_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=6,waterlogged=true]": "minecraft:crimson_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=6,waterlogged=false]": "minecraft:crimson_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=7,waterlogged=true]": "minecraft:crimson_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=7,waterlogged=false]": "minecraft:crimson_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=8,waterlogged=true]": "minecraft:crimson_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=8,waterlogged=false]": "minecraft:crimson_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=9,waterlogged=true]": "minecraft:crimson_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=9,waterlogged=false]": "minecraft:crimson_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=10,waterlogged=true]": "minecraft:crimson_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=10,waterlogged=false]": "minecraft:crimson_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=11,waterlogged=true]": "minecraft:crimson_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=11,waterlogged=false]": "minecraft:crimson_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=12,waterlogged=true]": "minecraft:crimson_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=12,waterlogged=false]": "minecraft:crimson_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=13,waterlogged=true]": "minecraft:crimson_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=13,waterlogged=false]": "minecraft:crimson_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=14,waterlogged=true]": "minecraft:crimson_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=14,waterlogged=false]": "minecraft:crimson_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=15,waterlogged=true]": "minecraft:crimson_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=true,rotation=15,waterlogged=false]": "minecraft:crimson_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=0,waterlogged=true]": "minecraft:crimson_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=0,waterlogged=false]": "minecraft:crimson_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=1,waterlogged=true]": "minecraft:crimson_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=1,waterlogged=false]": "minecraft:crimson_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=2,waterlogged=true]": "minecraft:crimson_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=2,waterlogged=false]": "minecraft:crimson_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=3,waterlogged=true]": "minecraft:crimson_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=3,waterlogged=false]": "minecraft:crimson_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=4,waterlogged=true]": "minecraft:crimson_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=4,waterlogged=false]": "minecraft:crimson_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=5,waterlogged=true]": "minecraft:crimson_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=5,waterlogged=false]": "minecraft:crimson_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=6,waterlogged=true]": "minecraft:crimson_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=6,waterlogged=false]": "minecraft:crimson_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=7,waterlogged=true]": "minecraft:crimson_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=7,waterlogged=false]": "minecraft:crimson_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=8,waterlogged=true]": "minecraft:crimson_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=8,waterlogged=false]": "minecraft:crimson_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=9,waterlogged=true]": "minecraft:crimson_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=9,waterlogged=false]": "minecraft:crimson_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=10,waterlogged=true]": "minecraft:crimson_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=10,waterlogged=false]": "minecraft:crimson_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=11,waterlogged=true]": "minecraft:crimson_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=11,waterlogged=false]": "minecraft:crimson_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=12,waterlogged=true]": "minecraft:crimson_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=12,waterlogged=false]": "minecraft:crimson_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=13,waterlogged=true]": "minecraft:crimson_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=13,waterlogged=false]": "minecraft:crimson_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=14,waterlogged=true]": "minecraft:crimson_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=14,waterlogged=false]": "minecraft:crimson_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=15,waterlogged=true]": "minecraft:crimson_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:crimson_hanging_sign[attached=false,rotation=15,waterlogged=false]": "minecraft:crimson_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=0,waterlogged=true]": "minecraft:warped_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=0,waterlogged=false]": "minecraft:warped_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=1,waterlogged=true]": "minecraft:warped_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=1,waterlogged=false]": "minecraft:warped_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=2,waterlogged=true]": "minecraft:warped_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=2,waterlogged=false]": "minecraft:warped_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=3,waterlogged=true]": "minecraft:warped_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=3,waterlogged=false]": "minecraft:warped_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=4,waterlogged=true]": "minecraft:warped_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=4,waterlogged=false]": "minecraft:warped_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=5,waterlogged=true]": "minecraft:warped_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=5,waterlogged=false]": "minecraft:warped_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=6,waterlogged=true]": "minecraft:warped_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=6,waterlogged=false]": "minecraft:warped_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=7,waterlogged=true]": "minecraft:warped_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=7,waterlogged=false]": "minecraft:warped_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=8,waterlogged=true]": "minecraft:warped_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=8,waterlogged=false]": "minecraft:warped_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=9,waterlogged=true]": "minecraft:warped_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=9,waterlogged=false]": "minecraft:warped_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=10,waterlogged=true]": "minecraft:warped_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=10,waterlogged=false]": "minecraft:warped_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=11,waterlogged=true]": "minecraft:warped_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=11,waterlogged=false]": "minecraft:warped_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=12,waterlogged=true]": "minecraft:warped_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=12,waterlogged=false]": "minecraft:warped_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=13,waterlogged=true]": "minecraft:warped_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=13,waterlogged=false]": "minecraft:warped_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=14,waterlogged=true]": "minecraft:warped_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=14,waterlogged=false]": "minecraft:warped_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=15,waterlogged=true]": "minecraft:warped_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=true,rotation=15,waterlogged=false]": "minecraft:warped_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=0,waterlogged=true]": "minecraft:warped_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=0,waterlogged=false]": "minecraft:warped_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=1,waterlogged=true]": "minecraft:warped_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=1,waterlogged=false]": "minecraft:warped_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=2,waterlogged=true]": "minecraft:warped_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=2,waterlogged=false]": "minecraft:warped_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=3,waterlogged=true]": "minecraft:warped_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=3,waterlogged=false]": "minecraft:warped_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=4,waterlogged=true]": "minecraft:warped_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=4,waterlogged=false]": "minecraft:warped_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=5,waterlogged=true]": "minecraft:warped_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=5,waterlogged=false]": "minecraft:warped_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=6,waterlogged=true]": "minecraft:warped_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=6,waterlogged=false]": "minecraft:warped_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=7,waterlogged=true]": "minecraft:warped_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=7,waterlogged=false]": "minecraft:warped_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=8,waterlogged=true]": "minecraft:warped_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=8,waterlogged=false]": "minecraft:warped_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=9,waterlogged=true]": "minecraft:warped_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=9,waterlogged=false]": "minecraft:warped_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=10,waterlogged=true]": "minecraft:warped_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=10,waterlogged=false]": "minecraft:warped_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=11,waterlogged=true]": "minecraft:warped_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=11,waterlogged=false]": "minecraft:warped_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=12,waterlogged=true]": "minecraft:warped_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=12,waterlogged=false]": "minecraft:warped_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=13,waterlogged=true]": "minecraft:warped_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=13,waterlogged=false]": "minecraft:warped_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=14,waterlogged=true]": "minecraft:warped_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=14,waterlogged=false]": "minecraft:warped_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=15,waterlogged=true]": "minecraft:warped_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:warped_hanging_sign[attached=false,rotation=15,waterlogged=false]": "minecraft:warped_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=0,waterlogged=true]": "minecraft:mangrove_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=0,waterlogged=false]": "minecraft:mangrove_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=1,waterlogged=true]": "minecraft:mangrove_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=1,waterlogged=false]": "minecraft:mangrove_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=2,waterlogged=true]": "minecraft:mangrove_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=2,waterlogged=false]": "minecraft:mangrove_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=3,waterlogged=true]": "minecraft:mangrove_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=3,waterlogged=false]": "minecraft:mangrove_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=4,waterlogged=true]": "minecraft:mangrove_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=4,waterlogged=false]": "minecraft:mangrove_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=5,waterlogged=true]": "minecraft:mangrove_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=5,waterlogged=false]": "minecraft:mangrove_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=6,waterlogged=true]": "minecraft:mangrove_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=6,waterlogged=false]": "minecraft:mangrove_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=7,waterlogged=true]": "minecraft:mangrove_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=7,waterlogged=false]": "minecraft:mangrove_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=8,waterlogged=true]": "minecraft:mangrove_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=8,waterlogged=false]": "minecraft:mangrove_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=9,waterlogged=true]": "minecraft:mangrove_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=9,waterlogged=false]": "minecraft:mangrove_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=10,waterlogged=true]": "minecraft:mangrove_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=10,waterlogged=false]": "minecraft:mangrove_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=11,waterlogged=true]": "minecraft:mangrove_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=11,waterlogged=false]": "minecraft:mangrove_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=12,waterlogged=true]": "minecraft:mangrove_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=12,waterlogged=false]": "minecraft:mangrove_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=13,waterlogged=true]": "minecraft:mangrove_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=13,waterlogged=false]": "minecraft:mangrove_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=14,waterlogged=true]": "minecraft:mangrove_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=14,waterlogged=false]": "minecraft:mangrove_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=15,waterlogged=true]": "minecraft:mangrove_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=true,rotation=15,waterlogged=false]": "minecraft:mangrove_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=0,waterlogged=true]": "minecraft:mangrove_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=0,waterlogged=false]": "minecraft:mangrove_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=1,waterlogged=true]": "minecraft:mangrove_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=1,waterlogged=false]": "minecraft:mangrove_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=2,waterlogged=true]": "minecraft:mangrove_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=2,waterlogged=false]": "minecraft:mangrove_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=3,waterlogged=true]": "minecraft:mangrove_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=3,waterlogged=false]": "minecraft:mangrove_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=4,waterlogged=true]": "minecraft:mangrove_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=4,waterlogged=false]": "minecraft:mangrove_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=5,waterlogged=true]": "minecraft:mangrove_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=5,waterlogged=false]": "minecraft:mangrove_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=6,waterlogged=true]": "minecraft:mangrove_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=6,waterlogged=false]": "minecraft:mangrove_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=7,waterlogged=true]": "minecraft:mangrove_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=7,waterlogged=false]": "minecraft:mangrove_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=8,waterlogged=true]": "minecraft:mangrove_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=8,waterlogged=false]": "minecraft:mangrove_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=9,waterlogged=true]": "minecraft:mangrove_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=9,waterlogged=false]": "minecraft:mangrove_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=10,waterlogged=true]": "minecraft:mangrove_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=10,waterlogged=false]": "minecraft:mangrove_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=11,waterlogged=true]": "minecraft:mangrove_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=11,waterlogged=false]": "minecraft:mangrove_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=12,waterlogged=true]": "minecraft:mangrove_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=12,waterlogged=false]": "minecraft:mangrove_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=13,waterlogged=true]": "minecraft:mangrove_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=13,waterlogged=false]": "minecraft:mangrove_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=14,waterlogged=true]": "minecraft:mangrove_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=14,waterlogged=false]": "minecraft:mangrove_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=15,waterlogged=true]": "minecraft:mangrove_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:mangrove_hanging_sign[attached=false,rotation=15,waterlogged=false]": "minecraft:mangrove_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=0,waterlogged=true]": "minecraft:birch_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=0,waterlogged=false]": "minecraft:birch_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=1,waterlogged=true]": "minecraft:birch_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=1,waterlogged=false]": "minecraft:birch_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=2,waterlogged=true]": "minecraft:birch_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=2,waterlogged=false]": "minecraft:birch_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=3,waterlogged=true]": "minecraft:birch_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=3,waterlogged=false]": "minecraft:birch_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=4,waterlogged=true]": "minecraft:birch_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=4,waterlogged=false]": "minecraft:birch_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=5,waterlogged=true]": "minecraft:birch_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=5,waterlogged=false]": "minecraft:birch_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=6,waterlogged=true]": "minecraft:birch_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=6,waterlogged=false]": "minecraft:birch_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=7,waterlogged=true]": "minecraft:birch_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=7,waterlogged=false]": "minecraft:birch_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=8,waterlogged=true]": "minecraft:birch_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=8,waterlogged=false]": "minecraft:birch_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=9,waterlogged=true]": "minecraft:birch_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=9,waterlogged=false]": "minecraft:birch_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=10,waterlogged=true]": "minecraft:birch_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=10,waterlogged=false]": "minecraft:birch_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=11,waterlogged=true]": "minecraft:birch_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=11,waterlogged=false]": "minecraft:birch_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=12,waterlogged=true]": "minecraft:birch_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=12,waterlogged=false]": "minecraft:birch_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=13,waterlogged=true]": "minecraft:birch_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=13,waterlogged=false]": "minecraft:birch_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=14,waterlogged=true]": "minecraft:birch_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=14,waterlogged=false]": "minecraft:birch_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=15,waterlogged=true]": "minecraft:birch_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=true,rotation=15,waterlogged=false]": "minecraft:birch_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=0,waterlogged=true]": "minecraft:birch_sign[rotation=0,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=0,waterlogged=false]": "minecraft:birch_sign[rotation=0,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=1,waterlogged=true]": "minecraft:birch_sign[rotation=1,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=1,waterlogged=false]": "minecraft:birch_sign[rotation=1,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=2,waterlogged=true]": "minecraft:birch_sign[rotation=2,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=2,waterlogged=false]": "minecraft:birch_sign[rotation=2,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=3,waterlogged=true]": "minecraft:birch_sign[rotation=3,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=3,waterlogged=false]": "minecraft:birch_sign[rotation=3,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=4,waterlogged=true]": "minecraft:birch_sign[rotation=4,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=4,waterlogged=false]": "minecraft:birch_sign[rotation=4,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=5,waterlogged=true]": "minecraft:birch_sign[rotation=5,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=5,waterlogged=false]": "minecraft:birch_sign[rotation=5,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=6,waterlogged=true]": "minecraft:birch_sign[rotation=6,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=6,waterlogged=false]": "minecraft:birch_sign[rotation=6,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=7,waterlogged=true]": "minecraft:birch_sign[rotation=7,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=7,waterlogged=false]": "minecraft:birch_sign[rotation=7,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=8,waterlogged=true]": "minecraft:birch_sign[rotation=8,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=8,waterlogged=false]": "minecraft:birch_sign[rotation=8,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=9,waterlogged=true]": "minecraft:birch_sign[rotation=9,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=9,waterlogged=false]": "minecraft:birch_sign[rotation=9,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=10,waterlogged=true]": "minecraft:birch_sign[rotation=10,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=10,waterlogged=false]": "minecraft:birch_sign[rotation=10,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=11,waterlogged=true]": "minecraft:birch_sign[rotation=11,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=11,waterlogged=false]": "minecraft:birch_sign[rotation=11,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=12,waterlogged=true]": "minecraft:birch_sign[rotation=12,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=12,waterlogged=false]": "minecraft:birch_sign[rotation=12,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=13,waterlogged=true]": "minecraft:birch_sign[rotation=13,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=13,waterlogged=false]": "minecraft:birch_sign[rotation=13,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=14,waterlogged=true]": "minecraft:birch_sign[rotation=14,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=14,waterlogged=false]": "minecraft:birch_sign[rotation=14,waterlogged=false]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=15,waterlogged=true]": "minecraft:birch_sign[rotation=15,waterlogged=true]",
|
||||
"minecraft:bamboo_hanging_sign[attached=false,rotation=15,waterlogged=false]": "minecraft:birch_sign[rotation=15,waterlogged=false]",
|
||||
"minecraft:oak_wall_hanging_sign": "minecraft:oak_wall_sign[",
|
||||
"minecraft:spruce_wall_hanging_sign": "minecraft:spruce_wall_sign[",
|
||||
"minecraft:birch_wall_hanging_sign": "minecraft:birch_wall_sign[",
|
||||
"minecraft:acacia_wall_hanging_sign": "minecraft:acacia_wall_sign[",
|
||||
"minecraft:jungle_wall_hanging_sign": "minecraft:jungle_wall_sign[",
|
||||
"minecraft:dark_oak_wall_hanging_sign": "minecraft:dark_oak_wall_sign[",
|
||||
"minecraft:mangrove_wall_hanging_sign": "minecraft:mangrove_wall_sign[",
|
||||
"minecraft:crimson_wall_hanging_sign": "minecraft:crimson_wall_sign[",
|
||||
"minecraft:warped_wall_hanging_sign": "minecraft:warped_wall_sign[",
|
||||
"minecraft:bamboo_wall_hanging_sign": "minecraft:birch_wall_sign[",
|
||||
"minecraft:bamboo_pressure_plate": "minecraft:birch_pressure_plate[",
|
||||
"minecraft:bamboo_trapdoor": "minecraft:birch_trapdoor[",
|
||||
"minecraft:bamboo_button": "minecraft:birch_button[",
|
||||
"minecraft:bamboo_stairs": "minecraft:birch_stairs[",
|
||||
"minecraft:bamboo_mosaic_stairs": "minecraft:birch_stairs[",
|
||||
"minecraft:bamboo_slab": "minecraft:birch_slab[",
|
||||
"minecraft:bamboo_mosaic_slab": "minecraft:birch_slab[",
|
||||
"minecraft:bamboo_fence": "minecraft:birch_fence[",
|
||||
"minecraft:bamboo_fence_gate": "minecraft:birch_fence_gate[",
|
||||
"minecraft:bamboo_door": "minecraft:birch_door[",
|
||||
"minecraft:bamboo_block": "minecraft:birch_wood[",
|
||||
"minecraft:stripped_bamboo_block": "minecraft:stripped_birch_wood["
|
||||
},
|
||||
"argumenttypes": {
|
||||
"minecraft:resource_key": "minecraft:resource_or_tag",
|
||||
"minecraft:resource_or_tag_key": "minecraft:resource_or_tag",
|
||||
"minecraft:gamemode": "brigadier:string"
|
||||
},
|
||||
"blockentities": {
|
||||
"hanging_sign": "sign",
|
||||
"chiseled_bookshelf": ""
|
||||
},
|
||||
"items": {
|
||||
"minecraft:bamboo_planks": {
|
||||
"id": "minecraft:birch_planks",
|
||||
"name": "1.19.3 Bamboo Planks"
|
||||
},
|
||||
"minecraft:bamboo_mosaic": {
|
||||
"id": "minecraft:birch_planks",
|
||||
"name": "1.19.3 Bamboo Mosaic"
|
||||
},
|
||||
"minecraft:bamboo_slab": {
|
||||
"id": "minecraft:birch_slab",
|
||||
"name": "1.19.3 Bamboo Slab"
|
||||
},
|
||||
"minecraft:bamboo_mosaic_slab": {
|
||||
"id": "minecraft:birch_slab",
|
||||
"name": "1.19.3 Bamboo Mosaic Slab"
|
||||
},
|
||||
"minecraft:chiseled_bookshelf": {
|
||||
"id": "minecraft:bookshelf",
|
||||
"name": "1.19.3 Chiseled Bookshelf"
|
||||
},
|
||||
"minecraft:bamboo_fence": {
|
||||
"id": "minecraft:birch_fence",
|
||||
"name": "1.19.3 Bamboo Fence"
|
||||
},
|
||||
"minecraft:bamboo_stairs": {
|
||||
"id": "minecraft:birch_stairs",
|
||||
"name": "1.19.3 Bamboo Stairs"
|
||||
},
|
||||
"minecraft:bamboo_mosaic_stairs": {
|
||||
"id": "minecraft:birch_stairs",
|
||||
"name": "1.19.3 Bamboo Mosaic Stairs"
|
||||
},
|
||||
"minecraft:bamboo_button": {
|
||||
"id": "minecraft:birch_button",
|
||||
"name": "1.19.3 Bamboo Button"
|
||||
},
|
||||
"minecraft:bamboo_pressure_plate": {
|
||||
"id": "minecraft:birch_pressure_plate",
|
||||
"name": "1.19.3 Bamboo Pressure Plate"
|
||||
},
|
||||
"minecraft:bamboo_door": {
|
||||
"id": "minecraft:birch_door",
|
||||
"name": "1.19.3 Bamboo Door"
|
||||
},
|
||||
"minecraft:bamboo_trapdoor": {
|
||||
"id": "minecraft:birch_trapdoor",
|
||||
"name": "1.19.3 Bamboo Trapdoor"
|
||||
},
|
||||
"minecraft:bamboo_fence_gate": {
|
||||
"id": "minecraft:birch_fence_gate",
|
||||
"name": "1.19.3 Bamboo Fence Gate"
|
||||
},
|
||||
"minecraft:bamboo_raft": {
|
||||
"id": "minecraft:birch_boat",
|
||||
"name": "1.19.3 Bamboo Raft"
|
||||
},
|
||||
"minecraft:bamboo_chest_raft": {
|
||||
"id": "minecraft:birch_chest_boat",
|
||||
"name": "1.19.3 Bamboo Chest Raft"
|
||||
},
|
||||
"minecraft:bamboo_sign": {
|
||||
"id": "minecraft:birch_sign",
|
||||
"name": "1.19.3 Bamboo Sign"
|
||||
},
|
||||
"minecraft:oak_hanging_sign": {
|
||||
"id": "minecraft:birch_sign",
|
||||
"name": "1.19.3 Oak Hanging Sign"
|
||||
},
|
||||
"minecraft:spruce_hanging_sign": {
|
||||
"id": "minecraft:spruce_sign",
|
||||
"name": "1.19.3 Spruce Hanging Sign"
|
||||
},
|
||||
"minecraft:birch_hanging_sign": {
|
||||
"id": "minecraft:birch_sign",
|
||||
"name": "1.19.3 Birch Hanging Sign"
|
||||
},
|
||||
"minecraft:jungle_hanging_sign": {
|
||||
"id": "minecraft:jungle_sign",
|
||||
"name": "1.19.3 Jungle Hanging Sign"
|
||||
},
|
||||
"minecraft:acacia_hanging_sign": {
|
||||
"id": "minecraft:acacia_sign",
|
||||
"name": "1.19.3 Acacia Hanging Sign"
|
||||
},
|
||||
"minecraft:dark_oak_hanging_sign": {
|
||||
"id": "minecraft:dark_oak_sign",
|
||||
"name": "1.19.3 Dark Oak Hanging Sign"
|
||||
},
|
||||
"minecraft:mangrove_hanging_sign": {
|
||||
"id": "minecraft:mangrove_sign",
|
||||
"name": "1.19.3 Mangrove Hanging Sign"
|
||||
},
|
||||
"minecraft:bamboo_hanging_sign": {
|
||||
"id": "minecraft:birch_sign",
|
||||
"name": "1.19.3 Bamboo Hanging Sign"
|
||||
},
|
||||
"minecraft:crimson_hanging_sign": {
|
||||
"id": "minecraft:crimson_sign",
|
||||
"name": "1.19.3 Crimson Hanging Sign"
|
||||
},
|
||||
"minecraft:warped_hanging_sign": {
|
||||
"id": "minecraft:warped_sign",
|
||||
"name": "1.19.3 Warped Hanging Sign"
|
||||
},
|
||||
"minecraft:camel_spawn_egg": {
|
||||
"id": "minecraft:donkey_spawn_egg",
|
||||
"name": "1.19.3 Camel Spawn Egg"
|
||||
},
|
||||
"minecraft:ender_dragon_spawn_egg": {
|
||||
"id": "minecraft:enderman_spawn_egg",
|
||||
"name": "1.19.3 Ender Dragon Spawn Egg"
|
||||
},
|
||||
"minecraft:iron_golem_spawn_egg": {
|
||||
"id": "minecraft:polar_bear_spawn_egg",
|
||||
"name": "1.19.3 Iron Golem Spawn Egg"
|
||||
},
|
||||
"minecraft:snow_golem_spawn_egg": {
|
||||
"id": "minecraft:polar_bear_spawn_egg",
|
||||
"name": "1.19.3 Snow Golem Spawn Egg"
|
||||
},
|
||||
"minecraft:wither_spawn_egg": {
|
||||
"id": "minecraft:squid_spawn_egg",
|
||||
"name": "1.19.3 Wither Spawn Egg"
|
||||
},
|
||||
"minecraft:bamboo_block": {
|
||||
"id": "minecraft:birch_wood",
|
||||
"name": "1.19.3 Bamboo Block"
|
||||
},
|
||||
"minecraft:stripped_bamboo_block": {
|
||||
"id": "minecraft:stripped_birch_wood",
|
||||
"name": "1.19.3 Stripped Bamboo Block"
|
||||
},
|
||||
"minecraft:piglin_head": {
|
||||
"id": "minecraft:zombie_head",
|
||||
"name": "1.19.3 Piglin Head"
|
||||
}
|
||||
},
|
||||
"sounds": {
|
||||
"block.bamboo_wood.break": "",
|
||||
"block.bamboo_wood.fall": "",
|
||||
"block.bamboo_wood.hit": "",
|
||||
"block.bamboo_wood.place": "",
|
||||
"block.bamboo_wood.step": "",
|
||||
"block.bamboo_wood_door.close": "",
|
||||
"block.bamboo_wood_door.open": "",
|
||||
"block.bamboo_wood_trapdoor.close": "",
|
||||
"block.bamboo_wood_trapdoor.open": "",
|
||||
"block.bamboo_wood_button.click_off": "",
|
||||
"block.bamboo_wood_button.click_on": "",
|
||||
"block.bamboo_wood_pressure_plate.click_off": "",
|
||||
"block.bamboo_wood_pressure_plate.click_on": "",
|
||||
"block.bamboo_wood_fence_gate.close": "",
|
||||
"block.bamboo_wood_fence_gate.open": "",
|
||||
"entity.camel.ambient": "",
|
||||
"entity.camel.dash": "",
|
||||
"entity.camel.dash_ready": "",
|
||||
"entity.camel.death": "",
|
||||
"entity.camel.eat": "",
|
||||
"entity.camel.hurt": "",
|
||||
"entity.camel.saddle": "",
|
||||
"entity.camel.sit": "",
|
||||
"entity.camel.stand": "",
|
||||
"entity.camel.step": "",
|
||||
"entity.camel.step_sand": "",
|
||||
"block.hanging_sign.step": "",
|
||||
"block.hanging_sign.break": "",
|
||||
"block.hanging_sign.fall": "",
|
||||
"block.hanging_sign.hit": "",
|
||||
"block.hanging_sign.place": "",
|
||||
"block.nether_wood.break": "",
|
||||
"block.nether_wood.fall": "",
|
||||
"block.nether_wood.hit": "",
|
||||
"block.nether_wood.place": "",
|
||||
"block.nether_wood.step": "",
|
||||
"block.nether_wood_door.close": "",
|
||||
"block.nether_wood_door.open": "",
|
||||
"block.nether_wood_trapdoor.close": "",
|
||||
"block.nether_wood_trapdoor.open": "",
|
||||
"block.nether_wood_button.click_off": "",
|
||||
"block.nether_wood_button.click_on": "",
|
||||
"block.nether_wood_pressure_plate.click_off": "",
|
||||
"block.nether_wood_pressure_plate.click_on": "",
|
||||
"block.nether_wood_fence_gate.close": "",
|
||||
"block.nether_wood_fence_gate.open": "",
|
||||
"block.chiseled_bookshelf.break": "",
|
||||
"block.chiseled_bookshelf.fall": "",
|
||||
"block.chiseled_bookshelf.hit": "",
|
||||
"block.chiseled_bookshelf.insert": "",
|
||||
"block.chiseled_bookshelf.insert.enchanted": "",
|
||||
"block.chiseled_bookshelf.step": "",
|
||||
"block.chiseled_bookshelf.pickup": "",
|
||||
"block.chiseled_bookshelf.pickup.enchanted": "",
|
||||
"block.chiseled_bookshelf.place": "",
|
||||
"block.nether_wood_hanging_sign.step": "",
|
||||
"block.nether_wood_hanging_sign.break": "",
|
||||
"block.nether_wood_hanging_sign.fall": "",
|
||||
"block.nether_wood_hanging_sign.hit": "",
|
||||
"block.nether_wood_hanging_sign.place": "",
|
||||
"block.bamboo_wood_hanging_sign.step": "",
|
||||
"block.bamboo_wood_hanging_sign.break": "",
|
||||
"block.bamboo_wood_hanging_sign.fall": "",
|
||||
"block.bamboo_wood_hanging_sign.hit": "",
|
||||
"block.bamboo_wood_hanging_sign.place": "",
|
||||
"block.note_block.imitate.zombie": "",
|
||||
"block.note_block.imitate.skeleton": "",
|
||||
"block.note_block.imitate.creeper": "",
|
||||
"block.note_block.imitate.ender_dragon": "",
|
||||
"block.note_block.imitate.wither_skeleton": "",
|
||||
"block.note_block.imitate.piglin": ""
|
||||
},
|
||||
"entitynames": {
|
||||
"camel": "Camel"
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,426 @@
|
||||
{
|
||||
"1.19.3": {
|
||||
"gui.chatReport.discard.draft": "Save as Draft",
|
||||
"gui.chatReport.draft.title": "Edit draft chat report?",
|
||||
"gui.chatReport.draft.content": "Would you like to continue editing the existing report or discard it and create a new one?",
|
||||
"gui.chatReport.draft.quittotitle.title": "You have a draft chat report that will be lost if you quit",
|
||||
"gui.chatReport.draft.quittotitle.content": "Would you like to continue editing it or discard it?",
|
||||
"gui.chatReport.draft.discard": "Discard",
|
||||
"gui.chatReport.draft.edit": "Continue Editing",
|
||||
"gui.chatSelection.join": "%s joined the chat",
|
||||
"selectWorld.experimental": "Experimental",
|
||||
"selectWorld.warning.experimental.title": "Warning! These settings are using experimental features",
|
||||
"selectWorld.warning.experimental.question": "These settings are experimental and could one day stop working. Do you wish to proceed?",
|
||||
"selectWorld.warning.deprecated.title": "Warning! These settings are using deprecated features",
|
||||
"selectWorld.warning.deprecated.question": "Some features used are deprecated and will stop working in the future. Do you wish to proceed?",
|
||||
"selectWorld.experimental.title": "Experimental Features Warning",
|
||||
"selectWorld.experimental.message": "Be careful!\nSome of the selected packs require features that are still under development. Your world might crash, break or not work with future updates.",
|
||||
"selectWorld.experimental.details": "Details",
|
||||
"selectWorld.experimental.details.title": "Experimental feature requirements",
|
||||
"selectWorld.experimental.details.entry": "Required experimental features: %s",
|
||||
"lanServer.port": "Port Number",
|
||||
"lanServer.port.unavailable": "Port not available.\nLeave the edit box empty or enter a different number between 1024 and 65535.",
|
||||
"lanServer.port.unavailable.new": "Port not available.\nLeave the edit box empty or enter a different number between %s and %s.",
|
||||
"lanServer.port.invalid": "Not a valid port.\nLeave the edit box empty or enter a number between 1024 and 65535.",
|
||||
"lanServer.port.invalid.new": "Not a valid port.\nLeave the edit box empty or enter a number between %s and %s.",
|
||||
"multiplayer.disconnect.expired_public_key": "Expired profile public key. Check that your system time is synchronized, and try restarting your game.",
|
||||
"chat.disabled.expiredProfileKey": "Chat disabled due to expired profile public key. Please try reconnecting.",
|
||||
"chat.disabled.chain_broken": "Chat disabled due to broken chain. Please try reconnecting.",
|
||||
"chat.disabled.missingProfileKey": "Chat disabled due to missing profile public key. Please try reconnecting.",
|
||||
"chat.tag.system": "Server message. Cannot be reported.",
|
||||
"chat.tag.system_single_player": "Server message.",
|
||||
"chat.filtered": "Filtered by the server.",
|
||||
"chat.deleted_marker": "This chat message has been deleted by the server.",
|
||||
"options.accessibility.panorama_speed": "Panorama Scroll Speed",
|
||||
"options.telemetry": "Telemetry Data",
|
||||
"options.telemetry.button": "Data Collection",
|
||||
"options.telemetry.state.none": "None",
|
||||
"options.telemetry.state.minimal": "Minimal",
|
||||
"options.telemetry.state.all": "All",
|
||||
"options.telemetry.button.tooltip": "\"%s\" includes only the required data.\n\"%s\" includes optional, as well as the required data.",
|
||||
"options.operatorItemsTab": "Operator Items Tab",
|
||||
"resourcePack.programmer_art.name": "Programmer Art",
|
||||
"resourcePack.vanilla.name": "Default",
|
||||
"dataPack.vanilla.name": "Default",
|
||||
"dataPack.bundle.description": "Enables experimental Bundle item",
|
||||
"dataPack.update_1_20.description": "New features and content for Minecraft 1.20",
|
||||
"hanging_sign.edit": "Edit Hanging Sign Message",
|
||||
"block.minecraft.bamboo_planks": "Bamboo Planks",
|
||||
"block.minecraft.bamboo_mosaic": "Bamboo Mosaic",
|
||||
"block.minecraft.bamboo_door": "Bamboo Door",
|
||||
"block.minecraft.bamboo_block": "Block of Bamboo",
|
||||
"block.minecraft.stripped_bamboo_block": "Block of Stripped Bamboo",
|
||||
"block.minecraft.bamboo_slab": "Bamboo Slab",
|
||||
"block.minecraft.bamboo_mosaic_slab": "Bamboo Mosaic Slab",
|
||||
"block.minecraft.chiseled_bookshelf": "Chiseled Bookshelf",
|
||||
"block.minecraft.spawner.desc1": "Interact with Spawn Egg:",
|
||||
"block.minecraft.spawner.desc2": "Sets Mob Type",
|
||||
"block.minecraft.bamboo_stairs": "Bamboo Stairs",
|
||||
"block.minecraft.bamboo_mosaic_stairs": "Bamboo Mosaic Stairs",
|
||||
"block.minecraft.bamboo_sign": "Bamboo Sign",
|
||||
"block.minecraft.bamboo_wall_sign": "Bamboo Wall Sign",
|
||||
"block.minecraft.oak_hanging_sign": "Oak Hanging Sign",
|
||||
"block.minecraft.spruce_hanging_sign": "Spruce Hanging Sign",
|
||||
"block.minecraft.birch_hanging_sign": "Birch Hanging Sign",
|
||||
"block.minecraft.acacia_hanging_sign": "Acacia Hanging Sign",
|
||||
"block.minecraft.jungle_hanging_sign": "Jungle Hanging Sign",
|
||||
"block.minecraft.crimson_hanging_sign": "Crimson Hanging Sign",
|
||||
"block.minecraft.warped_hanging_sign": "Warped Hanging Sign",
|
||||
"block.minecraft.dark_oak_hanging_sign": "Dark Oak Hanging Sign",
|
||||
"block.minecraft.mangrove_hanging_sign": "Mangrove Hanging Sign",
|
||||
"block.minecraft.bamboo_hanging_sign": "Bamboo Hanging Sign",
|
||||
"block.minecraft.oak_wall_hanging_sign": "Oak Wall Hanging Sign",
|
||||
"block.minecraft.spruce_wall_hanging_sign": "Spruce Wall Hanging Sign",
|
||||
"block.minecraft.birch_wall_hanging_sign": "Birch Wall Hanging Sign",
|
||||
"block.minecraft.acacia_wall_hanging_sign": "Acacia Wall Hanging Sign",
|
||||
"block.minecraft.jungle_wall_hanging_sign": "Jungle Wall Hanging Sign",
|
||||
"block.minecraft.dark_oak_wall_hanging_sign": "Dark Oak Wall Hanging Sign",
|
||||
"block.minecraft.mangrove_wall_hanging_sign": "Mangrove Wall Hanging Sign",
|
||||
"block.minecraft.crimson_wall_hanging_sign": "Crimson Wall Hanging Sign",
|
||||
"block.minecraft.warped_wall_hanging_sign": "Warped Wall Hanging Sign",
|
||||
"block.minecraft.bamboo_wall_hanging_sign": "Bamboo Wall Hanging Sign",
|
||||
"block.minecraft.bamboo_pressure_plate": "Bamboo Pressure Plate",
|
||||
"block.minecraft.bamboo_button": "Bamboo Button",
|
||||
"block.minecraft.bamboo_fence": "Bamboo Fence",
|
||||
"block.minecraft.bamboo_fence_gate": "Bamboo Fence Gate",
|
||||
"block.minecraft.bamboo_trapdoor": "Bamboo Trapdoor",
|
||||
"block.minecraft.piglin_wall_head": "Piglin Wall Head",
|
||||
"block.minecraft.piglin_head": "Piglin Head",
|
||||
"item.minecraft.bamboo_raft": "Bamboo Raft",
|
||||
"item.minecraft.bamboo_chest_raft": "Bamboo Raft with Chest",
|
||||
"item.minecraft.camel_spawn_egg": "Camel Spawn Egg",
|
||||
"item.minecraft.ender_dragon_spawn_egg": "Ender Dragon Spawn Egg",
|
||||
"item.minecraft.iron_golem_spawn_egg": "Iron Golem Spawn Egg",
|
||||
"item.minecraft.snow_golem_spawn_egg": "Snow Golem Spawn Egg",
|
||||
"item.minecraft.wither_spawn_egg": "Wither Spawn Egg",
|
||||
"item.disabled": "Disabled item",
|
||||
"entity.minecraft.camel": "Camel",
|
||||
"itemGroup.coloredBlocks": "Colored Blocks",
|
||||
"itemGroup.natural": "Natural Blocks",
|
||||
"itemGroup.functional": "Functional Blocks",
|
||||
"itemGroup.op": "Operator Utilities",
|
||||
"itemGroup.spawnEggs": "Spawn Eggs",
|
||||
"itemGroup.consumables": "Consumables",
|
||||
"itemGroup.foodAndDrink": "Food & Drinks",
|
||||
"itemGroup.crafting": "Crafting",
|
||||
"itemGroup.ingredients": "Ingredients",
|
||||
"subtitles.chiseled_bookshelf.insert": "Book placed",
|
||||
"subtitles.chiseled_bookshelf.insert_enchanted": "Enchanted book placed",
|
||||
"subtitles.chiseled_bookshelf.take": "Book taken",
|
||||
"subtitles.chiseled_bookshelf.take_enchanted": "Enchanted book taken",
|
||||
"subtitles.entity.camel.ambient": "Camel grunts",
|
||||
"subtitles.entity.camel.dash": "Camel yeets",
|
||||
"subtitles.entity.camel.dash_ready": "Camel recovers",
|
||||
"subtitles.entity.camel.death": "Camel dies",
|
||||
"subtitles.entity.camel.eat": "Camel eats",
|
||||
"subtitles.entity.camel.hurt": "Camel hurts",
|
||||
"subtitles.entity.camel.saddle": "Saddle equips",
|
||||
"subtitles.entity.camel.sit": "Camel sits down",
|
||||
"subtitles.entity.camel.stand": "Camel stands up",
|
||||
"subtitles.entity.camel.step": "Camel steps",
|
||||
"subtitles.entity.camel.step_sand": "Camel sands",
|
||||
"subtitles.entity.enderman.scream": "Enderman screams",
|
||||
"subtitles.entity.tadpole.grow_up": "Tadpole grows up",
|
||||
"telemetry_info.screen.title": "Telemetry Data Collection",
|
||||
"telemetry_info.screen.description": "Collecting this data helps us improve Minecraft by guiding us in directions that are relevant to our players.\nYou can also send in additional feedback to help us keep improving Minecraft.",
|
||||
"telemetry_info.button.show_data": "Open My Data",
|
||||
"telemetry_info.button.give_feedback": "Give Feedback",
|
||||
"telemetry_info.property_title": "Included Data",
|
||||
"telemetry.property.user_id.title": "User ID",
|
||||
"telemetry.property.client_id.title": "Client ID",
|
||||
"telemetry.property.minecraft_session_id.title": "Minecraft Session ID",
|
||||
"telemetry.property.game_version.title": "Game Version",
|
||||
"telemetry.property.operating_system.title": "Operating System",
|
||||
"telemetry.property.platform.title": "Platform",
|
||||
"telemetry.property.client_modded.title": "Client Modded",
|
||||
"telemetry.property.event_timestamp_utc.title": "Event Timestamp (UTC)",
|
||||
"telemetry.property.opt_in.title": "Opt-In",
|
||||
"telemetry.property.world_session_id.title": "World Session ID",
|
||||
"telemetry.property.server_modded.title": "Server Modded",
|
||||
"telemetry.property.server_type.title": "Server Type",
|
||||
"telemetry.property.frame_rate_samples.title": "Frame Rate Samples (FPS)",
|
||||
"telemetry.property.render_time_samples.title": "Render Time Samples",
|
||||
"telemetry.property.used_memory_samples.title": "Used Random Access Memory",
|
||||
"telemetry.property.number_of_samples.title": "Sample Count",
|
||||
"telemetry.property.render_distance.title": "Render Distance",
|
||||
"telemetry.property.dedicated_memory_kb.title": "Dedicated Memory (kB)",
|
||||
"telemetry.property.game_mode.title": "Game Mode",
|
||||
"telemetry.property.seconds_since_load.title": "Time Since Load (Seconds)",
|
||||
"telemetry.property.ticks_since_load.title": "Time Since Load (Ticks)",
|
||||
"telemetry.property.world_load_time_ms.title": "World Load Time (Milliseconds)",
|
||||
"telemetry.property.new_world.title": "New World",
|
||||
"telemetry.event.required": "%s (Required)",
|
||||
"telemetry.event.optional": "%s (Optional)",
|
||||
"telemetry.event.world_loaded.title": "World Loaded",
|
||||
"telemetry.event.world_loaded.description": "Knowing how players play Minecraft (such as Game Mode, client or server modded, and game version) allows us to focus game updates to improve the areas that players care about most.\nThe World Loaded event is paired with the World Unloaded event to calculate how long the play session has lasted.",
|
||||
"telemetry.event.world_unloaded.title": "World Unloaded",
|
||||
"telemetry.event.world_unloaded.description": "This event is paired with the World Loaded event to calculate how long the world session has lasted.\nThe duration (in seconds and ticks) is measured when a world session has ended (quitting to title, disconnecting from a server).",
|
||||
"telemetry.event.performance_metrics.title": "Performance Metrics",
|
||||
"telemetry.event.performance_metrics.description": "Knowing the overall performance profile of Minecraft helps us tune and optimize the game for a wide range of machine specifications and operating systems. \nGame version is included to help us compare the performance profile for new versions of Minecraft.",
|
||||
"telemetry.event.world_load_times.title": "World Load Times",
|
||||
"telemetry.event.world_load_times.description": "It�s important for us to understand how long it takes to join a world, and how that changes over time. For example, when we add new features or do larger technical changes, we need to see what impact that had on load times.",
|
||||
"argument.resource.not_found": "Can't find element '%s' of type '%s'",
|
||||
"argument.resource.invalid_type": "Element '%s' has wrong type '%s' (expected '%s')",
|
||||
"argument.resource_tag.not_found": "Can't find tag '%s' of type '%s'",
|
||||
"argument.resource_tag.invalid_type": "Tag '%s' has wrong type '%s' (expected '%s')",
|
||||
"arguments.nbtpath.too_deep": "Resulting NBT too deeply nested",
|
||||
"arguments.nbtpath.too_large": "Resulting NBT too large",
|
||||
"argument.gamemode.invalid": "Unknown gamemode: %s",
|
||||
"entity.not_summonable": "Can't summon entity of type %s",
|
||||
"commands.datapack.enable.failed.no_flags": "Pack '%s' cannot be enabled, since required flags are not enabled in this world: %s!",
|
||||
"commands.fillbiome.toobig": "Too many blocks in the specified volume (maximum %s, specified %s)",
|
||||
"commands.fillbiome.success": "Biomes set between %s, %s, %s and %s, %s, %s",
|
||||
"commands.fillbiome.success.count": "%s biome entries set between %s, %s, %s and %s, %s, %s",
|
||||
"gamerule.blockExplosionDropDecay": "In block interaction explosions, some blocks won't drop their loot",
|
||||
"gamerule.blockExplosionDropDecay.description": "Some of the drops from blocks destroyed by explosions caused by block interactions are lost in the explosion.",
|
||||
"gamerule.mobExplosionDropDecay": "In mob explosions, some blocks won't drop their loot",
|
||||
"gamerule.mobExplosionDropDecay.description": "Some of the drops from blocks destroyed by explosions caused by mobs are lost in the explosion.",
|
||||
"gamerule.tntExplosionDropDecay": "In TNT explosions, some blocks won't drop their loot",
|
||||
"gamerule.tntExplosionDropDecay.description": "Some of the drops from blocks destroyed by explosions caused by TNT are lost in the explosion.",
|
||||
"gamerule.snowAccumulationHeight": "Snow accumulation height",
|
||||
"gamerule.snowAccumulationHeight.description": "When it snows, layers of snow form on the ground up to at most this number of layers.",
|
||||
"gamerule.waterSourceConversion": "Water converts to source",
|
||||
"gamerule.waterSourceConversion.description": "When flowing water is surrounded on two sides by water sources it converts into a source.",
|
||||
"gamerule.lavaSourceConversion": "Lava converts to source",
|
||||
"gamerule.lavaSourceConversion.description": "When flowing lava is surrounded on two sides by lava sources it converts into a source.",
|
||||
"gamerule.globalSoundEvents": "Global sound events",
|
||||
"gamerule.globalSoundEvents.description": "When certain game events happen, like a boss spawning, the sound is heard everywhere.",
|
||||
"pack.source.feature": "feature",
|
||||
"mco.gui.ok": "Ok",
|
||||
"mco.gui.button": "Button",
|
||||
"mco.terms.buttons.agree": "Agree",
|
||||
"mco.terms.buttons.disagree": "Don't agree",
|
||||
"mco.terms.title": "Realms Terms of Service",
|
||||
"mco.terms.sentence.1": "I agree to the Minecraft Realms",
|
||||
"mco.terms.sentence.2": "Terms of Service",
|
||||
"mco.selectServer.play": "Play",
|
||||
"mco.selectServer.configure": "Configure",
|
||||
"mco.selectServer.configureRealm": "Configure realm",
|
||||
"mco.selectServer.leave": "Leave realm",
|
||||
"mco.selectServer.create": "Create realm",
|
||||
"mco.selectServer.purchase": "Add Realm",
|
||||
"mco.selectServer.buy": "Buy a realm!",
|
||||
"mco.selectServer.trial": "Get a trial!",
|
||||
"mco.selectServer.close": "Close",
|
||||
"mco.selectServer.expiredTrial": "Your trial has ended",
|
||||
"mco.selectServer.expiredList": "Your subscription has expired",
|
||||
"mco.selectServer.expiredSubscribe": "Subscribe",
|
||||
"mco.selectServer.expiredRenew": "Renew",
|
||||
"mco.selectServer.expired": "Expired realm",
|
||||
"mco.selectServer.open": "Open realm",
|
||||
"mco.selectServer.closed": "Closed realm",
|
||||
"mco.selectServer.openserver": "Open realm",
|
||||
"mco.selectServer.closeserver": "Close realm",
|
||||
"mco.selectServer.minigame": "Minigame:",
|
||||
"mco.selectServer.uninitialized": "Click to start your new realm!",
|
||||
"mco.selectServer.expires.days": "Expires in %s days",
|
||||
"mco.selectServer.expires.day": "Expires in a day",
|
||||
"mco.selectServer.expires.soon": "Expires soon",
|
||||
"mco.selectServer.note": "Note:",
|
||||
"mco.selectServer.mapOnlySupportedForVersion": "This map is unsupported in %s",
|
||||
"mco.selectServer.minigameNotSupportedInVersion": "Can't play this minigame in %s",
|
||||
"mco.selectServer.popup": "Realms is a safe, simple way to enjoy an online Minecraft world with up to ten friends at a time. It supports loads of minigames and plenty of custom worlds! Only the owner of the realm needs to pay.",
|
||||
"mco.configure.world.settings.title": "Settings",
|
||||
"mco.configure.world.title": "Configure realm:",
|
||||
"mco.configure.worlds.title": "Worlds",
|
||||
"mco.configure.world.name": "Realm name",
|
||||
"mco.configure.world.description": "Realm description",
|
||||
"mco.configure.world.location": "Location",
|
||||
"mco.configure.world.invited": "Invited",
|
||||
"mco.configure.world.invite.narration": "You have %s new invites",
|
||||
"mco.configure.world.buttons.edit": "Settings",
|
||||
"mco.configure.world.buttons.done": "Done",
|
||||
"mco.configure.world.buttons.delete": "Delete",
|
||||
"mco.configure.world.buttons.open": "Open realm",
|
||||
"mco.configure.world.buttons.close": "Close realm",
|
||||
"mco.configure.world.buttons.invite": "Invite player",
|
||||
"mco.configure.world.buttons.activity": "Player activity",
|
||||
"mco.configure.world.activityfeed.disabled": "Player feed temporarily disabled",
|
||||
"mco.configure.world.buttons.moreoptions": "More options",
|
||||
"mco.configure.world.invite.profile.name": "Name",
|
||||
"mco.configure.world.uninvite.question": "Are you sure that you want to uninvite",
|
||||
"mco.configure.world.status": "Status",
|
||||
"mco.configure.world.invites.ops.tooltip": "Operator",
|
||||
"mco.configure.world.invites.normal.tooltip": "Normal user",
|
||||
"mco.configure.world.invites.remove.tooltip": "Remove",
|
||||
"mco.configure.world.closing": "Closing the realm...",
|
||||
"mco.configure.world.opening": "Opening the realm...",
|
||||
"mco.configure.world.buttons.players": "Players",
|
||||
"mco.configure.world.buttons.settings": "Settings",
|
||||
"mco.configure.world.buttons.subscription": "Subscription",
|
||||
"mco.configure.world.buttons.options": "World options",
|
||||
"mco.configure.world.backup": "World backups",
|
||||
"mco.configure.world.buttons.resetworld": "Reset world",
|
||||
"mco.configure.world.buttons.switchminigame": "Switch minigame",
|
||||
"mco.configure.current.minigame": "Current",
|
||||
"mco.configure.world.subscription.title": "Your subscription",
|
||||
"mco.configure.world.subscription.timeleft": "Time left",
|
||||
"mco.configure.world.subscription.unknown": "Unknown",
|
||||
"mco.configure.world.subscription.recurring.daysleft": "Renewed automatically in",
|
||||
"mco.configure.world.subscription.less_than_a_day": "Less than a day",
|
||||
"mco.configure.world.subscription.expired": "Expired",
|
||||
"mco.configure.world.subscription.start": "Start date",
|
||||
"mco.configure.world.subscription.extend": "Extend subscription",
|
||||
"mco.configure.world.subscription.day": "day",
|
||||
"mco.configure.world.subscription.month": "month",
|
||||
"mco.configure.world.subscription.days": "days",
|
||||
"mco.configure.world.subscription.months": "months",
|
||||
"mco.configure.world.pvp": "PVP",
|
||||
"mco.configure.world.spawn_toggle.title": "Warning!",
|
||||
"mco.configure.world.spawn_toggle.message": "Turning this option off will REMOVE ALL existing entities of that type",
|
||||
"mco.configure.world.spawn_toggle.message.npc": "Turning this option off will REMOVE ALL existing entities of that type, like Villagers",
|
||||
"mco.configure.world.spawnAnimals": "Spawn animals",
|
||||
"mco.configure.world.spawnNPCs": "Spawn NPCs",
|
||||
"mco.configure.world.spawnMonsters": "Spawn monsters",
|
||||
"mco.configure.world.spawnProtection": "Spawn protection",
|
||||
"mco.configure.world.commandBlocks": "Command blocks",
|
||||
"mco.configure.world.forceGameMode": "Force game mode",
|
||||
"mco.configure.world.slot": "World %s",
|
||||
"mco.configure.world.slot.empty": "Empty",
|
||||
"mco.create.world.wait": "Creating the realm...",
|
||||
"mco.create.world.error": "You must enter a name!",
|
||||
"mco.create.world.subtitle": "Optionally, select what world to put on your new realm",
|
||||
"mco.create.world.skip": "Skip",
|
||||
"mco.reset.world.title": "Reset world",
|
||||
"mco.reset.world.warning": "This will replace the current world of your realm",
|
||||
"mco.reset.world.seed": "Seed (Optional)",
|
||||
"mco.reset.world.resetting.screen.title": "Resetting world...",
|
||||
"mco.reset.world.generate": "New world",
|
||||
"mco.reset.world.upload": "Upload world",
|
||||
"mco.reset.world.adventure": "Adventures",
|
||||
"mco.reset.world.template": "World templates",
|
||||
"mco.reset.world.experience": "Experiences",
|
||||
"mco.reset.world.inspiration": "Inspiration",
|
||||
"mco.minigame.world.title": "Switch realm to minigame",
|
||||
"mco.minigame.world.info.line1": "This will temporarily replace your world with a minigame!",
|
||||
"mco.minigame.world.info.line2": "You can later return to your original world without losing anything.",
|
||||
"mco.minigame.world.selected": "Selected minigame:",
|
||||
"mco.minigame.world.noSelection": "Please make a selection",
|
||||
"mco.minigame.world.startButton": "Switch",
|
||||
"mco.minigame.world.starting.screen.title": "Starting minigame...",
|
||||
"mco.minigame.world.changeButton": "Select another minigame",
|
||||
"mco.minigame.world.stopButton": "End minigame",
|
||||
"mco.minigame.world.switch.title": "Switch minigame",
|
||||
"mco.minigame.world.switch.new": "Select another minigame?",
|
||||
"mco.minigame.world.restore.question.line1": "The minigame will end and your realm will be restored.",
|
||||
"mco.minigame.world.restore.question.line2": "Are you sure you want to continue?",
|
||||
"mco.minigame.world.restore": "Ending minigame...",
|
||||
"mco.configure.world.slot.tooltip": "Switch to world",
|
||||
"mco.configure.world.slot.tooltip.minigame": "Switch to minigame",
|
||||
"mco.configure.world.slot.tooltip.active": "Join",
|
||||
"mco.configure.world.close.question.line1": "Your realm will become unavailable.",
|
||||
"mco.configure.world.close.question.line2": "Are you sure you want to continue?",
|
||||
"mco.configure.world.leave.question.line1": "If you leave this realm you won't see it unless you are invited again",
|
||||
"mco.configure.world.leave.question.line2": "Are you sure you want to continue?",
|
||||
"mco.configure.world.resourcepack.question.line1": "You need a custom resource pack to play on this realm",
|
||||
"mco.configure.world.resourcepack.question.line2": "Do you want to download it and play?",
|
||||
"mco.configure.world.reset.question.line1": "Your world will be regenerated and your current world will be lost",
|
||||
"mco.configure.world.reset.question.line2": "Are you sure you want to continue?",
|
||||
"mco.configure.world.restore.question.line1": "Your world will be restored to date '%s' (%s)",
|
||||
"mco.configure.world.restore.question.line2": "Are you sure you want to continue?",
|
||||
"mco.configure.world.restore.download.question.line1": "The world will be downloaded and added to your single player worlds.",
|
||||
"mco.configure.world.restore.download.question.line2": "Do you want to continue?",
|
||||
"mco.configure.world.slot.switch.question.line1": "Your realm will be switched to another world",
|
||||
"mco.configure.world.slot.switch.question.line2": "Are you sure you want to continue?",
|
||||
"mco.configure.world.switch.slot": "Create world",
|
||||
"mco.configure.world.switch.slot.subtitle": "This world is empty, choose how to create your world",
|
||||
"mco.minigame.world.slot.screen.title": "Switching world...",
|
||||
"mco.configure.world.edit.subscreen.adventuremap": "Some settings are disabled since your current world is an adventure",
|
||||
"mco.configure.world.edit.subscreen.experience": "Some settings are disabled since your current world is an experience",
|
||||
"mco.configure.world.edit.subscreen.inspiration": "Some settings are disabled since your current world is an inspiration",
|
||||
"mco.configure.world.edit.slot.name": "World name",
|
||||
"mco.configure.world.players.title": "Players",
|
||||
"mco.configure.world.players.error": "A player with the provided name does not exist",
|
||||
"mco.configure.world.delete.button": "Delete realm",
|
||||
"mco.configure.world.delete.question.line1": "Your realm will be permanently deleted",
|
||||
"mco.configure.world.delete.question.line2": "Are you sure you want to continue?",
|
||||
"mco.connect.connecting": "Connecting to the realm...",
|
||||
"mco.connect.authorizing": "Logging in...",
|
||||
"mco.connect.failed": "Failed to connect to the realm",
|
||||
"mco.connect.success": "Done",
|
||||
"mco.create.world": "Create",
|
||||
"mco.create.world.reset.title": "Creating world...",
|
||||
"mco.client.incompatible.title": "Client incompatible!",
|
||||
"mco.client.incompatible.msg.line1": "Your client is not compatible with Realms.",
|
||||
"mco.client.incompatible.msg.line2": "Please use the most recent version of Minecraft.",
|
||||
"mco.client.incompatible.msg.line3": "Realms is not compatible with snapshot versions.",
|
||||
"mco.backup.button.restore": "Restore",
|
||||
"mco.backup.generate.world": "Generate world",
|
||||
"mco.backup.restoring": "Restoring your realm",
|
||||
"mco.backup.button.download": "Download latest",
|
||||
"mco.backup.changes.tooltip": "Changes",
|
||||
"mco.backup.nobackups": "This realm doesn't have any backups currently.",
|
||||
"mco.backup.button.upload": "Upload world",
|
||||
"mco.backup.button.reset": "Reset world",
|
||||
"mco.download.title": "Downloading latest world",
|
||||
"mco.download.cancelled": "Download cancelled",
|
||||
"mco.download.failed": "Download failed",
|
||||
"mco.download.done": "Download done",
|
||||
"mco.download.downloading": "Downloading",
|
||||
"mco.download.extracting": "Extracting",
|
||||
"mco.download.preparing": "Preparing download",
|
||||
"mco.download.confirmation.line1": "The world you are going to download is larger than %s",
|
||||
"mco.download.confirmation.line2": "You won't be able to upload this world to your realm again",
|
||||
"mco.template.title": "World templates",
|
||||
"mco.template.title.minigame": "Minigames",
|
||||
"mco.template.button.select": "Select",
|
||||
"mco.template.button.trailer": "Trailer",
|
||||
"mco.template.button.publisher": "Publisher",
|
||||
"mco.template.default.name": "World template",
|
||||
"mco.template.name": "Template",
|
||||
"mco.template.info.tooltip": "Publisher website",
|
||||
"mco.template.trailer.tooltip": "Map trailer",
|
||||
"mco.template.select.none": "Oops, it looks like this content category is currently empty.\nPlease check back later for new content, or if you're a creator,\n%s.",
|
||||
"mco.template.select.none.linkTitle": "consider submitting something yourself",
|
||||
"mco.template.select.failure": "We couldn't retrieve the list of content for this category.\nPlease check your internet connection, or try again later.",
|
||||
"mco.template.select.narrate.authors": "Authors: %s",
|
||||
"mco.template.select.narrate.version": "version %s",
|
||||
"mco.invites.button.accept": "Accept",
|
||||
"mco.invites.button.reject": "Reject",
|
||||
"mco.invites.title": "Pending Invites",
|
||||
"mco.invites.pending": "New invites!",
|
||||
"mco.invites.nopending": "No pending invites!",
|
||||
"mco.upload.select.world.title": "Upload world",
|
||||
"mco.upload.select.world.subtitle": "Please select a singleplayer world to upload",
|
||||
"mco.upload.select.world.none": "No singleplayer worlds found!",
|
||||
"mco.upload.button.name": "Upload",
|
||||
"mco.upload.verifying": "Verifying your world",
|
||||
"mco.upload.preparing": "Preparing your world",
|
||||
"mco.upload.close.failure": "Could not close your realm, please try again later",
|
||||
"mco.upload.size.failure.line1": "'%s' is too big!",
|
||||
"mco.upload.size.failure.line2": "It is %s. The maximum allowed size is %s.",
|
||||
"mco.upload.uploading": "Uploading '%s'",
|
||||
"mco.upload.done": "Upload done",
|
||||
"mco.upload.failed": "Upload failed! (%s)",
|
||||
"mco.upload.cancelled": "Upload cancelled",
|
||||
"mco.upload.hardcore": "Hardcore worlds can't be uploaded!",
|
||||
"mco.activity.title": "Player activity",
|
||||
"mco.activity.noactivity": "No activity for the past %s days",
|
||||
"mco.errorMessage.6001": "Client outdated",
|
||||
"mco.errorMessage.6002": "Terms of service not accepted",
|
||||
"mco.errorMessage.6003": "Download limit reached",
|
||||
"mco.errorMessage.6004": "Upload limit reached",
|
||||
"mco.errorMessage.connectionFailure": "An error occurred, please try again later.",
|
||||
"mco.errorMessage.serviceBusy": "Realms is busy at the moment.\nPlease try connecting to your Realm again in a couple of minutes.",
|
||||
"mco.trial.message.line1": "Want to get your own realm?",
|
||||
"mco.trial.message.line2": "Click here for more info!",
|
||||
"mco.brokenworld.play": "Play",
|
||||
"mco.brokenworld.download": "Download",
|
||||
"mco.brokenworld.downloaded": "Downloaded",
|
||||
"mco.brokenworld.reset": "Reset",
|
||||
"mco.brokenworld.title": "Your current world is no longer supported",
|
||||
"mco.brokenworld.message.line1": "Please reset or select another world.",
|
||||
"mco.brokenworld.message.line2": "You can also choose to download the world to singleplayer.",
|
||||
"mco.brokenworld.minigame.title": "This minigame is no longer supported",
|
||||
"mco.brokenworld.nonowner.title": "World is out of date",
|
||||
"mco.brokenworld.nonowner.error": "Please wait for the realm owner to reset the world",
|
||||
"mco.error.invalid.session.title": "Invalid session",
|
||||
"mco.error.invalid.session.message": "Please try restarting Minecraft",
|
||||
"mco.news": "Realms news",
|
||||
"mco.account.privacyinfo": "Mojang implements certain procedures to help protect children and their privacy including complying with the Children�s Online Privacy Protection Act (COPPA) and General Data Protection Regulation (GDPR).\n\nYou may need to obtain parental consent before accessing your Realms account.\n\nIf you have an older Minecraft account (you log in with your username), you need to migrate the account to a Mojang account in order to access Realms.",
|
||||
"mco.account.update": "Update account",
|
||||
"mco.account.privacy.info": "Read more about Mojang and privacy laws"
|
||||
},
|
||||
"1.19.1": {
|
||||
"gui.acknowledge": "Acknowledge",
|
||||
"gui.socialInteractions.report": "Report",
|
||||
|
||||
@@ -3,7 +3,7 @@ metadata.format.version = "1.1"
|
||||
[versions]
|
||||
|
||||
# ViaVersion
|
||||
viaver = "4.4.2"
|
||||
viaver = "4.5.0"
|
||||
|
||||
# Common provided
|
||||
netty = "4.0.20.Final"
|
||||
|
||||
Vendored
BIN
Binary file not shown.
+2
-1
@@ -1,5 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
|
||||
networkTimeout=10000
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
@@ -55,7 +55,7 @@
|
||||
# Darwin, MinGW, and NonStop.
|
||||
#
|
||||
# (3) This script is generated from the Groovy template
|
||||
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# within the Gradle project.
|
||||
#
|
||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||
@@ -80,10 +80,10 @@ do
|
||||
esac
|
||||
done
|
||||
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||
|
||||
APP_NAME="Gradle"
|
||||
# This is normally unused
|
||||
# shellcheck disable=SC2034
|
||||
APP_BASE_NAME=${0##*/}
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
@@ -143,12 +143,16 @@ fi
|
||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||
case $MAX_FD in #(
|
||||
max*)
|
||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC3045
|
||||
MAX_FD=$( ulimit -H -n ) ||
|
||||
warn "Could not query maximum file descriptor limit"
|
||||
esac
|
||||
case $MAX_FD in #(
|
||||
'' | soft) :;; #(
|
||||
*)
|
||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC3045
|
||||
ulimit -n "$MAX_FD" ||
|
||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||
esac
|
||||
@@ -205,6 +209,12 @@ set -- \
|
||||
org.gradle.wrapper.GradleWrapperMain \
|
||||
"$@"
|
||||
|
||||
# Stop when "xargs" is not available.
|
||||
if ! command -v xargs >/dev/null 2>&1
|
||||
then
|
||||
die "xargs is not available"
|
||||
fi
|
||||
|
||||
# Use "xargs" to parse quoted args.
|
||||
#
|
||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||
|
||||
Vendored
+9
-6
@@ -14,7 +14,7 @@
|
||||
@rem limitations under the License.
|
||||
@rem
|
||||
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@if "%DEBUG%"=="" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@@ -25,7 +25,8 @@
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
if "%DIRNAME%"=="" set DIRNAME=.
|
||||
@rem This is normally unused
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto execute
|
||||
if %ERRORLEVEL% equ 0 goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
@@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
set EXIT_CODE=%ERRORLEVEL%
|
||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||
exit /b %EXIT_CODE%
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
Reference in new issue
Block a user