3
0
Mirror von https://github.com/ViaVersion/ViaVersion.git synchronisiert 2024-07-03 22:18:04 +02:00

Reduce mappings file sizes and optimize item mappings

Dieser Commit ist enthalten in:
Nassim Jahnke 2023-03-01 22:56:06 +01:00
Ursprung 7b91c25379
Commit 9fd0d3e565
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 6BE3B555EBC5982B
55 geänderte Dateien mit 216216 neuen und 215910 gelöschten Zeilen

Datei anzeigen

@ -63,7 +63,7 @@ public interface ViaAPI<T> {
* @return API version incremented with meaningful API changes
*/
default int apiVersion() {
return 16;
return 17;
}
/**

Datei anzeigen

@ -0,0 +1,33 @@
/*
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
* Copyright (C) 2023 ViaVersion and contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package com.viaversion.viaversion.api.data;
public interface BiMappings extends Mappings {
/**
* Returns the inverse of the bimappings.
*
* @return inverse of the bimappings
*/
BiMappings inverse();
}

Datei anzeigen

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.data;
import com.google.gson.JsonArray;
import com.viaversion.viaversion.util.Key;
import it.unimi.dsi.fastutil.objects.Object2IntMap;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -57,23 +58,25 @@ public class FullMappingsBase implements FullMappings {
}
@Override
public int id(final String identifier) {
return stringToId.getInt(identifier);
public int id(String identifier) {
return stringToId.getInt(Key.stripMinecraftNamespace(identifier));
}
@Override
public int mappedId(final String mappedIdentifier) {
return mappedStringToId.getInt(mappedIdentifier);
return mappedStringToId.getInt(Key.stripMinecraftNamespace(mappedIdentifier));
}
@Override
public String identifier(final int id) {
return idToString[id];
final String identifier = idToString[id];
return Key.namespaced(identifier);
}
@Override
public String mappedIdentifier(final int mappedId) {
return mappedIdToString[mappedId];
final String identifier = mappedIdToString[mappedId];
return Key.namespaced(identifier);
}
@Override

Datei anzeigen

@ -0,0 +1,71 @@
/*
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
* Copyright (C) 2016-2023 ViaVersion and contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package com.viaversion.viaversion.api.data;
import com.viaversion.viaversion.util.Int2IntBiMap;
public class Int2IntMapBiMappings implements BiMappings {
private final Int2IntBiMap mappings;
private final BiMappings inverse;
protected Int2IntMapBiMappings(final Int2IntBiMap mappings) {
this.mappings = mappings;
this.inverse = new Int2IntMapBiMappings(mappings.inverse(), this);
mappings.defaultReturnValue(-1);
}
private Int2IntMapBiMappings(final Int2IntBiMap mappings, final BiMappings inverse) {
this.mappings = mappings;
this.inverse = inverse;
}
public static Int2IntMapBiMappings of(final Int2IntBiMap mappings) {
return new Int2IntMapBiMappings(mappings);
}
@Override
public BiMappings inverse() {
return this.inverse;
}
@Override
public int getNewId(final int id) {
return mappings.get(id);
}
@Override
public void setNewId(final int id, final int newId) {
mappings.put(id, newId);
}
@Override
public int size() {
return mappings.size();
}
@Override
public int mappedSize() {
return mappings.inverse().size();
}
}

Datei anzeigen

@ -40,7 +40,6 @@ public class Int2IntMapMappings implements Mappings {
}
public static Int2IntMapMappings of() {
return new Int2IntMapMappings(new Int2IntOpenHashMap(), -1);
}

Datei anzeigen

@ -0,0 +1,101 @@
/*
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
* Copyright (C) 2016-2023 ViaVersion and contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package com.viaversion.viaversion.api.data;
import java.util.Arrays;
public class IntArrayBiMappings implements BiMappings {
private final Mappings mappings;
private final IntArrayBiMappings inverse;
protected IntArrayBiMappings(final Mappings mappings, final Mappings inverseMappings) {
this.mappings = mappings;
this.inverse = new IntArrayBiMappings(inverseMappings, this);
}
private IntArrayBiMappings(final Mappings mappings, final IntArrayBiMappings inverse) {
this.mappings = mappings;
this.inverse = inverse;
}
public static Mappings.Builder<IntArrayBiMappings> builder() {
return new Builder(IntArrayMappings::new);
}
@Override
public BiMappings inverse() {
return this.inverse;
}
@Override
public int getNewId(final int id) {
return mappings.getNewId(id);
}
@Override
public void setNewId(final int id, final int newId) {
mappings.setNewId(id, newId);
inverse.mappings.setNewId(newId, id);
}
@Override
public int size() {
return mappings.size();
}
@Override
public int mappedSize() {
return mappings.mappedSize();
}
public static final class Builder extends Mappings.Builder<IntArrayBiMappings> {
private final MappingsSupplier<?> supplier;
private Builder(final MappingsSupplier<?> supplier) {
super(null);
this.supplier = supplier;
}
@Override
public IntArrayBiMappings build() {
final int size = this.size != -1 ? this.size : size(unmapped);
final int mappedSize = this.mappedSize != -1 ? this.mappedSize : size(mapped);
final int[] mappingsArray = new int[size];
final int[] inverseMappingsArray = new int[mappedSize];
Arrays.fill(mappingsArray, -1);
Arrays.fill(inverseMappingsArray, -1);
final Mappings mappings = supplier.supply(mappingsArray, mappedSize);
final Mappings inverseMappings = supplier.supply(inverseMappingsArray, size);
if (unmapped.isJsonArray() && mapped.isJsonArray()) {
MappingDataLoader.mapIdentifiers(mappings, inverseMappings, unmapped.getAsJsonArray(), mapped.getAsJsonArray(), diffMappings, true);
} else {
throw new UnsupportedOperationException();
}
return new IntArrayBiMappings(mappings, inverseMappings);
}
}
}

Datei anzeigen

@ -24,7 +24,6 @@ package com.viaversion.viaversion.api.data;
import com.viaversion.viaversion.api.minecraft.RegistryType;
import com.viaversion.viaversion.api.minecraft.TagData;
import com.viaversion.viaversion.util.Int2IntBiMap;
import java.util.List;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -88,7 +87,7 @@ public interface MappingData {
*/
@Nullable List<TagData> getTags(RegistryType type);
@Nullable Int2IntBiMap getItemMappings();
@Nullable BiMappings getItemMappings();
@Nullable ParticleMappings getParticleMappings();

Datei anzeigen

@ -28,8 +28,7 @@ import com.google.gson.JsonObject;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.minecraft.RegistryType;
import com.viaversion.viaversion.api.minecraft.TagData;
import com.viaversion.viaversion.util.Int2IntBiHashMap;
import com.viaversion.viaversion.util.Int2IntBiMap;
import com.viaversion.viaversion.util.Key;
import it.unimi.dsi.fastutil.objects.Object2IntMap;
import java.util.ArrayList;
import java.util.EnumMap;
@ -42,7 +41,7 @@ public class MappingDataBase implements MappingData {
protected final String oldVersion;
protected final String newVersion;
protected final boolean hasDiffFile;
protected Int2IntBiMap itemMappings;
protected BiMappings itemMappings;
protected FullMappings argumentTypeMappings;
protected FullMappings entityMappings;
protected ParticleMappings particleMappings;
@ -54,15 +53,14 @@ public class MappingDataBase implements MappingData {
protected Mappings enchantmentMappings;
protected Mappings paintingMappings;
protected Map<RegistryType, List<TagData>> tags;
protected boolean loadItems = true;
public MappingDataBase(String oldVersion, String newVersion) {
this(oldVersion, newVersion, false);
public MappingDataBase(String unmappedVersion, String mappedVersion) {
this(unmappedVersion, mappedVersion, false);
}
public MappingDataBase(String oldVersion, String newVersion, boolean hasDiffFile) {
this.oldVersion = oldVersion;
this.newVersion = newVersion;
public MappingDataBase(String unmappedVersion, String mappedVersion, boolean hasDiffFile) {
this.oldVersion = unmappedVersion;
this.newVersion = mappedVersion;
this.hasDiffFile = hasDiffFile;
}
@ -72,49 +70,44 @@ public class MappingDataBase implements MappingData {
getLogger().info("Loading " + oldVersion + " -> " + newVersion + " mappings...");
}
JsonObject diffmapping = hasDiffFile ? loadDiffFile() : null;
JsonObject oldMappings = MappingDataLoader.loadData("mapping-" + oldVersion + ".json", true);
JsonObject newMappings = MappingDataLoader.loadData("mapping-" + newVersion + ".json", true);
JsonObject unmappedIdentifiers = MappingDataLoader.loadData("mapping-" + oldVersion + ".json", true);
JsonObject mappedIdentifiers = MappingDataLoader.loadData("mapping-" + newVersion + ".json", true);
blockMappings = loadFromObject(oldMappings, newMappings, diffmapping, "blocks");
blockStateMappings = loadFromObject(oldMappings, newMappings, diffmapping, "blockstates");
blockEntityMappings = loadFromArray(oldMappings, newMappings, diffmapping, "blockentities");
soundMappings = loadFromArray(oldMappings, newMappings, diffmapping, "sounds");
statisticsMappings = loadFromArray(oldMappings, newMappings, diffmapping, "statistics");
enchantmentMappings = loadFromArray(oldMappings, newMappings, diffmapping, "enchantments");
paintingMappings = loadFromArray(oldMappings, newMappings, diffmapping, "paintings");
blockMappings = loadFromArray(unmappedIdentifiers, mappedIdentifiers, diffmapping, "blocks");
blockStateMappings = loadFromArray(unmappedIdentifiers, mappedIdentifiers, diffmapping, "blockstates");
blockEntityMappings = loadFromArray(unmappedIdentifiers, mappedIdentifiers, diffmapping, "blockentities");
soundMappings = loadFromArray(unmappedIdentifiers, mappedIdentifiers, diffmapping, "sounds");
statisticsMappings = loadFromArray(unmappedIdentifiers, mappedIdentifiers, diffmapping, "statistics");
enchantmentMappings = loadFromArray(unmappedIdentifiers, mappedIdentifiers, diffmapping, "enchantments");
paintingMappings = loadFromArray(unmappedIdentifiers, mappedIdentifiers, diffmapping, "paintings");
entityMappings = loadFullMappings(oldMappings, newMappings, diffmapping, "entities");
argumentTypeMappings = loadFullMappings(oldMappings, newMappings, diffmapping, "argumenttypes");
entityMappings = loadFullMappings(unmappedIdentifiers, mappedIdentifiers, diffmapping, "entities");
argumentTypeMappings = loadFullMappings(unmappedIdentifiers, mappedIdentifiers, diffmapping, "argumenttypes");
Mappings particles = loadFromArray(oldMappings, newMappings, diffmapping, "particles");
Mappings particles = loadFromArray(unmappedIdentifiers, mappedIdentifiers, diffmapping, "particles");
if (particles != null) {
particleMappings = new ParticleMappings(oldMappings.getAsJsonArray("particles"), newMappings.getAsJsonArray("particles"), particles);
particleMappings = new ParticleMappings(unmappedIdentifiers.getAsJsonArray("particles"), mappedIdentifiers.getAsJsonArray("particles"), particles);
}
if (loadItems && newMappings.has("items")) {
itemMappings = new Int2IntBiHashMap();
itemMappings.defaultReturnValue(-1);
MappingDataLoader.mapIdentifiers(itemMappings, oldMappings.getAsJsonObject("items"), newMappings.getAsJsonObject("items"),
diffmapping != null ? diffmapping.getAsJsonObject("items") : null, true);
}
itemMappings = loadBiFromArray(unmappedIdentifiers, mappedIdentifiers, diffmapping, "items");
if (diffmapping != null && diffmapping.has("tags")) {
this.tags = new EnumMap<>(RegistryType.class);
JsonObject tags = diffmapping.getAsJsonObject("tags");
if (tags.has(RegistryType.ITEM.resourceLocation())) {
loadTags(RegistryType.ITEM, tags, MappingDataLoader.indexedObjectToMap(newMappings.getAsJsonObject("items")));
loadTags(RegistryType.ITEM, tags, MappingDataLoader.arrayToMap(mappedIdentifiers.getAsJsonArray("items")));
}
if (tags.has(RegistryType.BLOCK.resourceLocation())) {
loadTags(RegistryType.BLOCK, tags, MappingDataLoader.indexedObjectToMap(newMappings.getAsJsonObject("blocks")));
loadTags(RegistryType.BLOCK, tags, MappingDataLoader.arrayToMap(mappedIdentifiers.getAsJsonArray("blocks")));
}
}
loadExtras(oldMappings, newMappings, diffmapping);
loadExtras(unmappedIdentifiers, mappedIdentifiers, diffmapping);
}
protected FullMappings loadFullMappings(JsonObject oldMappings, JsonObject newMappings, @Nullable JsonObject diffMappings, String key) {
Mappings mappings = loadFromArray(oldMappings, newMappings, diffMappings, key);
return mappings != null ? new FullMappingsBase(oldMappings.getAsJsonArray(key), newMappings.getAsJsonArray(key), mappings) : null;
protected FullMappings loadFullMappings(JsonObject unmappedIdentifiers, JsonObject mappedIdentifiers, @Nullable JsonObject diffMappings, String key) {
Mappings mappings = loadFromArray(unmappedIdentifiers, mappedIdentifiers, diffMappings, key);
return mappings != null ? new FullMappingsBase(unmappedIdentifiers.getAsJsonArray(key), mappedIdentifiers.getAsJsonArray(key), mappings) : null;
}
private void loadTags(RegistryType type, JsonObject object, Object2IntMap<String> typeMapping) {
@ -126,7 +119,7 @@ public class MappingDataBase implements MappingData {
int i = 0;
for (JsonElement element : array) {
String stringId = element.getAsString();
if (!typeMapping.containsKey(stringId) && !typeMapping.containsKey(stringId = stringId.replace("minecraft:", ""))) { // aaa
if (!typeMapping.containsKey(stringId) && !typeMapping.containsKey(stringId = Key.stripMinecraftNamespace(stringId))) { // aaa
getLogger().warning(type + " Tags contains invalid type identifier " + stringId + " in tag " + entry.getKey());
continue;
}
@ -151,14 +144,12 @@ public class MappingDataBase implements MappingData {
@Override
public int getNewItemId(int id) {
return checkValidity(id, itemMappings.get(id), "item");
return checkValidity(id, itemMappings.getNewId(id), "item");
}
@Override
public int getOldItemId(int id) {
int oldId = itemMappings.inverse().get(id);
// Remap new items to stone
return oldId != -1 ? oldId : 1;
return itemMappings.inverse().getNewIdOrDefault(id, 1);
}
@Override
@ -172,7 +163,7 @@ public class MappingDataBase implements MappingData {
}
@Override
public @Nullable Int2IntBiMap getItemMappings() {
public @Nullable BiMappings getItemMappings() {
return itemMappings;
}
@ -226,20 +217,34 @@ public class MappingDataBase implements MappingData {
return paintingMappings;
}
protected @Nullable Mappings loadFromArray(JsonObject oldMappings, JsonObject newMappings, @Nullable JsonObject diffMappings, String key) {
if (!oldMappings.has(key) || !newMappings.has(key)) return null;
protected @Nullable Mappings loadFromArray(JsonObject unmappedIdentifiers, JsonObject mappedIdentifiers, @Nullable JsonObject diffMappings, String key) {
if (!unmappedIdentifiers.has(key) || !mappedIdentifiers.has(key) || !shouldLoad(key)) {
return null;
}
JsonObject diff = diffMappings != null ? diffMappings.getAsJsonObject(key) : null;
return IntArrayMappings.builder().unmapped(oldMappings.getAsJsonArray(key))
.mapped(newMappings.getAsJsonArray(key)).diffMappings(diff).build();
return IntArrayMappings.builder().unmapped(unmappedIdentifiers.getAsJsonArray(key))
.mapped(mappedIdentifiers.getAsJsonArray(key)).diffMappings(diff).build();
}
protected @Nullable Mappings loadFromObject(JsonObject oldMappings, JsonObject newMappings, @Nullable JsonObject diffMappings, String key) {
if (!oldMappings.has(key) || !newMappings.has(key)) return null;
protected @Nullable Mappings loadFromObject(JsonObject unmappedIdentifiers, JsonObject mappedIdentifiers, @Nullable JsonObject diffMappings, String key) {
if (!unmappedIdentifiers.has(key) || !mappedIdentifiers.has(key) || !shouldLoad(key)) {
return null;
}
JsonObject diff = diffMappings != null ? diffMappings.getAsJsonObject(key) : null;
return IntArrayMappings.builder().unmapped(oldMappings.getAsJsonObject(key))
.mapped(newMappings.getAsJsonObject(key)).diffMappings(diff).build();
return IntArrayMappings.builder().unmapped(unmappedIdentifiers.getAsJsonObject(key))
.mapped(mappedIdentifiers.getAsJsonObject(key)).diffMappings(diff).build();
}
protected @Nullable BiMappings loadBiFromArray(JsonObject unmappedIdentifiers, JsonObject mappedIdentifiers, @Nullable JsonObject diffMappings, String key) {
if (!unmappedIdentifiers.has(key) || !mappedIdentifiers.has(key) || !shouldLoad(key)) {
return null;
}
JsonObject diff = diffMappings != null ? diffMappings.getAsJsonObject(key) : null;
return IntArrayBiMappings.builder().unmapped(unmappedIdentifiers.getAsJsonArray(key)).mapped(mappedIdentifiers.getAsJsonArray(key))
.diffMappings(diff).build();
}
protected @Nullable JsonObject loadDiffFile() {
@ -267,12 +272,16 @@ public class MappingDataBase implements MappingData {
}
/**
* To be overridden.
* To be overridden if needed.
*
* @param oldMappings old mappings
* @param newMappings new mappings
* @param diffMappings diff mappings if present
* @param unmappedIdentifiers old mappings
* @param mappedIdentifiers new mappings
* @param diffMappings diff mappings if present
*/
protected void loadExtras(JsonObject oldMappings, JsonObject newMappings, @Nullable JsonObject diffMappings) {
protected void loadExtras(JsonObject unmappedIdentifiers, JsonObject mappedIdentifiers, @Nullable JsonObject diffMappings) {
}
protected boolean shouldLoad(String key) {
return true;
}
}

Datei anzeigen

@ -136,84 +136,88 @@ public final class MappingDataLoader {
}
}
public static void mapIdentifiers(Int2IntBiMap output, JsonObject oldIdentifiers, JsonObject newIdentifiers, @Nullable JsonObject diffIdentifiers, boolean warnOnMissing) {
Object2IntMap<String> newIdentifierMap = MappingDataLoader.indexedObjectToMap(newIdentifiers);
for (Map.Entry<String, JsonElement> entry : oldIdentifiers.entrySet()) {
int value = mapIdentifierEntry(entry, newIdentifierMap, diffIdentifiers, warnOnMissing);
if (value != -1) {
output.put(Integer.parseInt(entry.getKey()), value);
public static void mapIdentifiers(Int2IntBiMap output, JsonObject unmappedIdentifiers, JsonObject mappedIdentifiers, @Nullable JsonObject diffIdentifiers, boolean warnOnMissing) {
Object2IntMap<String> newIdentifierMap = MappingDataLoader.indexedObjectToMap(mappedIdentifiers);
for (Map.Entry<String, JsonElement> entry : unmappedIdentifiers.entrySet()) {
int id = Integer.parseInt(entry.getKey());
int mappedId = mapIdentifierEntry(id, entry.getValue().getAsString(), newIdentifierMap, diffIdentifiers, warnOnMissing);
if (mappedId != -1) {
output.put(id, mappedId);
}
}
}
public static void mapIdentifiers(Mappings mappings, Mappings inverseMappings, JsonArray unmappedIdentifiers, JsonArray mappedIdentifiers, @Nullable JsonObject diffIdentifiers, boolean warnOnMissing) {
Object2IntMap<String> newIdentifierMap = MappingDataLoader.arrayToMap(mappedIdentifiers);
for (int id = 0; id < unmappedIdentifiers.size(); id++) {
String value = unmappedIdentifiers.get(id).getAsString();
int mappedId = mapIdentifierEntry(id, value, newIdentifierMap, diffIdentifiers, warnOnMissing);
if (mappedId != -1) {
mappings.setNewId(id, mappedId);
inverseMappings.setNewId(mappedId, id);
}
}
}
@Deprecated/*(forRemoval = true)*/
public static void mapIdentifiers(int[] output, JsonObject oldIdentifiers, JsonObject newIdentifiers) {
mapIdentifiers(output, oldIdentifiers, newIdentifiers, null);
public static void mapIdentifiers(int[] output, JsonObject unmappedIdentifiers, JsonObject mappedIdentifiers) {
mapIdentifiers(output, unmappedIdentifiers, mappedIdentifiers, null);
}
public static void mapIdentifiers(int[] output, JsonObject oldIdentifiers, JsonObject newIdentifiers, @Nullable JsonObject diffIdentifiers, boolean warnOnMissing) {
Object2IntMap<String> newIdentifierMap = MappingDataLoader.indexedObjectToMap(newIdentifiers);
for (Map.Entry<String, JsonElement> entry : oldIdentifiers.entrySet()) {
int value = mapIdentifierEntry(entry, newIdentifierMap, diffIdentifiers, warnOnMissing);
if (value != -1) {
output[Integer.parseInt(entry.getKey())] = value;
public static void mapIdentifiers(int[] output, JsonObject unmappedIdentifiers, JsonObject mappedIdentifiers, @Nullable JsonObject diffIdentifiers, boolean warnOnMissing) {
Object2IntMap<String> newIdentifierMap = MappingDataLoader.indexedObjectToMap(mappedIdentifiers);
for (Map.Entry<String, JsonElement> entry : unmappedIdentifiers.entrySet()) {
int id = Integer.parseInt(entry.getKey());
int mappedId = mapIdentifierEntry(id, entry.getValue().getAsString(), newIdentifierMap, diffIdentifiers, warnOnMissing);
if (mappedId != -1) {
output[id] = mappedId;
}
}
}
public static void mapIdentifiers(int[] output, JsonObject oldIdentifiers, JsonObject newIdentifiers, @Nullable JsonObject diffIdentifiers) {
mapIdentifiers(output, oldIdentifiers, newIdentifiers, diffIdentifiers, true);
public static void mapIdentifiers(int[] output, JsonObject unmappedIdentifiers, JsonObject mappedIdentifiers, @Nullable JsonObject diffIdentifiers) {
mapIdentifiers(output, unmappedIdentifiers, mappedIdentifiers, diffIdentifiers, true);
}
private static int mapIdentifierEntry(Map.Entry<String, JsonElement> entry, Object2IntMap<String> newIdentifierMap, @Nullable JsonObject diffIdentifiers, boolean warnOnMissing) {
int value = newIdentifierMap.getInt(entry.getValue().getAsString());
if (value == -1) {
private static int mapIdentifierEntry(int id, String val, Object2IntMap<String> mappedIdentifiers, @Nullable JsonObject diffIdentifiers, boolean warnOnMissing) {
int mappedId = mappedIdentifiers.getInt(val);
if (mappedId == -1) {
// Search in diff mappings
if (diffIdentifiers != null) {
JsonElement diffElement = diffIdentifiers.get(entry.getKey());
if (diffElement != null) {
value = newIdentifierMap.getInt(diffElement.getAsString());
JsonElement diffElement = diffIdentifiers.get(val);
if (diffElement != null || (diffElement = diffIdentifiers.get(Integer.toString(id))) != null) {
String mappedName = diffElement.getAsString();
if (mappedName.isEmpty()) {
return -1; // "empty" remaps without warnings
}
mappedId = mappedIdentifiers.getInt(mappedName);
}
}
if (value == -1) {
if (mappedId == -1) {
if (warnOnMissing && !Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) {
Via.getPlatform().getLogger().warning("No key for " + entry.getValue() + " :( ");
Via.getPlatform().getLogger().warning("No key for " + val + " :( ");
}
return -1;
}
}
return value;
return mappedId;
}
@Deprecated/*(forRemoval = true)*/
public static void mapIdentifiers(int[] output, JsonArray oldIdentifiers, JsonArray newIdentifiers, boolean warnOnMissing) {
mapIdentifiers(output, oldIdentifiers, newIdentifiers, null, warnOnMissing);
public static void mapIdentifiers(int[] output, JsonArray unmappedIdentifiers, JsonArray mappedIdentifiers, boolean warnOnMissing) {
mapIdentifiers(output, unmappedIdentifiers, mappedIdentifiers, null, warnOnMissing);
}
public static void mapIdentifiers(int[] output, JsonArray oldIdentifiers, JsonArray newIdentifiers, @Nullable JsonObject diffIdentifiers, boolean warnOnMissing) {
Object2IntMap<String> newIdentifierMap = MappingDataLoader.arrayToMap(newIdentifiers);
for (int i = 0; i < oldIdentifiers.size(); i++) {
JsonElement oldIdentifier = oldIdentifiers.get(i);
int mappedId = newIdentifierMap.getInt(oldIdentifier.getAsString());
if (mappedId == -1) {
// Search in diff mappings
if (diffIdentifiers != null) {
JsonElement diffElement = diffIdentifiers.get(oldIdentifier.getAsString());
if (diffElement != null) {
String mappedName = diffElement.getAsString();
if (mappedName.isEmpty()) continue; // "empty" remaps
mappedId = newIdentifierMap.getInt(mappedName);
}
}
if (mappedId == -1) {
if (warnOnMissing && !Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) {
Via.getPlatform().getLogger().warning("No key for " + oldIdentifier + " :( ");
}
continue;
}
public static void mapIdentifiers(int[] output, JsonArray unmappedIdentifiers, JsonArray mappedIdentifiers, @Nullable JsonObject diffIdentifiers, boolean warnOnMissing) {
Object2IntMap<String> newIdentifierMap = MappingDataLoader.arrayToMap(mappedIdentifiers);
for (int id = 0; id < unmappedIdentifiers.size(); id++) {
JsonElement unmappedIdentifier = unmappedIdentifiers.get(id);
int mappedId = mapIdentifierEntry(id, unmappedIdentifier.getAsString(), newIdentifierMap, diffIdentifiers, warnOnMissing);
if (mappedId != -1) {
output[id] = mappedId;
}
output[i] = mappedId;
}
}

Datei anzeigen

@ -42,7 +42,7 @@ public interface Mappings {
*
* @param id unmapped id
* @param def fallback return value
* @return mapped id, or -1 if invalid/out of bounds
* @return mapped id, or def if invalid/out of bounds
*/
default int getNewIdOrDefault(int id, int def) {
final int mappedId = getNewId(id);

Datei anzeigen

@ -28,6 +28,7 @@ import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.protocol.Protocol;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.types.Particle;
import com.viaversion.viaversion.util.Key;
import io.netty.buffer.ByteBuf;
import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
@ -104,10 +105,7 @@ public class ParticleType extends Type<Particle> {
String resourceLocation = Type.STRING.read(buf);
particle.add(Type.STRING, resourceLocation);
if (resourceLocation.startsWith("minecraft:")) {
resourceLocation = resourceLocation.substring(10);
}
resourceLocation = Key.stripMinecraftNamespace(resourceLocation);
if (resourceLocation.equals("block")) {
particle.add(Type.POSITION1_14, Type.POSITION1_14.read(buf)); // Target block pos
} else if (resourceLocation.equals("entity")) {

Datei anzeigen

@ -0,0 +1,48 @@
/*
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
* Copyright (C) 2023 ViaVersion and contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package com.viaversion.viaversion.util;
public final class Key {
public static String stripNamespace(final String identifier) {
int index = identifier.indexOf(':');
if (index == -1) {
return identifier;
}
return identifier.substring(index + 1);
}
public static String stripMinecraftNamespace(final String identifier) {
if (identifier.startsWith("minecraft:")) {
return identifier.substring(10);
}
return identifier;
}
public static String namespaced(final String identifier) {
if (identifier.indexOf(':') == -1) {
return "minecraft:" + identifier;
}
return identifier;
}
}

Datei anzeigen

@ -302,8 +302,8 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol<ClientboundPackets1_1
wrapper.cancel();
if (item == 383) { // Spawn egg
for (int i = 0; i < 44; i++) {
Integer newItem = getMappingData().getItemMappings().get(item << 16 | i);
if (newItem != null) {
int newItem = MAPPINGS.getItemMappings().getNewId(item << 16 | i);
if (newItem != -1) {
PacketWrapper packet = wrapper.create(ClientboundPackets1_13.COOLDOWN);
packet.write(Type.VAR_INT, newItem);
packet.write(Type.VAR_INT, ticks);
@ -314,7 +314,7 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol<ClientboundPackets1_1
}
} else {
for (int i = 0; i < 16; i++) {
int newItem = getMappingData().getItemMappings().get(item << 4 | i);
int newItem = MAPPINGS.getItemMappings().getNewId(item << 4 | i);
if (newItem != -1) {
PacketWrapper packet = wrapper.create(ClientboundPackets1_13.COOLDOWN);
packet.write(Type.VAR_INT, newItem);
@ -339,7 +339,7 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol<ClientboundPackets1_1
int id = wrapper.get(Type.INT, 0);
int data = wrapper.get(Type.INT, 1);
if (id == 1010) { // Play record
wrapper.set(Type.INT, 1, getMappingData().getItemMappings().get(data << 4));
wrapper.set(Type.INT, 1, getMappingData().getItemMappings().getNewId(data << 4));
} else if (id == 2001) { // Block break + block break sound
int blockId = data & 0xFFF;
int blockData = data >> 12;

Datei anzeigen

@ -36,6 +36,7 @@ import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPacke
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.Protocol1_13To1_12_2;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnections.providers.BlockConnectionProvider;
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnections.providers.PacketBlockConnectionProvider;
import com.viaversion.viaversion.util.Key;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
@ -47,7 +48,7 @@ import java.util.List;
import java.util.Locale;
import java.util.Map.Entry;
public class ConnectionData {
public final class ConnectionData {
private static final BlockChangeRecord1_8[] EMPTY_RECORDS = new BlockChangeRecord1_8[0];
public static BlockConnectionProvider blockConnectionProvider;
static Int2ObjectMap<String> idToKey = new Int2ObjectOpenHashMap<>(8582, .99F);
@ -199,14 +200,15 @@ public class ConnectionData {
}
public static void init() {
if (!Via.getConfig().isServersideBlockConnections()) return;
if (!Via.getConfig().isServersideBlockConnections()) {
return;
}
Via.getPlatform().getLogger().info("Loading block connection mappings ...");
JsonObject mapping1_13 = MappingDataLoader.loadData("mapping-1.13.json", true);
JsonObject blocks1_13 = mapping1_13.getAsJsonObject("blockstates");
for (Entry<String, JsonElement> blockState : blocks1_13.entrySet()) {
int id = Integer.parseInt(blockState.getKey());
String key = blockState.getValue().getAsString();
JsonArray blocks1_13 = mapping1_13.getAsJsonArray("blockstates");
for (int id = 0; id < blocks1_13.size(); id++) {
String key = blocks1_13.get(id).getAsString();
idToKey.put(id, key);
keyToId.put(key, id);
}
@ -238,10 +240,8 @@ public class ConnectionData {
}
}
JsonObject blockData = MappingDataLoader.loadData("blockData.json");
JsonArray occluding = blockData.getAsJsonArray("occluding");
for (JsonElement jsonElement : occluding) {
occludingStates.add(keyToId.getInt(jsonElement.getAsString()));
for (String state : occludingBlockStates()) {
occludingStates.add(keyToId.getInt(state));
}
List<ConnectorInitAction> initActions = new ArrayList<>();
@ -295,16 +295,402 @@ public class ConnectionData {
}
public static int getId(String key) {
return keyToId.getOrDefault(key, -1);
return keyToId.getOrDefault(Key.stripMinecraftNamespace(key), -1);
}
public static String getKey(int id) {
return idToKey.get(id);
}
private static String[] occludingBlockStates() {
return new String[]{
"stone",
"granite",
"polished_granite",
"diorite",
"polished_diorite",
"andesite",
"polished_andesite",
"grass_block[snowy=false]",
"dirt",
"coarse_dirt",
"podzol[snowy=false]",
"cobblestone",
"oak_planks",
"spruce_planks",
"birch_planks",
"jungle_planks",
"acacia_planks",
"dark_oak_planks",
"bedrock",
"sand",
"red_sand",
"gravel",
"gold_ore",
"iron_ore",
"coal_ore",
"oak_log[axis=x]",
"oak_log[axis=y]",
"oak_log[axis=z]",
"spruce_log[axis=x]",
"spruce_log[axis=y]",
"spruce_log[axis=z]",
"birch_log[axis=x]",
"birch_log[axis=y]",
"birch_log[axis=z]",
"jungle_log[axis=x]",
"jungle_log[axis=y]",
"jungle_log[axis=z]",
"acacia_log[axis=x]",
"acacia_log[axis=y]",
"acacia_log[axis=z]",
"dark_oak_log[axis=x]",
"dark_oak_log[axis=y]",
"dark_oak_log[axis=z]",
"oak_wood[axis=y]",
"spruce_wood[axis=y]",
"birch_wood[axis=y]",
"jungle_wood[axis=y]",
"acacia_wood[axis=y]",
"dark_oak_wood[axis=y]",
"sponge",
"wet_sponge",
"lapis_ore",
"lapis_block",
"dispenser[facing=north,triggered=true]",
"dispenser[facing=north,triggered=false]",
"dispenser[facing=east,triggered=true]",
"dispenser[facing=east,triggered=false]",
"dispenser[facing=south,triggered=true]",
"dispenser[facing=south,triggered=false]",
"dispenser[facing=west,triggered=true]",
"dispenser[facing=west,triggered=false]",
"dispenser[facing=up,triggered=true]",
"dispenser[facing=up,triggered=false]",
"dispenser[facing=down,triggered=true]",
"dispenser[facing=down,triggered=false]",
"sandstone",
"chiseled_sandstone",
"cut_sandstone",
"note_block[instrument=harp,note=0,powered=false]",
"white_wool",
"orange_wool",
"magenta_wool",
"light_blue_wool",
"yellow_wool",
"lime_wool",
"pink_wool",
"gray_wool",
"light_gray_wool",
"cyan_wool",
"purple_wool",
"blue_wool",
"brown_wool",
"green_wool",
"red_wool",
"black_wool",
"gold_block",
"iron_block",
"bricks",
"bookshelf",
"mossy_cobblestone",
"obsidian",
"spawner",
"diamond_ore",
"diamond_block",
"crafting_table",
"furnace[facing=north,lit=true]",
"furnace[facing=north,lit=false]",
"furnace[facing=south,lit=true]",
"furnace[facing=south,lit=false]",
"furnace[facing=west,lit=true]",
"furnace[facing=west,lit=false]",
"furnace[facing=east,lit=true]",
"furnace[facing=east,lit=false]",
"redstone_ore[lit=true]",
"redstone_ore[lit=false]",
"snow_block",
"clay",
"jukebox[has_record=true]",
"jukebox[has_record=false]",
"netherrack",
"soul_sand",
"carved_pumpkin[facing=north]",
"carved_pumpkin[facing=south]",
"carved_pumpkin[facing=west]",
"carved_pumpkin[facing=east]",
"jack_o_lantern[facing=north]",
"jack_o_lantern[facing=south]",
"jack_o_lantern[facing=west]",
"jack_o_lantern[facing=east]",
"infested_stone",
"infested_cobblestone",
"infested_stone_bricks",
"infested_mossy_stone_bricks",
"infested_cracked_stone_bricks",
"infested_chiseled_stone_bricks",
"stone_bricks",
"mossy_stone_bricks",
"cracked_stone_bricks",
"chiseled_stone_bricks",
"brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]",
"brown_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]",
"brown_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]",
"brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]",
"brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]",
"brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]",
"brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]",
"brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]",
"brown_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]",
"brown_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=false]",
"brown_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]",
"red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]",
"red_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]",
"red_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]",
"red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]",
"red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]",
"red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]",
"red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]",
"red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]",
"red_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]",
"red_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=false]",
"red_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]",
"mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]",
"mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]",
"melon",
"mycelium[snowy=false]",
"nether_bricks",
"end_stone",
"redstone_lamp[lit=true]",
"redstone_lamp[lit=false]",
"emerald_ore",
"emerald_block",
"command_block[conditional=true,facing=north]",
"command_block[conditional=true,facing=east]",
"command_block[conditional=true,facing=south]",
"command_block[conditional=true,facing=west]",
"command_block[conditional=true,facing=up]",
"command_block[conditional=true,facing=down]",
"command_block[conditional=false,facing=north]",
"command_block[conditional=false,facing=east]",
"command_block[conditional=false,facing=south]",
"command_block[conditional=false,facing=west]",
"command_block[conditional=false,facing=up]",
"command_block[conditional=false,facing=down]",
"nether_quartz_ore",
"quartz_block",
"chiseled_quartz_block",
"quartz_pillar[axis=x]",
"quartz_pillar[axis=y]",
"quartz_pillar[axis=z]",
"dropper[facing=north,triggered=true]",
"dropper[facing=north,triggered=false]",
"dropper[facing=east,triggered=true]",
"dropper[facing=east,triggered=false]",
"dropper[facing=south,triggered=true]",
"dropper[facing=south,triggered=false]",
"dropper[facing=west,triggered=true]",
"dropper[facing=west,triggered=false]",
"dropper[facing=up,triggered=true]",
"dropper[facing=up,triggered=false]",
"dropper[facing=down,triggered=true]",
"dropper[facing=down,triggered=false]",
"white_terracotta",
"orange_terracotta",
"magenta_terracotta",
"light_blue_terracotta",
"yellow_terracotta",
"lime_terracotta",
"pink_terracotta",
"gray_terracotta",
"light_gray_terracotta",
"cyan_terracotta",
"purple_terracotta",
"blue_terracotta",
"brown_terracotta",
"green_terracotta",
"red_terracotta",
"black_terracotta",
"slime_block",
"barrier",
"prismarine",
"prismarine_bricks",
"dark_prismarine",
"hay_block[axis=x]",
"hay_block[axis=y]",
"hay_block[axis=z]",
"terracotta",
"coal_block",
"packed_ice",
"red_sandstone",
"chiseled_red_sandstone",
"cut_red_sandstone",
"oak_slab[type=double,waterlogged=false]",
"spruce_slab[type=double,waterlogged=false]",
"birch_slab[type=double,waterlogged=false]",
"jungle_slab[type=double,waterlogged=false]",
"acacia_slab[type=double,waterlogged=false]",
"dark_oak_slab[type=double,waterlogged=false]",
"stone_slab[type=double,waterlogged=false]",
"sandstone_slab[type=double,waterlogged=false]",
"petrified_oak_slab[type=double,waterlogged=false]",
"cobblestone_slab[type=double,waterlogged=false]",
"brick_slab[type=double,waterlogged=false]",
"stone_brick_slab[type=double,waterlogged=false]",
"nether_brick_slab[type=double,waterlogged=false]",
"quartz_slab[type=double,waterlogged=false]",
"red_sandstone_slab[type=double,waterlogged=false]",
"purpur_slab[type=double,waterlogged=false]",
"smooth_stone",
"smooth_sandstone",
"smooth_quartz",
"smooth_red_sandstone",
"purpur_block",
"purpur_pillar[axis=x]",
"purpur_pillar[axis=y]",
"purpur_pillar[axis=z]",
"end_stone_bricks",
"repeating_command_block[conditional=true,facing=north]",
"repeating_command_block[conditional=true,facing=east]",
"repeating_command_block[conditional=true,facing=south]",
"repeating_command_block[conditional=true,facing=west]",
"repeating_command_block[conditional=true,facing=up]",
"repeating_command_block[conditional=true,facing=down]",
"repeating_command_block[conditional=false,facing=north]",
"repeating_command_block[conditional=false,facing=east]",
"repeating_command_block[conditional=false,facing=south]",
"repeating_command_block[conditional=false,facing=west]",
"repeating_command_block[conditional=false,facing=up]",
"repeating_command_block[conditional=false,facing=down]",
"chain_command_block[conditional=true,facing=north]",
"chain_command_block[conditional=true,facing=east]",
"chain_command_block[conditional=true,facing=south]",
"chain_command_block[conditional=true,facing=west]",
"chain_command_block[conditional=true,facing=up]",
"chain_command_block[conditional=true,facing=down]",
"chain_command_block[conditional=false,facing=north]",
"chain_command_block[conditional=false,facing=east]",
"chain_command_block[conditional=false,facing=south]",
"chain_command_block[conditional=false,facing=west]",
"chain_command_block[conditional=false,facing=up]",
"chain_command_block[conditional=false,facing=down]",
"magma_block",
"nether_wart_block",
"red_nether_bricks",
"bone_block[axis=x]",
"bone_block[axis=y]",
"bone_block[axis=z]",
"white_glazed_terracotta[facing=north]",
"white_glazed_terracotta[facing=south]",
"white_glazed_terracotta[facing=west]",
"white_glazed_terracotta[facing=east]",
"orange_glazed_terracotta[facing=north]",
"orange_glazed_terracotta[facing=south]",
"orange_glazed_terracotta[facing=west]",
"orange_glazed_terracotta[facing=east]",
"magenta_glazed_terracotta[facing=north]",
"magenta_glazed_terracotta[facing=south]",
"magenta_glazed_terracotta[facing=west]",
"magenta_glazed_terracotta[facing=east]",
"light_blue_glazed_terracotta[facing=north]",
"light_blue_glazed_terracotta[facing=south]",
"light_blue_glazed_terracotta[facing=west]",
"light_blue_glazed_terracotta[facing=east]",
"yellow_glazed_terracotta[facing=north]",
"yellow_glazed_terracotta[facing=south]",
"yellow_glazed_terracotta[facing=west]",
"yellow_glazed_terracotta[facing=east]",
"lime_glazed_terracotta[facing=north]",
"lime_glazed_terracotta[facing=south]",
"lime_glazed_terracotta[facing=west]",
"lime_glazed_terracotta[facing=east]",
"pink_glazed_terracotta[facing=north]",
"pink_glazed_terracotta[facing=south]",
"pink_glazed_terracotta[facing=west]",
"pink_glazed_terracotta[facing=east]",
"gray_glazed_terracotta[facing=north]",
"gray_glazed_terracotta[facing=south]",
"gray_glazed_terracotta[facing=west]",
"gray_glazed_terracotta[facing=east]",
"light_gray_glazed_terracotta[facing=north]",
"light_gray_glazed_terracotta[facing=south]",
"light_gray_glazed_terracotta[facing=west]",
"light_gray_glazed_terracotta[facing=east]",
"cyan_glazed_terracotta[facing=north]",
"cyan_glazed_terracotta[facing=south]",
"cyan_glazed_terracotta[facing=west]",
"cyan_glazed_terracotta[facing=east]",
"purple_glazed_terracotta[facing=north]",
"purple_glazed_terracotta[facing=south]",
"purple_glazed_terracotta[facing=west]",
"purple_glazed_terracotta[facing=east]",
"blue_glazed_terracotta[facing=north]",
"blue_glazed_terracotta[facing=south]",
"blue_glazed_terracotta[facing=west]",
"blue_glazed_terracotta[facing=east]",
"brown_glazed_terracotta[facing=north]",
"brown_glazed_terracotta[facing=south]",
"brown_glazed_terracotta[facing=west]",
"brown_glazed_terracotta[facing=east]",
"green_glazed_terracotta[facing=north]",
"green_glazed_terracotta[facing=south]",
"green_glazed_terracotta[facing=west]",
"green_glazed_terracotta[facing=east]",
"red_glazed_terracotta[facing=north]",
"red_glazed_terracotta[facing=south]",
"red_glazed_terracotta[facing=west]",
"red_glazed_terracotta[facing=east]",
"black_glazed_terracotta[facing=north]",
"black_glazed_terracotta[facing=south]",
"black_glazed_terracotta[facing=west]",
"black_glazed_terracotta[facing=east]",
"white_concrete",
"orange_concrete",
"magenta_concrete",
"light_blue_concrete",
"yellow_concrete",
"lime_concrete",
"pink_concrete",
"gray_concrete",
"light_gray_concrete",
"cyan_concrete",
"purple_concrete",
"blue_concrete",
"brown_concrete",
"green_concrete",
"red_concrete",
"black_concrete",
"white_concrete_powder",
"orange_concrete_powder",
"magenta_concrete_powder",
"light_blue_concrete_powder",
"yellow_concrete_powder",
"lime_concrete_powder",
"pink_concrete_powder",
"gray_concrete_powder",
"light_gray_concrete_powder",
"cyan_concrete_powder",
"purple_concrete_powder",
"blue_concrete_powder",
"brown_concrete_powder",
"green_concrete_powder",
"red_concrete_powder",
"black_concrete_powder",
"structure_block[mode=save]",
"structure_block[mode=load]",
"structure_block[mode=corner]",
"structure_block[mode=data]",
"glowstone"
};
}
@FunctionalInterface
interface ConnectorInitAction {
void check(WrappedBlockData blockData);
}
public static Object2IntMap<String> getKeyToId() {
return keyToId;
}
}

Datei anzeigen

@ -18,6 +18,7 @@
package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnections;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.util.Key;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
@ -52,7 +53,7 @@ public class WrappedBlockData {
}
private WrappedBlockData(String minecraftKey, int savedBlockStateId) {
this.minecraftKey = minecraftKey;
this.minecraftKey = Key.namespaced(minecraftKey);
this.savedBlockStateId = savedBlockStateId;
}

Datei anzeigen

@ -25,11 +25,16 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.data.BiMappings;
import com.viaversion.viaversion.api.data.Int2IntMapBiMappings;
import com.viaversion.viaversion.api.data.IntArrayMappings;
import com.viaversion.viaversion.api.data.MappingDataBase;
import com.viaversion.viaversion.api.data.MappingDataLoader;
import com.viaversion.viaversion.api.data.Mappings;
import com.viaversion.viaversion.util.GsonUtil;
import com.viaversion.viaversion.util.Int2IntBiHashMap;
import com.viaversion.viaversion.util.Int2IntBiMap;
import com.viaversion.viaversion.util.Key;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
@ -52,14 +57,14 @@ public class MappingData extends MappingDataBase {
}
@Override
public void loadExtras(JsonObject oldMappings, JsonObject newMappings, JsonObject diffMappings) {
loadTags(blockTags, newMappings.getAsJsonObject("block_tags"));
loadTags(itemTags, newMappings.getAsJsonObject("item_tags"));
loadTags(fluidTags, newMappings.getAsJsonObject("fluid_tags"));
public void loadExtras(JsonObject unmappedIdentifiers, JsonObject mappedIdentifiers, JsonObject diffMappings) {
loadTags(blockTags, mappedIdentifiers.getAsJsonObject("block_tags"));
loadTags(itemTags, mappedIdentifiers.getAsJsonObject("item_tags"));
loadTags(fluidTags, mappedIdentifiers.getAsJsonObject("fluid_tags"));
loadEnchantments(oldEnchantmentsIds, oldMappings.getAsJsonObject("legacy_enchantments"));
loadEnchantments(oldEnchantmentsIds, unmappedIdentifiers.getAsJsonObject("legacy_enchantments"));
enchantmentMappings = IntArrayMappings.builder().customEntrySize(72)
.unmapped(oldMappings.getAsJsonObject("legacy_enchantments")).mapped(newMappings.getAsJsonArray("enchantments")).build();
.unmapped(unmappedIdentifiers.getAsJsonObject("legacy_enchantments")).mapped(mappedIdentifiers.getAsJsonArray("enchantments")).build();
// Map minecraft:snow[layers=1] of 1.12 to minecraft:snow[layers=2] in 1.13
if (Via.getConfig().isSnowCollisionFix()) {
@ -122,16 +127,40 @@ public class MappingData extends MappingDataBase {
}
@Override
protected Mappings loadFromObject(JsonObject oldMappings, JsonObject newMappings, @Nullable JsonObject diffMappings, String key) {
protected @Nullable Mappings loadFromArray(final JsonObject unmappedIdentifiers, final JsonObject mappedIdentifiers, @Nullable final JsonObject diffMappings, final String key) {
if (key.equals("blocks")) {
// Need to use a custom size since there are larger gaps in ids
// Need to use a custom size since there are larger gaps in ids, also object -> array
return IntArrayMappings.builder().customEntrySize(4084)
.unmapped(oldMappings.getAsJsonObject("blocks")).mapped(newMappings.getAsJsonObject("blockstates")).build();
.unmapped(unmappedIdentifiers.getAsJsonObject("blocks")).mapped(mappedIdentifiers.getAsJsonArray("blockstates")).build();
} else if (key.equals("items")) {
// Object -> array
return IntArrayMappings.builder()
.unmapped(unmappedIdentifiers.getAsJsonObject(key)).mapped(mappedIdentifiers.getAsJsonArray(key)).build();
} else {
return super.loadFromObject(oldMappings, newMappings, diffMappings, key);
return super.loadFromArray(unmappedIdentifiers, mappedIdentifiers, diffMappings, key);
}
}
@Override
protected @Nullable BiMappings loadBiFromArray(final JsonObject unmappedIdentifiers, final JsonObject mappedIdentifiers, @Nullable final JsonObject diffMappings, final String key) {
if (key.equals("items")) {
final Int2IntBiMap itemMappings = new Int2IntBiHashMap();
itemMappings.defaultReturnValue(-1);
MappingDataLoader.mapIdentifiers(itemMappings, unmappedIdentifiers.getAsJsonObject("items"), toJsonObject(mappedIdentifiers.getAsJsonArray("items")), null, true);
return Int2IntMapBiMappings.of(itemMappings);
}
return super.loadBiFromArray(unmappedIdentifiers, mappedIdentifiers, diffMappings, key);
}
private JsonObject toJsonObject(final JsonArray array) {
final JsonObject object = new JsonObject();
for (int i = 0; i < array.size(); i++) {
final JsonElement element = array.get(i);
object.add(Integer.toString(i), element);
}
return object;
}
public static String validateNewChannel(String newId) {
if (!isValid1_13Channel(newId)) {
return null; // Not valid
@ -157,7 +186,7 @@ public class MappingData extends MappingDataBase {
for (int i = 0; i < ids.size(); i++) {
idsArray[i] = ids.get(i).getAsInt();
}
output.put(entry.getKey(), idsArray);
output.put(Key.namespaced(entry.getKey()), idsArray);
}
}

Datei anzeigen

@ -430,14 +430,14 @@ public class InventoryPackets extends ItemRewriter<ClientboundPackets1_12_1, Ser
}
}
if (!Protocol1_13To1_12_2.MAPPINGS.getItemMappings().containsKey(rawId)) {
if (Protocol1_13To1_12_2.MAPPINGS.getItemMappings().getNewId(rawId) == -1) {
if (!isDamageable(item.identifier()) && item.identifier() != 358) { // Map
if (tag == null) item.setTag(tag = new CompoundTag());
tag.put(NBT_TAG_NAME, new IntTag(originalId)); // Data will be lost, saving original id
}
if (item.identifier() == 31 && item.data() == 0) { // Shrub was removed
rawId = 32 << 4; // Dead Bush
} else if (Protocol1_13To1_12_2.MAPPINGS.getItemMappings().containsKey(rawId & ~0xF)) {
} else if (Protocol1_13To1_12_2.MAPPINGS.getItemMappings().getNewId(rawId & ~0xF) != -1) {
rawId &= ~0xF; // Remove data
} else {
if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) {
@ -447,7 +447,7 @@ public class InventoryPackets extends ItemRewriter<ClientboundPackets1_12_1, Ser
}
}
item.setIdentifier(Protocol1_13To1_12_2.MAPPINGS.getItemMappings().get(rawId));
item.setIdentifier(Protocol1_13To1_12_2.MAPPINGS.getItemMappings().getNewId(rawId));
item.setData((short) 0);
return item;
}
@ -501,7 +501,7 @@ public class InventoryPackets extends ItemRewriter<ClientboundPackets1_12_1, Ser
}
if (rawId == null) {
int oldId = Protocol1_13To1_12_2.MAPPINGS.getItemMappings().inverse().get(item.identifier());
int oldId = Protocol1_13To1_12_2.MAPPINGS.getItemMappings().inverse().getNewId(item.identifier());
if (oldId != -1) {
// Handle spawn eggs
Optional<String> eggEntityId = SpawnEggRewriter.getEntityId(oldId);

Datei anzeigen

@ -25,8 +25,8 @@ import com.viaversion.viaversion.api.data.MappingDataBase;
import com.viaversion.viaversion.api.data.MappingDataLoader;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
import it.unimi.dsi.fastutil.ints.IntSet;
import java.util.HashMap;
import java.util.Map;
import it.unimi.dsi.fastutil.objects.Object2IntMap;
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
public class MappingData extends MappingDataBase {
private IntSet motionBlocking;
@ -37,11 +37,13 @@ public class MappingData extends MappingDataBase {
}
@Override
public void loadExtras(JsonObject oldMappings, JsonObject newMappings, JsonObject diffMappings) {
JsonObject blockStates = newMappings.getAsJsonObject("blockstates");
Map<String, Integer> blockStateMap = new HashMap<>(blockStates.entrySet().size());
for (Map.Entry<String, JsonElement> entry : blockStates.entrySet()) {
blockStateMap.put(entry.getValue().getAsString(), Integer.parseInt(entry.getKey()));
public void loadExtras(JsonObject unmappedIdentifiers, JsonObject mappedIdentifiers, JsonObject diffMappings) {
JsonArray mappedBlockStates = mappedIdentifiers.getAsJsonArray("blockstates");
Object2IntMap<String> blockStateMap = new Object2IntOpenHashMap<>(mappedBlockStates.size());
blockStateMap.defaultReturnValue(-1);
for (int i = 0; i < mappedBlockStates.size(); i++) {
String state = mappedBlockStates.get(i).getAsString();
blockStateMap.put(state, i);
}
JsonObject heightMapData = MappingDataLoader.loadData("heightMapData-1.14.json");
@ -49,20 +51,21 @@ public class MappingData extends MappingDataBase {
this.motionBlocking = new IntOpenHashSet(motionBlocking.size(), .99F);
for (JsonElement blockState : motionBlocking) {
String key = blockState.getAsString();
Integer id = blockStateMap.get(key);
if (id == null) {
int id = blockStateMap.getInt(key);
if (id == -1) {
Via.getPlatform().getLogger().warning("Unknown blockstate " + key + " :(");
} else {
this.motionBlocking.add(id.intValue());
this.motionBlocking.add(id);
}
}
if (Via.getConfig().isNonFullBlockLightFix()) {
nonFullBlocks = new IntOpenHashSet(1611, .99F);
for (Map.Entry<String, JsonElement> blockstates : oldMappings.getAsJsonObject("blockstates").entrySet()) {
final String state = blockstates.getValue().getAsString();
JsonArray blockStates = unmappedIdentifiers.getAsJsonArray("blockstates");
for (int i = 0; i < blockStates.size(); i++) {
String state = blockStates.get(i).getAsString();
if (state.contains("_slab") || state.contains("_stairs") || state.contains("_wall[")) {
nonFullBlocks.add(blockStateMappings.getNewId(Integer.parseInt(blockstates.getKey())));
nonFullBlocks.add(blockStateMappings.getNewId(i));
}
}
nonFullBlocks.add(blockStateMappings.getNewId(8163)); // grass path

Datei anzeigen

@ -30,13 +30,13 @@ public class MappingData extends MappingDataBase {
}
@Override
protected Mappings loadFromArray(JsonObject oldMappings, JsonObject newMappings, @Nullable JsonObject diffMappings, String key) {
protected Mappings loadFromArray(JsonObject unmappedIdentifiers, JsonObject mappedIdentifiers, @Nullable JsonObject diffMappings, String key) {
if (!key.equals("sounds")) {
return super.loadFromArray(oldMappings, newMappings, diffMappings, key);
return super.loadFromArray(unmappedIdentifiers, mappedIdentifiers, diffMappings, key);
}
// Ignore removed sounds
return IntArrayMappings.builder().warnOnMissing(false)
.unmapped(oldMappings.getAsJsonArray(key)).mapped(newMappings.getAsJsonArray(key)).build();
.unmapped(unmappedIdentifiers.getAsJsonArray(key)).mapped(mappedIdentifiers.getAsJsonArray(key)).build();
}
}

Datei anzeigen

@ -39,7 +39,7 @@ public class MappingData extends MappingDataBase {
}
@Override
public void loadExtras(JsonObject oldMappings, JsonObject newMappings, JsonObject diffMappings) {
public void loadExtras(JsonObject unmappedIdentifiers, JsonObject mappedIdentifiers, JsonObject diffMappings) {
try {
dimensionRegistry = BinaryTagIO.readCompressedInputStream(MappingDataLoader.getResource("dimension-registry-1.16.2.nbt"));
} catch (IOException e) {

Datei anzeigen

@ -30,7 +30,7 @@ public class MappingData extends MappingDataBase {
}
@Override
protected void loadExtras(JsonObject oldMappings, JsonObject newMappings, JsonObject diffMappings) {
protected void loadExtras(JsonObject unmappedIdentifiers, JsonObject mappedIdentifiers, JsonObject diffMappings) {
attributeMappings.put("generic.maxHealth", "minecraft:generic.max_health");
attributeMappings.put("zombie.spawnReinforcements", "minecraft:zombie.spawn_reinforcements");
attributeMappings.put("horse.jumpStrength", "minecraft:horse.jump_strength");

Datei anzeigen

@ -37,6 +37,7 @@ import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ServerboundPacke
import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.storage.InventoryTracker1_16;
import com.viaversion.viaversion.rewriter.ItemRewriter;
import com.viaversion.viaversion.rewriter.RecipeRewriter;
import com.viaversion.viaversion.util.Key;
import java.util.UUID;
public class InventoryPackets extends ItemRewriter<ClientboundPackets1_15, ServerboundPackets1_16, Protocol1_16To1_15_2> {
@ -240,8 +241,8 @@ public class InventoryPackets extends ItemRewriter<ClientboundPackets1_15, Serve
if (attributeNameTag == null) return;
String attributeName = attributeNameTag.getValue();
if (inverse && !attributeName.startsWith("minecraft:")) {
attributeName = "minecraft:" + attributeName;
if (inverse) {
attributeName = Key.namespaced(attributeName);
}
String mappedAttribute = (inverse ? Protocol1_16To1_15_2.MAPPINGS.getAttributeMappings().inverse()

Datei anzeigen

@ -34,9 +34,9 @@ public final class MappingData extends MappingDataBase {
}
@Override
protected void loadExtras(final JsonObject oldMappings, final JsonObject newMappings, @Nullable final JsonObject diffMappings) {
protected void loadExtras(final JsonObject unmappedIdentifiers, final JsonObject mappedIdentifiers, @Nullable final JsonObject diffMappings) {
int i = 0;
for (final JsonElement element : newMappings.getAsJsonArray("blockentities")) {
for (final JsonElement element : mappedIdentifiers.getAsJsonArray("blockentities")) {
final String id = element.getAsString();
blockEntityIds.put(id, i++);
}

Datei anzeigen

@ -39,6 +39,7 @@ import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.BlockEntityIds;
import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.Protocol1_18To1_17_1;
import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.storage.ChunkLightStorage;
import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.types.Chunk1_18Type;
import com.viaversion.viaversion.util.Key;
import com.viaversion.viaversion.util.MathUtil;
import java.util.ArrayList;
import java.util.BitSet;
@ -115,7 +116,7 @@ public final class WorldPackets {
}
final String id = idTag.getValue();
final int typeId = protocol.getMappingData().blockEntityIds().getInt(id.replace("minecraft:", ""));
final int typeId = protocol.getMappingData().blockEntityIds().getInt(Key.stripMinecraftNamespace(id));
if (typeId == -1) {
Via.getPlatform().getLogger().warning("Unknown block entity: " + id);
}

Datei anzeigen

@ -27,6 +27,7 @@ import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ServerboundPac
import com.viaversion.viaversion.rewriter.BlockRewriter;
import com.viaversion.viaversion.rewriter.ItemRewriter;
import com.viaversion.viaversion.rewriter.RecipeRewriter;
import com.viaversion.viaversion.util.Key;
public final class InventoryPackets extends ItemRewriter<ClientboundPackets1_19_1, ServerboundPackets1_19_3, Protocol1_19_3To1_19_1> {
@ -61,7 +62,7 @@ public final class InventoryPackets extends ItemRewriter<ClientboundPackets1_19_
protocol.registerClientbound(ClientboundPackets1_19_1.DECLARE_RECIPES, 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:", "");
final String type = Key.stripMinecraftNamespace(wrapper.passthrough(Type.STRING));
wrapper.passthrough(Type.STRING); // Recipe Identifier
switch (type) {
case "crafting_shapeless": {

Datei anzeigen

@ -65,7 +65,6 @@ public final class Protocol1_19_4To1_19_3 extends AbstractProtocol<ClientboundPa
super.handleArgument(wrapper, argumentType);
}
}
}.registerDeclareCommands1_19(ClientboundPackets1_19_3.DECLARE_COMMANDS);
registerClientbound(ClientboundPackets1_19_3.SERVER_DATA, wrapper -> {

Datei anzeigen

@ -34,7 +34,7 @@ public final class MappingData extends MappingDataBase {
}
@Override
protected void loadExtras(final JsonObject oldMappings, final JsonObject newMappings, @Nullable final JsonObject diffMappings) {
protected void loadExtras(final JsonObject unmappedIdentifiers, final JsonObject mappedIdentifiers, @Nullable final JsonObject diffMappings) {
try {
damageTypesRegistry = BinaryTagIO.readCompressedInputStream(MappingDataLoader.getResource("damage-types-1.19.4.nbt"));
} catch (final IOException e) {

Datei anzeigen

@ -39,7 +39,7 @@ public final class MappingData extends MappingDataBase {
}
@Override
protected void loadExtras(final JsonObject oldMappings, final JsonObject newMappings, @Nullable final JsonObject diffMappings) {
protected void loadExtras(final JsonObject unmappedIdentifiers, final JsonObject mappedIdentifiers, @Nullable final JsonObject diffMappings) {
try {
final ListTag chatTypes = BinaryTagIO.readCompressedInputStream(MappingDataLoader.getResource("chat-types-1.19.nbt")).get("values");
for (final Tag chatType : chatTypes) {

Datei anzeigen

@ -22,6 +22,7 @@ import com.viaversion.viaversion.api.protocol.Protocol;
import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.util.Key;
import java.util.HashMap;
import java.util.Map;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -68,9 +69,9 @@ public class RecipeRewriter<C extends ClientboundPacketType> {
protocol.registerClientbound(packetType, wrapper -> {
int size = wrapper.passthrough(Type.VAR_INT);
for (int i = 0; i < size; i++) {
String type = wrapper.passthrough(Type.STRING).replace("minecraft:", "");
String type = wrapper.passthrough(Type.STRING);
wrapper.passthrough(Type.STRING); // Recipe Identifier
handleRecipeType(wrapper, type);
handleRecipeType(wrapper, Key.stripMinecraftNamespace(type));
}
});
}

Datei anzeigen

@ -26,6 +26,7 @@ import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.util.Key;
import it.unimi.dsi.fastutil.ints.IntArrayList;
import it.unimi.dsi.fastutil.ints.IntList;
import java.util.ArrayList;
@ -176,9 +177,7 @@ public class TagRewriter<C extends ClientboundPacketType> {
}
wrapper.write(Type.STRING, registryKey);
if (registryKey.startsWith("minecraft:")) {
registryKey = registryKey.substring(10);
}
registryKey = Key.stripMinecraftNamespace(registryKey);
RegistryType type = RegistryType.getByKey(registryKey);
if (type != null) {

Datei anzeigen

@ -1,381 +0,0 @@
{
"occluding": [
"minecraft:stone",
"minecraft:granite",
"minecraft:polished_granite",
"minecraft:diorite",
"minecraft:polished_diorite",
"minecraft:andesite",
"minecraft:polished_andesite",
"minecraft:grass_block[snowy=false]",
"minecraft:dirt",
"minecraft:coarse_dirt",
"minecraft:podzol[snowy=false]",
"minecraft:cobblestone",
"minecraft:oak_planks",
"minecraft:spruce_planks",
"minecraft:birch_planks",
"minecraft:jungle_planks",
"minecraft:acacia_planks",
"minecraft:dark_oak_planks",
"minecraft:bedrock",
"minecraft:sand",
"minecraft:red_sand",
"minecraft:gravel",
"minecraft:gold_ore",
"minecraft:iron_ore",
"minecraft:coal_ore",
"minecraft:oak_log[axis=x]",
"minecraft:oak_log[axis=y]",
"minecraft:oak_log[axis=z]",
"minecraft:spruce_log[axis=x]",
"minecraft:spruce_log[axis=y]",
"minecraft:spruce_log[axis=z]",
"minecraft:birch_log[axis=x]",
"minecraft:birch_log[axis=y]",
"minecraft:birch_log[axis=z]",
"minecraft:jungle_log[axis=x]",
"minecraft:jungle_log[axis=y]",
"minecraft:jungle_log[axis=z]",
"minecraft:acacia_log[axis=x]",
"minecraft:acacia_log[axis=y]",
"minecraft:acacia_log[axis=z]",
"minecraft:dark_oak_log[axis=x]",
"minecraft:dark_oak_log[axis=y]",
"minecraft:dark_oak_log[axis=z]",
"minecraft:oak_wood[axis=y]",
"minecraft:spruce_wood[axis=y]",
"minecraft:birch_wood[axis=y]",
"minecraft:jungle_wood[axis=y]",
"minecraft:acacia_wood[axis=y]",
"minecraft:dark_oak_wood[axis=y]",
"minecraft:sponge",
"minecraft:wet_sponge",
"minecraft:lapis_ore",
"minecraft:lapis_block",
"minecraft:dispenser[facing=north,triggered=true]",
"minecraft:dispenser[facing=north,triggered=false]",
"minecraft:dispenser[facing=east,triggered=true]",
"minecraft:dispenser[facing=east,triggered=false]",
"minecraft:dispenser[facing=south,triggered=true]",
"minecraft:dispenser[facing=south,triggered=false]",
"minecraft:dispenser[facing=west,triggered=true]",
"minecraft:dispenser[facing=west,triggered=false]",
"minecraft:dispenser[facing=up,triggered=true]",
"minecraft:dispenser[facing=up,triggered=false]",
"minecraft:dispenser[facing=down,triggered=true]",
"minecraft:dispenser[facing=down,triggered=false]",
"minecraft:sandstone",
"minecraft:chiseled_sandstone",
"minecraft:cut_sandstone",
"minecraft:note_block[instrument=harp,note=0,powered=false]",
"minecraft:white_wool",
"minecraft:orange_wool",
"minecraft:magenta_wool",
"minecraft:light_blue_wool",
"minecraft:yellow_wool",
"minecraft:lime_wool",
"minecraft:pink_wool",
"minecraft:gray_wool",
"minecraft:light_gray_wool",
"minecraft:cyan_wool",
"minecraft:purple_wool",
"minecraft:blue_wool",
"minecraft:brown_wool",
"minecraft:green_wool",
"minecraft:red_wool",
"minecraft:black_wool",
"minecraft:gold_block",
"minecraft:iron_block",
"minecraft:bricks",
"minecraft:bookshelf",
"minecraft:mossy_cobblestone",
"minecraft:obsidian",
"minecraft:spawner",
"minecraft:diamond_ore",
"minecraft:diamond_block",
"minecraft:crafting_table",
"minecraft:furnace[facing=north,lit=true]",
"minecraft:furnace[facing=north,lit=false]",
"minecraft:furnace[facing=south,lit=true]",
"minecraft:furnace[facing=south,lit=false]",
"minecraft:furnace[facing=west,lit=true]",
"minecraft:furnace[facing=west,lit=false]",
"minecraft:furnace[facing=east,lit=true]",
"minecraft:furnace[facing=east,lit=false]",
"minecraft:redstone_ore[lit=true]",
"minecraft:redstone_ore[lit=false]",
"minecraft:snow_block",
"minecraft:clay",
"minecraft:jukebox[has_record=true]",
"minecraft:jukebox[has_record=false]",
"minecraft:netherrack",
"minecraft:soul_sand",
"minecraft:carved_pumpkin[facing=north]",
"minecraft:carved_pumpkin[facing=south]",
"minecraft:carved_pumpkin[facing=west]",
"minecraft:carved_pumpkin[facing=east]",
"minecraft:jack_o_lantern[facing=north]",
"minecraft:jack_o_lantern[facing=south]",
"minecraft:jack_o_lantern[facing=west]",
"minecraft:jack_o_lantern[facing=east]",
"minecraft:infested_stone",
"minecraft:infested_cobblestone",
"minecraft:infested_stone_bricks",
"minecraft:infested_mossy_stone_bricks",
"minecraft:infested_cracked_stone_bricks",
"minecraft:infested_chiseled_stone_bricks",
"minecraft:stone_bricks",
"minecraft:mossy_stone_bricks",
"minecraft:cracked_stone_bricks",
"minecraft:chiseled_stone_bricks",
"minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]",
"minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]",
"minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]",
"minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]",
"minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]",
"minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]",
"minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]",
"minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]",
"minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]",
"minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=false]",
"minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]",
"minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]",
"minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]",
"minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]",
"minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]",
"minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]",
"minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]",
"minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]",
"minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]",
"minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]",
"minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=false]",
"minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]",
"minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]",
"minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]",
"minecraft:melon",
"minecraft:mycelium[snowy=false]",
"minecraft:nether_bricks",
"minecraft:end_stone",
"minecraft:redstone_lamp[lit=true]",
"minecraft:redstone_lamp[lit=false]",
"minecraft:emerald_ore",
"minecraft:emerald_block",
"minecraft:command_block[conditional=true,facing=north]",
"minecraft:command_block[conditional=true,facing=east]",
"minecraft:command_block[conditional=true,facing=south]",
"minecraft:command_block[conditional=true,facing=west]",
"minecraft:command_block[conditional=true,facing=up]",
"minecraft:command_block[conditional=true,facing=down]",
"minecraft:command_block[conditional=false,facing=north]",
"minecraft:command_block[conditional=false,facing=east]",
"minecraft:command_block[conditional=false,facing=south]",
"minecraft:command_block[conditional=false,facing=west]",
"minecraft:command_block[conditional=false,facing=up]",
"minecraft:command_block[conditional=false,facing=down]",
"minecraft:nether_quartz_ore",
"minecraft:quartz_block",
"minecraft:chiseled_quartz_block",
"minecraft:quartz_pillar[axis=x]",
"minecraft:quartz_pillar[axis=y]",
"minecraft:quartz_pillar[axis=z]",
"minecraft:dropper[facing=north,triggered=true]",
"minecraft:dropper[facing=north,triggered=false]",
"minecraft:dropper[facing=east,triggered=true]",
"minecraft:dropper[facing=east,triggered=false]",
"minecraft:dropper[facing=south,triggered=true]",
"minecraft:dropper[facing=south,triggered=false]",
"minecraft:dropper[facing=west,triggered=true]",
"minecraft:dropper[facing=west,triggered=false]",
"minecraft:dropper[facing=up,triggered=true]",
"minecraft:dropper[facing=up,triggered=false]",
"minecraft:dropper[facing=down,triggered=true]",
"minecraft:dropper[facing=down,triggered=false]",
"minecraft:white_terracotta",
"minecraft:orange_terracotta",
"minecraft:magenta_terracotta",
"minecraft:light_blue_terracotta",
"minecraft:yellow_terracotta",
"minecraft:lime_terracotta",
"minecraft:pink_terracotta",
"minecraft:gray_terracotta",
"minecraft:light_gray_terracotta",
"minecraft:cyan_terracotta",
"minecraft:purple_terracotta",
"minecraft:blue_terracotta",
"minecraft:brown_terracotta",
"minecraft:green_terracotta",
"minecraft:red_terracotta",
"minecraft:black_terracotta",
"minecraft:slime_block",
"minecraft:barrier",
"minecraft:prismarine",
"minecraft:prismarine_bricks",
"minecraft:dark_prismarine",
"minecraft:hay_block[axis=x]",
"minecraft:hay_block[axis=y]",
"minecraft:hay_block[axis=z]",
"minecraft:terracotta",
"minecraft:coal_block",
"minecraft:packed_ice",
"minecraft:red_sandstone",
"minecraft:chiseled_red_sandstone",
"minecraft:cut_red_sandstone",
"minecraft:oak_slab[type=double,waterlogged=false]",
"minecraft:spruce_slab[type=double,waterlogged=false]",
"minecraft:birch_slab[type=double,waterlogged=false]",
"minecraft:jungle_slab[type=double,waterlogged=false]",
"minecraft:acacia_slab[type=double,waterlogged=false]",
"minecraft:dark_oak_slab[type=double,waterlogged=false]",
"minecraft:stone_slab[type=double,waterlogged=false]",
"minecraft:sandstone_slab[type=double,waterlogged=false]",
"minecraft:petrified_oak_slab[type=double,waterlogged=false]",
"minecraft:cobblestone_slab[type=double,waterlogged=false]",
"minecraft:brick_slab[type=double,waterlogged=false]",
"minecraft:stone_brick_slab[type=double,waterlogged=false]",
"minecraft:nether_brick_slab[type=double,waterlogged=false]",
"minecraft:quartz_slab[type=double,waterlogged=false]",
"minecraft:red_sandstone_slab[type=double,waterlogged=false]",
"minecraft:purpur_slab[type=double,waterlogged=false]",
"minecraft:smooth_stone",
"minecraft:smooth_sandstone",
"minecraft:smooth_quartz",
"minecraft:smooth_red_sandstone",
"minecraft:purpur_block",
"minecraft:purpur_pillar[axis=x]",
"minecraft:purpur_pillar[axis=y]",
"minecraft:purpur_pillar[axis=z]",
"minecraft:end_stone_bricks",
"minecraft:repeating_command_block[conditional=true,facing=north]",
"minecraft:repeating_command_block[conditional=true,facing=east]",
"minecraft:repeating_command_block[conditional=true,facing=south]",
"minecraft:repeating_command_block[conditional=true,facing=west]",
"minecraft:repeating_command_block[conditional=true,facing=up]",
"minecraft:repeating_command_block[conditional=true,facing=down]",
"minecraft:repeating_command_block[conditional=false,facing=north]",
"minecraft:repeating_command_block[conditional=false,facing=east]",
"minecraft:repeating_command_block[conditional=false,facing=south]",
"minecraft:repeating_command_block[conditional=false,facing=west]",
"minecraft:repeating_command_block[conditional=false,facing=up]",
"minecraft:repeating_command_block[conditional=false,facing=down]",
"minecraft:chain_command_block[conditional=true,facing=north]",
"minecraft:chain_command_block[conditional=true,facing=east]",
"minecraft:chain_command_block[conditional=true,facing=south]",
"minecraft:chain_command_block[conditional=true,facing=west]",
"minecraft:chain_command_block[conditional=true,facing=up]",
"minecraft:chain_command_block[conditional=true,facing=down]",
"minecraft:chain_command_block[conditional=false,facing=north]",
"minecraft:chain_command_block[conditional=false,facing=east]",
"minecraft:chain_command_block[conditional=false,facing=south]",
"minecraft:chain_command_block[conditional=false,facing=west]",
"minecraft:chain_command_block[conditional=false,facing=up]",
"minecraft:chain_command_block[conditional=false,facing=down]",
"minecraft:magma_block",
"minecraft:nether_wart_block",
"minecraft:red_nether_bricks",
"minecraft:bone_block[axis=x]",
"minecraft:bone_block[axis=y]",
"minecraft:bone_block[axis=z]",
"minecraft:white_glazed_terracotta[facing=north]",
"minecraft:white_glazed_terracotta[facing=south]",
"minecraft:white_glazed_terracotta[facing=west]",
"minecraft:white_glazed_terracotta[facing=east]",
"minecraft:orange_glazed_terracotta[facing=north]",
"minecraft:orange_glazed_terracotta[facing=south]",
"minecraft:orange_glazed_terracotta[facing=west]",
"minecraft:orange_glazed_terracotta[facing=east]",
"minecraft:magenta_glazed_terracotta[facing=north]",
"minecraft:magenta_glazed_terracotta[facing=south]",
"minecraft:magenta_glazed_terracotta[facing=west]",
"minecraft:magenta_glazed_terracotta[facing=east]",
"minecraft:light_blue_glazed_terracotta[facing=north]",
"minecraft:light_blue_glazed_terracotta[facing=south]",
"minecraft:light_blue_glazed_terracotta[facing=west]",
"minecraft:light_blue_glazed_terracotta[facing=east]",
"minecraft:yellow_glazed_terracotta[facing=north]",
"minecraft:yellow_glazed_terracotta[facing=south]",
"minecraft:yellow_glazed_terracotta[facing=west]",
"minecraft:yellow_glazed_terracotta[facing=east]",
"minecraft:lime_glazed_terracotta[facing=north]",
"minecraft:lime_glazed_terracotta[facing=south]",
"minecraft:lime_glazed_terracotta[facing=west]",
"minecraft:lime_glazed_terracotta[facing=east]",
"minecraft:pink_glazed_terracotta[facing=north]",
"minecraft:pink_glazed_terracotta[facing=south]",
"minecraft:pink_glazed_terracotta[facing=west]",
"minecraft:pink_glazed_terracotta[facing=east]",
"minecraft:gray_glazed_terracotta[facing=north]",
"minecraft:gray_glazed_terracotta[facing=south]",
"minecraft:gray_glazed_terracotta[facing=west]",
"minecraft:gray_glazed_terracotta[facing=east]",
"minecraft:light_gray_glazed_terracotta[facing=north]",
"minecraft:light_gray_glazed_terracotta[facing=south]",
"minecraft:light_gray_glazed_terracotta[facing=west]",
"minecraft:light_gray_glazed_terracotta[facing=east]",
"minecraft:cyan_glazed_terracotta[facing=north]",
"minecraft:cyan_glazed_terracotta[facing=south]",
"minecraft:cyan_glazed_terracotta[facing=west]",
"minecraft:cyan_glazed_terracotta[facing=east]",
"minecraft:purple_glazed_terracotta[facing=north]",
"minecraft:purple_glazed_terracotta[facing=south]",
"minecraft:purple_glazed_terracotta[facing=west]",
"minecraft:purple_glazed_terracotta[facing=east]",
"minecraft:blue_glazed_terracotta[facing=north]",
"minecraft:blue_glazed_terracotta[facing=south]",
"minecraft:blue_glazed_terracotta[facing=west]",
"minecraft:blue_glazed_terracotta[facing=east]",
"minecraft:brown_glazed_terracotta[facing=north]",
"minecraft:brown_glazed_terracotta[facing=south]",
"minecraft:brown_glazed_terracotta[facing=west]",
"minecraft:brown_glazed_terracotta[facing=east]",
"minecraft:green_glazed_terracotta[facing=north]",
"minecraft:green_glazed_terracotta[facing=south]",
"minecraft:green_glazed_terracotta[facing=west]",
"minecraft:green_glazed_terracotta[facing=east]",
"minecraft:red_glazed_terracotta[facing=north]",
"minecraft:red_glazed_terracotta[facing=south]",
"minecraft:red_glazed_terracotta[facing=west]",
"minecraft:red_glazed_terracotta[facing=east]",
"minecraft:black_glazed_terracotta[facing=north]",
"minecraft:black_glazed_terracotta[facing=south]",
"minecraft:black_glazed_terracotta[facing=west]",
"minecraft:black_glazed_terracotta[facing=east]",
"minecraft:white_concrete",
"minecraft:orange_concrete",
"minecraft:magenta_concrete",
"minecraft:light_blue_concrete",
"minecraft:yellow_concrete",
"minecraft:lime_concrete",
"minecraft:pink_concrete",
"minecraft:gray_concrete",
"minecraft:light_gray_concrete",
"minecraft:cyan_concrete",
"minecraft:purple_concrete",
"minecraft:blue_concrete",
"minecraft:brown_concrete",
"minecraft:green_concrete",
"minecraft:red_concrete",
"minecraft:black_concrete",
"minecraft:white_concrete_powder",
"minecraft:orange_concrete_powder",
"minecraft:magenta_concrete_powder",
"minecraft:light_blue_concrete_powder",
"minecraft:yellow_concrete_powder",
"minecraft:lime_concrete_powder",
"minecraft:pink_concrete_powder",
"minecraft:gray_concrete_powder",
"minecraft:light_gray_concrete_powder",
"minecraft:cyan_concrete_powder",
"minecraft:purple_concrete_powder",
"minecraft:blue_concrete_powder",
"minecraft:brown_concrete_powder",
"minecraft:green_concrete_powder",
"minecraft:red_concrete_powder",
"minecraft:black_concrete_powder",
"minecraft:structure_block[mode=save]",
"minecraft:structure_block[mode=load]",
"minecraft:structure_block[mode=corner]",
"minecraft:structure_block[mode=data]",
"minecraft:glowstone"
]
}

Datei anzeigen

@ -21290,7 +21290,7 @@
]
]
},
"minecraft:baked_potato": {
"baked_potato": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21306,15 +21306,15 @@
"experience": 0.35,
"cookingTime": 200
},
"minecraft:banner_duplicate": {
"banner_duplicate": {
"type": "crafting_special_bannerduplicate",
"group": ""
},
"minecraft:banner_add_pattern": {
"banner_add_pattern": {
"type": "crafting_special_banneraddpattern",
"group": ""
},
"minecraft:quartz": {
"quartz": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21330,7 +21330,7 @@
"experience": 0.2,
"cookingTime": 200
},
"minecraft:sponge": {
"sponge": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21346,7 +21346,7 @@
"experience": 0.15,
"cookingTime": 200
},
"minecraft:iron_ingot": {
"iron_ingot": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21362,11 +21362,11 @@
"experience": 0.7,
"cookingTime": 200
},
"minecraft:tipped_arrow": {
"tipped_arrow": {
"type": "crafting_special_tippedarrow",
"group": ""
},
"minecraft:gold_ingot": {
"gold_ingot": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21382,7 +21382,7 @@
"experience": 1.0,
"cookingTime": 200
},
"minecraft:glass": {
"glass": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21402,7 +21402,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:stone": {
"stone": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21418,7 +21418,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:white_glazed_terracotta": {
"white_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21434,7 +21434,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:diamond_from_smelting": {
"diamond_from_smelting": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21450,7 +21450,7 @@
"experience": 1.0,
"cookingTime": 200
},
"minecraft:lapis_from_smelting": {
"lapis_from_smelting": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21466,7 +21466,7 @@
"experience": 0.2,
"cookingTime": 200
},
"minecraft:emerald_from_smelting": {
"emerald_from_smelting": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21482,7 +21482,7 @@
"experience": 1.0,
"cookingTime": 200
},
"minecraft:cooked_porkchop": {
"cooked_porkchop": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21498,11 +21498,11 @@
"experience": 0.35,
"cookingTime": 200
},
"minecraft:book_cloning": {
"book_cloning": {
"type": "crafting_special_bookcloning",
"group": ""
},
"minecraft:pink_glazed_terracotta": {
"pink_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21518,7 +21518,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:orange_glazed_terracotta": {
"orange_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21534,7 +21534,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:yellow_glazed_terracotta": {
"yellow_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21550,7 +21550,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:iron_nugget_from_smelting": {
"iron_nugget_from_smelting": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21618,7 +21618,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:dried_kelp_from_smelting": {
"dried_kelp_from_smelting": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21634,7 +21634,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:redstone_from_smelting": {
"redstone_from_smelting": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21650,7 +21650,7 @@
"experience": 0.7,
"cookingTime": 200
},
"minecraft:cooked_salmon": {
"cooked_salmon": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21666,11 +21666,11 @@
"experience": 0.35,
"cookingTime": 200
},
"minecraft:map_extending": {
"map_extending": {
"type": "crafting_special_mapextending",
"group": ""
},
"minecraft:green_glazed_terracotta": {
"green_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21686,7 +21686,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:lime_glazed_terracotta": {
"lime_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21702,7 +21702,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:popped_chorus_fruit": {
"popped_chorus_fruit": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21718,7 +21718,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:cactus_green": {
"cactus_green": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21734,7 +21734,7 @@
"experience": 1.0,
"cookingTime": 200
},
"minecraft:cooked_cod": {
"cooked_cod": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21750,7 +21750,7 @@
"experience": 0.35,
"cookingTime": 200
},
"minecraft:magenta_glazed_terracotta": {
"magenta_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21766,7 +21766,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:nether_brick": {
"nether_brick": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21782,7 +21782,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:light_gray_glazed_terracotta": {
"light_gray_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21798,7 +21798,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:blue_glazed_terracotta": {
"blue_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21814,7 +21814,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:cooked_mutton": {
"cooked_mutton": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21830,7 +21830,7 @@
"experience": 0.35,
"cookingTime": 200
},
"minecraft:brown_glazed_terracotta": {
"brown_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21846,11 +21846,11 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:map_cloning": {
"map_cloning": {
"type": "crafting_special_mapcloning",
"group": ""
},
"minecraft:cracked_stone_bricks": {
"cracked_stone_bricks": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21866,7 +21866,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:charcoal": {
"charcoal": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21974,7 +21974,7 @@
"experience": 0.15,
"cookingTime": 200
},
"minecraft:black_glazed_terracotta": {
"black_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -21990,7 +21990,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:purple_glazed_terracotta": {
"purple_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -22006,7 +22006,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:coal_from_smelting": {
"coal_from_smelting": {
"type": "smelting",
"group": "",
"ingredient": [
@ -22022,7 +22022,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:gray_glazed_terracotta": {
"gray_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -22038,7 +22038,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:red_glazed_terracotta": {
"red_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -22054,7 +22054,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:brick": {
"brick": {
"type": "smelting",
"group": "",
"ingredient": [
@ -22070,7 +22070,7 @@
"experience": 0.3,
"cookingTime": 200
},
"minecraft:light_blue_glazed_terracotta": {
"light_blue_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -22086,11 +22086,11 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:firework_rocket": {
"firework_rocket": {
"type": "crafting_special_firework_rocket",
"group": ""
},
"minecraft:gold_nugget_from_smelting": {
"gold_nugget_from_smelting": {
"type": "smelting",
"group": "",
"ingredient": [
@ -22142,7 +22142,7 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:terracotta": {
"terracotta": {
"type": "smelting",
"group": "",
"ingredient": [
@ -22158,7 +22158,7 @@
"experience": 0.35,
"cookingTime": 200
},
"minecraft:lime_dye_from_smelting": {
"lime_dye_from_smelting": {
"type": "smelting",
"group": "",
"ingredient": [
@ -22174,15 +22174,15 @@
"experience": 0.1,
"cookingTime": 200
},
"minecraft:firework_star_fade": {
"firework_star_fade": {
"type": "crafting_special_firework_star_fade",
"group": ""
},
"minecraft:shulker_box_coloring": {
"shulker_box_coloring": {
"type": "crafting_special_shulkerboxcoloring",
"group": ""
},
"minecraft:cooked_chicken": {
"cooked_chicken": {
"type": "smelting",
"group": "",
"ingredient": [
@ -22198,15 +22198,15 @@
"experience": 0.35,
"cookingTime": 200
},
"minecraft:shield_decoration": {
"shield_decoration": {
"type": "crafting_special_shielddecoration",
"group": ""
},
"minecraft:armor_dye": {
"armor_dye": {
"type": "crafting_special_armordye",
"group": ""
},
"minecraft:cooked_rabbit": {
"cooked_rabbit": {
"type": "smelting",
"group": "",
"ingredient": [
@ -22222,15 +22222,15 @@
"experience": 0.35,
"cookingTime": 200
},
"minecraft:firework_star": {
"firework_star": {
"type": "crafting_special_firework_star",
"group": ""
},
"minecraft:repair_item": {
"repair_item": {
"type": "crafting_special_repairitem",
"group": ""
},
"minecraft:cooked_beef": {
"cooked_beef": {
"type": "smelting",
"group": "",
"ingredient": [
@ -22246,7 +22246,7 @@
"experience": 0.35,
"cookingTime": 200
},
"minecraft:cyan_glazed_terracotta": {
"cyan_glazed_terracotta": {
"type": "smelting",
"group": "",
"ingredient": [

Datei anzeigen

@ -1,64 +1,64 @@
{
"blockstates": {
"1126": "minecraft:tnt[unstable=false]",
"3075": "minecraft:oak_sign[rotation=0,waterlogged=true]",
"3076": "minecraft:oak_sign[rotation=0,waterlogged=false]",
"3077": "minecraft:oak_sign[rotation=1,waterlogged=true]",
"3078": "minecraft:oak_sign[rotation=1,waterlogged=false]",
"3079": "minecraft:oak_sign[rotation=2,waterlogged=true]",
"3080": "minecraft:oak_sign[rotation=2,waterlogged=false]",
"3081": "minecraft:oak_sign[rotation=3,waterlogged=true]",
"3082": "minecraft:oak_sign[rotation=3,waterlogged=false]",
"3083": "minecraft:oak_sign[rotation=4,waterlogged=true]",
"3084": "minecraft:oak_sign[rotation=4,waterlogged=false]",
"3085": "minecraft:oak_sign[rotation=5,waterlogged=true]",
"3086": "minecraft:oak_sign[rotation=5,waterlogged=false]",
"3087": "minecraft:oak_sign[rotation=6,waterlogged=true]",
"3088": "minecraft:oak_sign[rotation=6,waterlogged=false]",
"3089": "minecraft:oak_sign[rotation=7,waterlogged=true]",
"3090": "minecraft:oak_sign[rotation=7,waterlogged=false]",
"3091": "minecraft:oak_sign[rotation=8,waterlogged=true]",
"3092": "minecraft:oak_sign[rotation=8,waterlogged=false]",
"3093": "minecraft:oak_sign[rotation=9,waterlogged=true]",
"3094": "minecraft:oak_sign[rotation=9,waterlogged=false]",
"3095": "minecraft:oak_sign[rotation=10,waterlogged=true]",
"3096": "minecraft:oak_sign[rotation=10,waterlogged=false]",
"3097": "minecraft:oak_sign[rotation=11,waterlogged=true]",
"3098": "minecraft:oak_sign[rotation=11,waterlogged=false]",
"3099": "minecraft:oak_sign[rotation=12,waterlogged=true]",
"3100": "minecraft:oak_sign[rotation=12,waterlogged=false]",
"3101": "minecraft:oak_sign[rotation=13,waterlogged=true]",
"3102": "minecraft:oak_sign[rotation=13,waterlogged=false]",
"3103": "minecraft:oak_sign[rotation=14,waterlogged=true]",
"3104": "minecraft:oak_sign[rotation=14,waterlogged=false]",
"3105": "minecraft:oak_sign[rotation=15,waterlogged=true]",
"3106": "minecraft:oak_sign[rotation=15,waterlogged=false]",
"3269": "minecraft:oak_wall_sign[facing=north,waterlogged=true]",
"3270": "minecraft:oak_wall_sign[facing=north,waterlogged=false]",
"3271": "minecraft:oak_wall_sign[facing=south,waterlogged=true]",
"3272": "minecraft:oak_wall_sign[facing=south,waterlogged=false]",
"3273": "minecraft:oak_wall_sign[facing=west,waterlogged=true]",
"3274": "minecraft:oak_wall_sign[facing=west,waterlogged=false]",
"3275": "minecraft:oak_wall_sign[facing=east,waterlogged=true]",
"3276": "minecraft:oak_wall_sign[facing=east,waterlogged=false]",
"7293": "minecraft:smooth_stone_slab[type=top,waterlogged=true]",
"7294": "minecraft:smooth_stone_slab[type=top,waterlogged=false]",
"7295": "minecraft:smooth_stone_slab[type=bottom,waterlogged=true]",
"7296": "minecraft:smooth_stone_slab[type=bottom,waterlogged=false]",
"7297": "minecraft:smooth_stone_slab[type=double,waterlogged=true]",
"7298": "minecraft:smooth_stone_slab[type=double,waterlogged=false]",
"8459": "minecraft:tube_coral[waterlogged=true]",
"8460": "minecraft:brain_coral[waterlogged=true]",
"8461": "minecraft:bubble_coral[waterlogged=true]",
"8462": "minecraft:fire_coral[waterlogged=true]",
"8463": "minecraft:horn_coral[waterlogged=true]",
"8573": "minecraft:conduit[waterlogged=true]"
"1126": "tnt[unstable=false]",
"3075": "oak_sign[rotation=0,waterlogged=true]",
"3076": "oak_sign[rotation=0,waterlogged=false]",
"3077": "oak_sign[rotation=1,waterlogged=true]",
"3078": "oak_sign[rotation=1,waterlogged=false]",
"3079": "oak_sign[rotation=2,waterlogged=true]",
"3080": "oak_sign[rotation=2,waterlogged=false]",
"3081": "oak_sign[rotation=3,waterlogged=true]",
"3082": "oak_sign[rotation=3,waterlogged=false]",
"3083": "oak_sign[rotation=4,waterlogged=true]",
"3084": "oak_sign[rotation=4,waterlogged=false]",
"3085": "oak_sign[rotation=5,waterlogged=true]",
"3086": "oak_sign[rotation=5,waterlogged=false]",
"3087": "oak_sign[rotation=6,waterlogged=true]",
"3088": "oak_sign[rotation=6,waterlogged=false]",
"3089": "oak_sign[rotation=7,waterlogged=true]",
"3090": "oak_sign[rotation=7,waterlogged=false]",
"3091": "oak_sign[rotation=8,waterlogged=true]",
"3092": "oak_sign[rotation=8,waterlogged=false]",
"3093": "oak_sign[rotation=9,waterlogged=true]",
"3094": "oak_sign[rotation=9,waterlogged=false]",
"3095": "oak_sign[rotation=10,waterlogged=true]",
"3096": "oak_sign[rotation=10,waterlogged=false]",
"3097": "oak_sign[rotation=11,waterlogged=true]",
"3098": "oak_sign[rotation=11,waterlogged=false]",
"3099": "oak_sign[rotation=12,waterlogged=true]",
"3100": "oak_sign[rotation=12,waterlogged=false]",
"3101": "oak_sign[rotation=13,waterlogged=true]",
"3102": "oak_sign[rotation=13,waterlogged=false]",
"3103": "oak_sign[rotation=14,waterlogged=true]",
"3104": "oak_sign[rotation=14,waterlogged=false]",
"3105": "oak_sign[rotation=15,waterlogged=true]",
"3106": "oak_sign[rotation=15,waterlogged=false]",
"3269": "oak_wall_sign[facing=north,waterlogged=true]",
"3270": "oak_wall_sign[facing=north,waterlogged=false]",
"3271": "oak_wall_sign[facing=south,waterlogged=true]",
"3272": "oak_wall_sign[facing=south,waterlogged=false]",
"3273": "oak_wall_sign[facing=west,waterlogged=true]",
"3274": "oak_wall_sign[facing=west,waterlogged=false]",
"3275": "oak_wall_sign[facing=east,waterlogged=true]",
"3276": "oak_wall_sign[facing=east,waterlogged=false]",
"7293": "smooth_stone_slab[type=top,waterlogged=true]",
"7294": "smooth_stone_slab[type=top,waterlogged=false]",
"7295": "smooth_stone_slab[type=bottom,waterlogged=true]",
"7296": "smooth_stone_slab[type=bottom,waterlogged=false]",
"7297": "smooth_stone_slab[type=double,waterlogged=true]",
"7298": "smooth_stone_slab[type=double,waterlogged=false]",
"8459": "tube_coral[waterlogged=true]",
"8460": "brain_coral[waterlogged=true]",
"8461": "bubble_coral[waterlogged=true]",
"8462": "fire_coral[waterlogged=true]",
"8463": "horn_coral[waterlogged=true]",
"8573": "conduit[waterlogged=true]"
},
"items": {
"118": "minecraft:smooth_stone_slab",
"536": "minecraft:oak_sign",
"573": "minecraft:red_dye",
"574": "minecraft:green_dye",
"583": "minecraft:yellow_dye"
"118": "smooth_stone_slab",
"536": "oak_sign",
"573": "red_dye",
"574": "green_dye",
"583": "yellow_dye"
}
}

Datei anzeigen

@ -1,20 +1,20 @@
{
"blockstates": {
"11198": "minecraft:bell[attachment=floor,facing=north,powered=false]",
"11199": "minecraft:bell[attachment=floor,facing=south,powered=false]",
"11200": "minecraft:bell[attachment=floor,facing=west,powered=false]",
"11201": "minecraft:bell[attachment=floor,facing=east,powered=false]",
"11202": "minecraft:bell[attachment=ceiling,facing=north,powered=false]",
"11203": "minecraft:bell[attachment=ceiling,facing=south,powered=false]",
"11204": "minecraft:bell[attachment=ceiling,facing=west,powered=false]",
"11205": "minecraft:bell[attachment=ceiling,facing=east,powered=false]",
"11206": "minecraft:bell[attachment=single_wall,facing=north,powered=false]",
"11207": "minecraft:bell[attachment=single_wall,facing=south,powered=false]",
"11208": "minecraft:bell[attachment=single_wall,facing=west,powered=false]",
"11209": "minecraft:bell[attachment=single_wall,facing=east,powered=false]",
"11210": "minecraft:bell[attachment=double_wall,facing=north,powered=false]",
"11211": "minecraft:bell[attachment=double_wall,facing=south,powered=false]",
"11212": "minecraft:bell[attachment=double_wall,facing=west,powered=false]",
"11213": "minecraft:bell[attachment=double_wall,facing=east,powered=false]"
"11198": "bell[attachment=floor,facing=north,powered=false]",
"11199": "bell[attachment=floor,facing=south,powered=false]",
"11200": "bell[attachment=floor,facing=west,powered=false]",
"11201": "bell[attachment=floor,facing=east,powered=false]",
"11202": "bell[attachment=ceiling,facing=north,powered=false]",
"11203": "bell[attachment=ceiling,facing=south,powered=false]",
"11204": "bell[attachment=ceiling,facing=west,powered=false]",
"11205": "bell[attachment=ceiling,facing=east,powered=false]",
"11206": "bell[attachment=single_wall,facing=north,powered=false]",
"11207": "bell[attachment=single_wall,facing=south,powered=false]",
"11208": "bell[attachment=single_wall,facing=west,powered=false]",
"11209": "bell[attachment=single_wall,facing=east,powered=false]",
"11210": "bell[attachment=double_wall,facing=north,powered=false]",
"11211": "bell[attachment=double_wall,facing=south,powered=false]",
"11212": "bell[attachment=double_wall,facing=west,powered=false]",
"11213": "bell[attachment=double_wall,facing=east,powered=false]"
}
}

Datei anzeigen

@ -1,10 +1,10 @@
{
"blockstates": {
"4729": "minecraft:chain[axis=y,waterlogged=true]",
"4730": "minecraft:chain[axis=y,waterlogged=false]",
"14886": "minecraft:lantern[hanging=true,waterlogged=false]",
"14887": "minecraft:lantern[hanging=false,waterlogged=false]",
"14888": "minecraft:soul_lantern[hanging=true,waterlogged=false]",
"14889": "minecraft:soul_lantern[hanging=false,waterlogged=false]"
"4729": "chain[axis=y,waterlogged=true]",
"4730": "chain[axis=y,waterlogged=false]",
"14886": "lantern[hanging=true,waterlogged=false]",
"14887": "lantern[hanging=false,waterlogged=false]",
"14888": "soul_lantern[hanging=true,waterlogged=false]",
"14889": "soul_lantern[hanging=false,waterlogged=false]"
}
}

Datei anzeigen

@ -1,200 +1,200 @@
{
"blockstates": {
"148": "minecraft:oak_leaves[distance=1,persistent=true,waterlogged=false]",
"149": "minecraft:oak_leaves[distance=1,persistent=false,waterlogged=false]",
"150": "minecraft:oak_leaves[distance=2,persistent=true,waterlogged=false]",
"151": "minecraft:oak_leaves[distance=2,persistent=false,waterlogged=false]",
"152": "minecraft:oak_leaves[distance=3,persistent=true,waterlogged=false]",
"153": "minecraft:oak_leaves[distance=3,persistent=false,waterlogged=false]",
"154": "minecraft:oak_leaves[distance=4,persistent=true,waterlogged=false]",
"155": "minecraft:oak_leaves[distance=4,persistent=false,waterlogged=false]",
"156": "minecraft:oak_leaves[distance=5,persistent=true,waterlogged=false]",
"157": "minecraft:oak_leaves[distance=5,persistent=false,waterlogged=false]",
"158": "minecraft:oak_leaves[distance=6,persistent=true,waterlogged=false]",
"159": "minecraft:oak_leaves[distance=6,persistent=false,waterlogged=false]",
"160": "minecraft:oak_leaves[distance=7,persistent=true,waterlogged=false]",
"161": "minecraft:oak_leaves[distance=7,persistent=false,waterlogged=false]",
"162": "minecraft:spruce_leaves[distance=1,persistent=true,waterlogged=false]",
"163": "minecraft:spruce_leaves[distance=1,persistent=false,waterlogged=false]",
"164": "minecraft:spruce_leaves[distance=2,persistent=true,waterlogged=false]",
"165": "minecraft:spruce_leaves[distance=2,persistent=false,waterlogged=false]",
"166": "minecraft:spruce_leaves[distance=3,persistent=true,waterlogged=false]",
"167": "minecraft:spruce_leaves[distance=3,persistent=false,waterlogged=false]",
"168": "minecraft:spruce_leaves[distance=4,persistent=true,waterlogged=false]",
"169": "minecraft:spruce_leaves[distance=4,persistent=false,waterlogged=false]",
"170": "minecraft:spruce_leaves[distance=5,persistent=true,waterlogged=false]",
"171": "minecraft:spruce_leaves[distance=5,persistent=false,waterlogged=false]",
"172": "minecraft:spruce_leaves[distance=6,persistent=true,waterlogged=false]",
"173": "minecraft:spruce_leaves[distance=6,persistent=false,waterlogged=false]",
"174": "minecraft:spruce_leaves[distance=7,persistent=true,waterlogged=false]",
"175": "minecraft:spruce_leaves[distance=7,persistent=false,waterlogged=false]",
"176": "minecraft:birch_leaves[distance=1,persistent=true,waterlogged=false]",
"177": "minecraft:birch_leaves[distance=1,persistent=false,waterlogged=false]",
"178": "minecraft:birch_leaves[distance=2,persistent=true,waterlogged=false]",
"179": "minecraft:birch_leaves[distance=2,persistent=false,waterlogged=false]",
"180": "minecraft:birch_leaves[distance=3,persistent=true,waterlogged=false]",
"181": "minecraft:birch_leaves[distance=3,persistent=false,waterlogged=false]",
"182": "minecraft:birch_leaves[distance=4,persistent=true,waterlogged=false]",
"183": "minecraft:birch_leaves[distance=4,persistent=false,waterlogged=false]",
"184": "minecraft:birch_leaves[distance=5,persistent=true,waterlogged=false]",
"185": "minecraft:birch_leaves[distance=5,persistent=false,waterlogged=false]",
"186": "minecraft:birch_leaves[distance=6,persistent=true,waterlogged=false]",
"187": "minecraft:birch_leaves[distance=6,persistent=false,waterlogged=false]",
"188": "minecraft:birch_leaves[distance=7,persistent=true,waterlogged=false]",
"189": "minecraft:birch_leaves[distance=7,persistent=false,waterlogged=false]",
"190": "minecraft:jungle_leaves[distance=1,persistent=true,waterlogged=false]",
"191": "minecraft:jungle_leaves[distance=1,persistent=false,waterlogged=false]",
"192": "minecraft:jungle_leaves[distance=2,persistent=true,waterlogged=false]",
"193": "minecraft:jungle_leaves[distance=2,persistent=false,waterlogged=false]",
"194": "minecraft:jungle_leaves[distance=3,persistent=true,waterlogged=false]",
"195": "minecraft:jungle_leaves[distance=3,persistent=false,waterlogged=false]",
"196": "minecraft:jungle_leaves[distance=4,persistent=true,waterlogged=false]",
"197": "minecraft:jungle_leaves[distance=4,persistent=false,waterlogged=false]",
"198": "minecraft:jungle_leaves[distance=5,persistent=true,waterlogged=false]",
"199": "minecraft:jungle_leaves[distance=5,persistent=false,waterlogged=false]",
"200": "minecraft:jungle_leaves[distance=6,persistent=true,waterlogged=false]",
"201": "minecraft:jungle_leaves[distance=6,persistent=false,waterlogged=false]",
"202": "minecraft:jungle_leaves[distance=7,persistent=true,waterlogged=false]",
"203": "minecraft:jungle_leaves[distance=7,persistent=false,waterlogged=false]",
"204": "minecraft:acacia_leaves[distance=1,persistent=true,waterlogged=false]",
"205": "minecraft:acacia_leaves[distance=1,persistent=false,waterlogged=false]",
"206": "minecraft:acacia_leaves[distance=2,persistent=true,waterlogged=false]",
"207": "minecraft:acacia_leaves[distance=2,persistent=false,waterlogged=false]",
"208": "minecraft:acacia_leaves[distance=3,persistent=true,waterlogged=false]",
"209": "minecraft:acacia_leaves[distance=3,persistent=false,waterlogged=false]",
"210": "minecraft:acacia_leaves[distance=4,persistent=true,waterlogged=false]",
"211": "minecraft:acacia_leaves[distance=4,persistent=false,waterlogged=false]",
"212": "minecraft:acacia_leaves[distance=5,persistent=true,waterlogged=false]",
"213": "minecraft:acacia_leaves[distance=5,persistent=false,waterlogged=false]",
"214": "minecraft:acacia_leaves[distance=6,persistent=true,waterlogged=false]",
"215": "minecraft:acacia_leaves[distance=6,persistent=false,waterlogged=false]",
"216": "minecraft:acacia_leaves[distance=7,persistent=true,waterlogged=false]",
"217": "minecraft:acacia_leaves[distance=7,persistent=false,waterlogged=false]",
"218": "minecraft:dark_oak_leaves[distance=1,persistent=true,waterlogged=false]",
"219": "minecraft:dark_oak_leaves[distance=1,persistent=false,waterlogged=false]",
"220": "minecraft:dark_oak_leaves[distance=2,persistent=true,waterlogged=false]",
"221": "minecraft:dark_oak_leaves[distance=2,persistent=false,waterlogged=false]",
"222": "minecraft:dark_oak_leaves[distance=3,persistent=true,waterlogged=false]",
"223": "minecraft:dark_oak_leaves[distance=3,persistent=false,waterlogged=false]",
"224": "minecraft:dark_oak_leaves[distance=4,persistent=true,waterlogged=false]",
"225": "minecraft:dark_oak_leaves[distance=4,persistent=false,waterlogged=false]",
"226": "minecraft:dark_oak_leaves[distance=5,persistent=true,waterlogged=false]",
"227": "minecraft:dark_oak_leaves[distance=5,persistent=false,waterlogged=false]",
"228": "minecraft:dark_oak_leaves[distance=6,persistent=true,waterlogged=false]",
"229": "minecraft:dark_oak_leaves[distance=6,persistent=false,waterlogged=false]",
"230": "minecraft:dark_oak_leaves[distance=7,persistent=true,waterlogged=false]",
"231": "minecraft:dark_oak_leaves[distance=7,persistent=false,waterlogged=false]",
"232": "minecraft:azalea_leaves[distance=1,persistent=true,waterlogged=false]",
"233": "minecraft:azalea_leaves[distance=1,persistent=false,waterlogged=false]",
"234": "minecraft:azalea_leaves[distance=2,persistent=true,waterlogged=false]",
"235": "minecraft:azalea_leaves[distance=2,persistent=false,waterlogged=false]",
"236": "minecraft:azalea_leaves[distance=3,persistent=true,waterlogged=false]",
"237": "minecraft:azalea_leaves[distance=3,persistent=false,waterlogged=false]",
"238": "minecraft:azalea_leaves[distance=4,persistent=true,waterlogged=false]",
"239": "minecraft:azalea_leaves[distance=4,persistent=false,waterlogged=false]",
"240": "minecraft:azalea_leaves[distance=5,persistent=true,waterlogged=false]",
"241": "minecraft:azalea_leaves[distance=5,persistent=false,waterlogged=false]",
"242": "minecraft:azalea_leaves[distance=6,persistent=true,waterlogged=false]",
"243": "minecraft:azalea_leaves[distance=6,persistent=false,waterlogged=false]",
"244": "minecraft:azalea_leaves[distance=7,persistent=true,waterlogged=false]",
"245": "minecraft:azalea_leaves[distance=7,persistent=false,waterlogged=false]",
"246": "minecraft:flowering_azalea_leaves[distance=1,persistent=true,waterlogged=false]",
"247": "minecraft:flowering_azalea_leaves[distance=1,persistent=false,waterlogged=false]",
"248": "minecraft:flowering_azalea_leaves[distance=2,persistent=true,waterlogged=false]",
"249": "minecraft:flowering_azalea_leaves[distance=2,persistent=false,waterlogged=false]",
"250": "minecraft:flowering_azalea_leaves[distance=3,persistent=true,waterlogged=false]",
"251": "minecraft:flowering_azalea_leaves[distance=3,persistent=false,waterlogged=false]",
"252": "minecraft:flowering_azalea_leaves[distance=4,persistent=true,waterlogged=false]",
"253": "minecraft:flowering_azalea_leaves[distance=4,persistent=false,waterlogged=false]",
"254": "minecraft:flowering_azalea_leaves[distance=5,persistent=true,waterlogged=false]",
"255": "minecraft:flowering_azalea_leaves[distance=5,persistent=false,waterlogged=false]",
"256": "minecraft:flowering_azalea_leaves[distance=6,persistent=true,waterlogged=false]",
"257": "minecraft:flowering_azalea_leaves[distance=6,persistent=false,waterlogged=false]",
"258": "minecraft:flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false]",
"259": "minecraft:flowering_azalea_leaves[distance=7,persistent=false,waterlogged=false]",
"1416": "minecraft:piston_head[type=normal,facing=north,short=true]",
"1417": "minecraft:piston_head[type=sticky,facing=north,short=true]",
"1418": "minecraft:piston_head[type=normal,facing=north,short=false]",
"1419": "minecraft:piston_head[type=sticky,facing=north,short=false]",
"1420": "minecraft:piston_head[type=normal,facing=east,short=true]",
"1421": "minecraft:piston_head[type=sticky,facing=east,short=true]",
"1422": "minecraft:piston_head[type=normal,facing=east,short=false]",
"1423": "minecraft:piston_head[type=sticky,facing=east,short=false]",
"1424": "minecraft:piston_head[type=normal,facing=south,short=true]",
"1425": "minecraft:piston_head[type=sticky,facing=south,short=true]",
"1426": "minecraft:piston_head[type=normal,facing=south,short=false]",
"1427": "minecraft:piston_head[type=sticky,facing=south,short=false]",
"1428": "minecraft:piston_head[type=normal,facing=west,short=true]",
"1429": "minecraft:piston_head[type=sticky,facing=west,short=true]",
"1430": "minecraft:piston_head[type=normal,facing=west,short=false]",
"1431": "minecraft:piston_head[type=sticky,facing=west,short=false]",
"1432": "minecraft:piston_head[type=normal,facing=up,short=true]",
"1433": "minecraft:piston_head[type=sticky,facing=up,short=true]",
"1434": "minecraft:piston_head[type=normal,facing=up,short=false]",
"1435": "minecraft:piston_head[type=sticky,facing=up,short=false]",
"1436": "minecraft:piston_head[type=normal,facing=down,short=true]",
"1437": "minecraft:piston_head[type=sticky,facing=down,short=true]",
"1438": "minecraft:piston_head[type=normal,facing=down,short=false]",
"1439": "minecraft:piston_head[type=sticky,facing=down,short=false]",
"1456": "minecraft:moving_piston[type=normal,facing=north]",
"1457": "minecraft:moving_piston[type=sticky,facing=north]",
"1458": "minecraft:moving_piston[type=normal,facing=east]",
"1459": "minecraft:moving_piston[type=sticky,facing=east]",
"1460": "minecraft:moving_piston[type=normal,facing=south]",
"1461": "minecraft:moving_piston[type=sticky,facing=south]",
"1462": "minecraft:moving_piston[type=normal,facing=west]",
"1463": "minecraft:moving_piston[type=sticky,facing=west]",
"1464": "minecraft:moving_piston[type=normal,facing=up]",
"1465": "minecraft:moving_piston[type=sticky,facing=up]",
"1466": "minecraft:moving_piston[type=normal,facing=down]",
"1467": "minecraft:moving_piston[type=sticky,facing=down]",
"2090": "minecraft:chest[type=single,facing=north,waterlogged=true]",
"2091": "minecraft:chest[type=single,facing=north,waterlogged=false]",
"2092": "minecraft:chest[type=left,facing=north,waterlogged=true]",
"2093": "minecraft:chest[type=left,facing=north,waterlogged=false]",
"2094": "minecraft:chest[type=right,facing=north,waterlogged=true]",
"2095": "minecraft:chest[type=right,facing=north,waterlogged=false]",
"2096": "minecraft:chest[type=single,facing=south,waterlogged=true]",
"2097": "minecraft:chest[type=single,facing=south,waterlogged=false]",
"2098": "minecraft:chest[type=left,facing=south,waterlogged=true]",
"2099": "minecraft:chest[type=left,facing=south,waterlogged=false]",
"2100": "minecraft:chest[type=right,facing=south,waterlogged=true]",
"2101": "minecraft:chest[type=right,facing=south,waterlogged=false]",
"2102": "minecraft:chest[type=single,facing=west,waterlogged=true]",
"2103": "minecraft:chest[type=single,facing=west,waterlogged=false]",
"2104": "minecraft:chest[type=left,facing=west,waterlogged=true]",
"2105": "minecraft:chest[type=left,facing=west,waterlogged=false]",
"2106": "minecraft:chest[type=right,facing=west,waterlogged=true]",
"2107": "minecraft:chest[type=right,facing=west,waterlogged=false]",
"2108": "minecraft:chest[type=single,facing=east,waterlogged=true]",
"2109": "minecraft:chest[type=single,facing=east,waterlogged=false]",
"2110": "minecraft:chest[type=left,facing=east,waterlogged=true]",
"2111": "minecraft:chest[type=left,facing=east,waterlogged=false]",
"2112": "minecraft:chest[type=right,facing=east,waterlogged=true]",
"2113": "minecraft:chest[type=right,facing=east,waterlogged=false]",
"6828": "minecraft:trapped_chest[type=single,facing=north,waterlogged=true]",
"6829": "minecraft:trapped_chest[type=single,facing=north,waterlogged=false]",
"6830": "minecraft:trapped_chest[type=left,facing=north,waterlogged=true]",
"6831": "minecraft:trapped_chest[type=left,facing=north,waterlogged=false]",
"6832": "minecraft:trapped_chest[type=right,facing=north,waterlogged=true]",
"6833": "minecraft:trapped_chest[type=right,facing=north,waterlogged=false]",
"6834": "minecraft:trapped_chest[type=single,facing=south,waterlogged=true]",
"6835": "minecraft:trapped_chest[type=single,facing=south,waterlogged=false]",
"6836": "minecraft:trapped_chest[type=left,facing=south,waterlogged=true]",
"6837": "minecraft:trapped_chest[type=left,facing=south,waterlogged=false]",
"6838": "minecraft:trapped_chest[type=right,facing=south,waterlogged=true]",
"6839": "minecraft:trapped_chest[type=right,facing=south,waterlogged=false]",
"6840": "minecraft:trapped_chest[type=single,facing=west,waterlogged=true]",
"6841": "minecraft:trapped_chest[type=single,facing=west,waterlogged=false]",
"6842": "minecraft:trapped_chest[type=left,facing=west,waterlogged=true]",
"6843": "minecraft:trapped_chest[type=left,facing=west,waterlogged=false]",
"6844": "minecraft:trapped_chest[type=right,facing=west,waterlogged=true]",
"6845": "minecraft:trapped_chest[type=right,facing=west,waterlogged=false]",
"6846": "minecraft:trapped_chest[type=single,facing=east,waterlogged=true]",
"6847": "minecraft:trapped_chest[type=single,facing=east,waterlogged=false]",
"6848": "minecraft:trapped_chest[type=left,facing=east,waterlogged=true]",
"6849": "minecraft:trapped_chest[type=left,facing=east,waterlogged=false]",
"6850": "minecraft:trapped_chest[type=right,facing=east,waterlogged=true]",
"6851": "minecraft:trapped_chest[type=right,facing=east,waterlogged=false]"
"148": "oak_leaves[distance=1,persistent=true,waterlogged=false]",
"149": "oak_leaves[distance=1,persistent=false,waterlogged=false]",
"150": "oak_leaves[distance=2,persistent=true,waterlogged=false]",
"151": "oak_leaves[distance=2,persistent=false,waterlogged=false]",
"152": "oak_leaves[distance=3,persistent=true,waterlogged=false]",
"153": "oak_leaves[distance=3,persistent=false,waterlogged=false]",
"154": "oak_leaves[distance=4,persistent=true,waterlogged=false]",
"155": "oak_leaves[distance=4,persistent=false,waterlogged=false]",
"156": "oak_leaves[distance=5,persistent=true,waterlogged=false]",
"157": "oak_leaves[distance=5,persistent=false,waterlogged=false]",
"158": "oak_leaves[distance=6,persistent=true,waterlogged=false]",
"159": "oak_leaves[distance=6,persistent=false,waterlogged=false]",
"160": "oak_leaves[distance=7,persistent=true,waterlogged=false]",
"161": "oak_leaves[distance=7,persistent=false,waterlogged=false]",
"162": "spruce_leaves[distance=1,persistent=true,waterlogged=false]",
"163": "spruce_leaves[distance=1,persistent=false,waterlogged=false]",
"164": "spruce_leaves[distance=2,persistent=true,waterlogged=false]",
"165": "spruce_leaves[distance=2,persistent=false,waterlogged=false]",
"166": "spruce_leaves[distance=3,persistent=true,waterlogged=false]",
"167": "spruce_leaves[distance=3,persistent=false,waterlogged=false]",
"168": "spruce_leaves[distance=4,persistent=true,waterlogged=false]",
"169": "spruce_leaves[distance=4,persistent=false,waterlogged=false]",
"170": "spruce_leaves[distance=5,persistent=true,waterlogged=false]",
"171": "spruce_leaves[distance=5,persistent=false,waterlogged=false]",
"172": "spruce_leaves[distance=6,persistent=true,waterlogged=false]",
"173": "spruce_leaves[distance=6,persistent=false,waterlogged=false]",
"174": "spruce_leaves[distance=7,persistent=true,waterlogged=false]",
"175": "spruce_leaves[distance=7,persistent=false,waterlogged=false]",
"176": "birch_leaves[distance=1,persistent=true,waterlogged=false]",
"177": "birch_leaves[distance=1,persistent=false,waterlogged=false]",
"178": "birch_leaves[distance=2,persistent=true,waterlogged=false]",
"179": "birch_leaves[distance=2,persistent=false,waterlogged=false]",
"180": "birch_leaves[distance=3,persistent=true,waterlogged=false]",
"181": "birch_leaves[distance=3,persistent=false,waterlogged=false]",
"182": "birch_leaves[distance=4,persistent=true,waterlogged=false]",
"183": "birch_leaves[distance=4,persistent=false,waterlogged=false]",
"184": "birch_leaves[distance=5,persistent=true,waterlogged=false]",
"185": "birch_leaves[distance=5,persistent=false,waterlogged=false]",
"186": "birch_leaves[distance=6,persistent=true,waterlogged=false]",
"187": "birch_leaves[distance=6,persistent=false,waterlogged=false]",
"188": "birch_leaves[distance=7,persistent=true,waterlogged=false]",
"189": "birch_leaves[distance=7,persistent=false,waterlogged=false]",
"190": "jungle_leaves[distance=1,persistent=true,waterlogged=false]",
"191": "jungle_leaves[distance=1,persistent=false,waterlogged=false]",
"192": "jungle_leaves[distance=2,persistent=true,waterlogged=false]",
"193": "jungle_leaves[distance=2,persistent=false,waterlogged=false]",
"194": "jungle_leaves[distance=3,persistent=true,waterlogged=false]",
"195": "jungle_leaves[distance=3,persistent=false,waterlogged=false]",
"196": "jungle_leaves[distance=4,persistent=true,waterlogged=false]",
"197": "jungle_leaves[distance=4,persistent=false,waterlogged=false]",
"198": "jungle_leaves[distance=5,persistent=true,waterlogged=false]",
"199": "jungle_leaves[distance=5,persistent=false,waterlogged=false]",
"200": "jungle_leaves[distance=6,persistent=true,waterlogged=false]",
"201": "jungle_leaves[distance=6,persistent=false,waterlogged=false]",
"202": "jungle_leaves[distance=7,persistent=true,waterlogged=false]",
"203": "jungle_leaves[distance=7,persistent=false,waterlogged=false]",
"204": "acacia_leaves[distance=1,persistent=true,waterlogged=false]",
"205": "acacia_leaves[distance=1,persistent=false,waterlogged=false]",
"206": "acacia_leaves[distance=2,persistent=true,waterlogged=false]",
"207": "acacia_leaves[distance=2,persistent=false,waterlogged=false]",
"208": "acacia_leaves[distance=3,persistent=true,waterlogged=false]",
"209": "acacia_leaves[distance=3,persistent=false,waterlogged=false]",
"210": "acacia_leaves[distance=4,persistent=true,waterlogged=false]",
"211": "acacia_leaves[distance=4,persistent=false,waterlogged=false]",
"212": "acacia_leaves[distance=5,persistent=true,waterlogged=false]",
"213": "acacia_leaves[distance=5,persistent=false,waterlogged=false]",
"214": "acacia_leaves[distance=6,persistent=true,waterlogged=false]",
"215": "acacia_leaves[distance=6,persistent=false,waterlogged=false]",
"216": "acacia_leaves[distance=7,persistent=true,waterlogged=false]",
"217": "acacia_leaves[distance=7,persistent=false,waterlogged=false]",
"218": "dark_oak_leaves[distance=1,persistent=true,waterlogged=false]",
"219": "dark_oak_leaves[distance=1,persistent=false,waterlogged=false]",
"220": "dark_oak_leaves[distance=2,persistent=true,waterlogged=false]",
"221": "dark_oak_leaves[distance=2,persistent=false,waterlogged=false]",
"222": "dark_oak_leaves[distance=3,persistent=true,waterlogged=false]",
"223": "dark_oak_leaves[distance=3,persistent=false,waterlogged=false]",
"224": "dark_oak_leaves[distance=4,persistent=true,waterlogged=false]",
"225": "dark_oak_leaves[distance=4,persistent=false,waterlogged=false]",
"226": "dark_oak_leaves[distance=5,persistent=true,waterlogged=false]",
"227": "dark_oak_leaves[distance=5,persistent=false,waterlogged=false]",
"228": "dark_oak_leaves[distance=6,persistent=true,waterlogged=false]",
"229": "dark_oak_leaves[distance=6,persistent=false,waterlogged=false]",
"230": "dark_oak_leaves[distance=7,persistent=true,waterlogged=false]",
"231": "dark_oak_leaves[distance=7,persistent=false,waterlogged=false]",
"232": "azalea_leaves[distance=1,persistent=true,waterlogged=false]",
"233": "azalea_leaves[distance=1,persistent=false,waterlogged=false]",
"234": "azalea_leaves[distance=2,persistent=true,waterlogged=false]",
"235": "azalea_leaves[distance=2,persistent=false,waterlogged=false]",
"236": "azalea_leaves[distance=3,persistent=true,waterlogged=false]",
"237": "azalea_leaves[distance=3,persistent=false,waterlogged=false]",
"238": "azalea_leaves[distance=4,persistent=true,waterlogged=false]",
"239": "azalea_leaves[distance=4,persistent=false,waterlogged=false]",
"240": "azalea_leaves[distance=5,persistent=true,waterlogged=false]",
"241": "azalea_leaves[distance=5,persistent=false,waterlogged=false]",
"242": "azalea_leaves[distance=6,persistent=true,waterlogged=false]",
"243": "azalea_leaves[distance=6,persistent=false,waterlogged=false]",
"244": "azalea_leaves[distance=7,persistent=true,waterlogged=false]",
"245": "azalea_leaves[distance=7,persistent=false,waterlogged=false]",
"246": "flowering_azalea_leaves[distance=1,persistent=true,waterlogged=false]",
"247": "flowering_azalea_leaves[distance=1,persistent=false,waterlogged=false]",
"248": "flowering_azalea_leaves[distance=2,persistent=true,waterlogged=false]",
"249": "flowering_azalea_leaves[distance=2,persistent=false,waterlogged=false]",
"250": "flowering_azalea_leaves[distance=3,persistent=true,waterlogged=false]",
"251": "flowering_azalea_leaves[distance=3,persistent=false,waterlogged=false]",
"252": "flowering_azalea_leaves[distance=4,persistent=true,waterlogged=false]",
"253": "flowering_azalea_leaves[distance=4,persistent=false,waterlogged=false]",
"254": "flowering_azalea_leaves[distance=5,persistent=true,waterlogged=false]",
"255": "flowering_azalea_leaves[distance=5,persistent=false,waterlogged=false]",
"256": "flowering_azalea_leaves[distance=6,persistent=true,waterlogged=false]",
"257": "flowering_azalea_leaves[distance=6,persistent=false,waterlogged=false]",
"258": "flowering_azalea_leaves[distance=7,persistent=true,waterlogged=false]",
"259": "flowering_azalea_leaves[distance=7,persistent=false,waterlogged=false]",
"1416": "piston_head[type=normal,facing=north,short=true]",
"1417": "piston_head[type=sticky,facing=north,short=true]",
"1418": "piston_head[type=normal,facing=north,short=false]",
"1419": "piston_head[type=sticky,facing=north,short=false]",
"1420": "piston_head[type=normal,facing=east,short=true]",
"1421": "piston_head[type=sticky,facing=east,short=true]",
"1422": "piston_head[type=normal,facing=east,short=false]",
"1423": "piston_head[type=sticky,facing=east,short=false]",
"1424": "piston_head[type=normal,facing=south,short=true]",
"1425": "piston_head[type=sticky,facing=south,short=true]",
"1426": "piston_head[type=normal,facing=south,short=false]",
"1427": "piston_head[type=sticky,facing=south,short=false]",
"1428": "piston_head[type=normal,facing=west,short=true]",
"1429": "piston_head[type=sticky,facing=west,short=true]",
"1430": "piston_head[type=normal,facing=west,short=false]",
"1431": "piston_head[type=sticky,facing=west,short=false]",
"1432": "piston_head[type=normal,facing=up,short=true]",
"1433": "piston_head[type=sticky,facing=up,short=true]",
"1434": "piston_head[type=normal,facing=up,short=false]",
"1435": "piston_head[type=sticky,facing=up,short=false]",
"1436": "piston_head[type=normal,facing=down,short=true]",
"1437": "piston_head[type=sticky,facing=down,short=true]",
"1438": "piston_head[type=normal,facing=down,short=false]",
"1439": "piston_head[type=sticky,facing=down,short=false]",
"1456": "moving_piston[type=normal,facing=north]",
"1457": "moving_piston[type=sticky,facing=north]",
"1458": "moving_piston[type=normal,facing=east]",
"1459": "moving_piston[type=sticky,facing=east]",
"1460": "moving_piston[type=normal,facing=south]",
"1461": "moving_piston[type=sticky,facing=south]",
"1462": "moving_piston[type=normal,facing=west]",
"1463": "moving_piston[type=sticky,facing=west]",
"1464": "moving_piston[type=normal,facing=up]",
"1465": "moving_piston[type=sticky,facing=up]",
"1466": "moving_piston[type=normal,facing=down]",
"1467": "moving_piston[type=sticky,facing=down]",
"2090": "chest[type=single,facing=north,waterlogged=true]",
"2091": "chest[type=single,facing=north,waterlogged=false]",
"2092": "chest[type=left,facing=north,waterlogged=true]",
"2093": "chest[type=left,facing=north,waterlogged=false]",
"2094": "chest[type=right,facing=north,waterlogged=true]",
"2095": "chest[type=right,facing=north,waterlogged=false]",
"2096": "chest[type=single,facing=south,waterlogged=true]",
"2097": "chest[type=single,facing=south,waterlogged=false]",
"2098": "chest[type=left,facing=south,waterlogged=true]",
"2099": "chest[type=left,facing=south,waterlogged=false]",
"2100": "chest[type=right,facing=south,waterlogged=true]",
"2101": "chest[type=right,facing=south,waterlogged=false]",
"2102": "chest[type=single,facing=west,waterlogged=true]",
"2103": "chest[type=single,facing=west,waterlogged=false]",
"2104": "chest[type=left,facing=west,waterlogged=true]",
"2105": "chest[type=left,facing=west,waterlogged=false]",
"2106": "chest[type=right,facing=west,waterlogged=true]",
"2107": "chest[type=right,facing=west,waterlogged=false]",
"2108": "chest[type=single,facing=east,waterlogged=true]",
"2109": "chest[type=single,facing=east,waterlogged=false]",
"2110": "chest[type=left,facing=east,waterlogged=true]",
"2111": "chest[type=left,facing=east,waterlogged=false]",
"2112": "chest[type=right,facing=east,waterlogged=true]",
"2113": "chest[type=right,facing=east,waterlogged=false]",
"6828": "trapped_chest[type=single,facing=north,waterlogged=true]",
"6829": "trapped_chest[type=single,facing=north,waterlogged=false]",
"6830": "trapped_chest[type=left,facing=north,waterlogged=true]",
"6831": "trapped_chest[type=left,facing=north,waterlogged=false]",
"6832": "trapped_chest[type=right,facing=north,waterlogged=true]",
"6833": "trapped_chest[type=right,facing=north,waterlogged=false]",
"6834": "trapped_chest[type=single,facing=south,waterlogged=true]",
"6835": "trapped_chest[type=single,facing=south,waterlogged=false]",
"6836": "trapped_chest[type=left,facing=south,waterlogged=true]",
"6837": "trapped_chest[type=left,facing=south,waterlogged=false]",
"6838": "trapped_chest[type=right,facing=south,waterlogged=true]",
"6839": "trapped_chest[type=right,facing=south,waterlogged=false]",
"6840": "trapped_chest[type=single,facing=west,waterlogged=true]",
"6841": "trapped_chest[type=single,facing=west,waterlogged=false]",
"6842": "trapped_chest[type=left,facing=west,waterlogged=true]",
"6843": "trapped_chest[type=left,facing=west,waterlogged=false]",
"6844": "trapped_chest[type=right,facing=west,waterlogged=true]",
"6845": "trapped_chest[type=right,facing=west,waterlogged=false]",
"6846": "trapped_chest[type=single,facing=east,waterlogged=true]",
"6847": "trapped_chest[type=single,facing=east,waterlogged=false]",
"6848": "trapped_chest[type=left,facing=east,waterlogged=true]",
"6849": "trapped_chest[type=left,facing=east,waterlogged=false]",
"6850": "trapped_chest[type=right,facing=east,waterlogged=true]",
"6851": "trapped_chest[type=right,facing=east,waterlogged=false]"
}
}

Datei anzeigen

@ -1,7 +1,7 @@
{
"argumenttypes": {
"minecraft:item_enchantment": "minecraft:resource",
"minecraft:mob_effect": "minecraft:resource",
"minecraft:entity_summon": "minecraft:resource"
"item_enchantment": "resource",
"mob_effect": "resource",
"entity_summon": "resource"
}
}

Datei anzeigen

@ -4,7 +4,7 @@ dependencyResolutionManagement {
// configures repositories for all projects
repositories {
maven("https://repo.viaversion.com")
maven("https://papermc.io/repo/repository/maven-public/")
maven("https://repo.papermc.io/repository/maven-public/")
maven("https://oss.sonatype.org/content/repositories/snapshots/")
maven("https://repo.spongepowered.org/repository/maven-public/")
maven("https://libraries.minecraft.net")

Datei anzeigen

@ -1,5 +1,7 @@
dependencies {
implementation(projects.viaversionCommon)
compileOnly(libs.velocity)
compileOnly(libs.velocity) {
exclude("com.velocitypowered", "velocity-brigadier")
}
annotationProcessor(libs.velocity)
}