Java Code Examples for com.mojang.serialization.Dynamic

The following examples show how to use com.mojang.serialization.Dynamic. These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source Project: DataFixerUpper   Author: Mojang   File: DataFix.java    License: MIT License 6 votes vote down vote up
protected <A, B> TypeRewriteRule writeFixAndRead(final String name, final Type<A> type, final Type<B> newType, final Function<Dynamic<?>, Dynamic<?>> fix) {
    return fixTypeEverywhere(name, type, newType, ops -> input -> {
        final Optional<? extends Dynamic<?>> written = type.writeDynamic(ops, input).resultOrPartial(LOGGER::error);
        if (!written.isPresent()) {
            throw new RuntimeException("Could not write the object in " + name);
        }
        final Optional<? extends Pair<Typed<B>, ?>> read = newType.readTyped(fix.apply(written.get())).resultOrPartial(LOGGER::error);
        if (!read.isPresent()) {
            throw new RuntimeException("Could not read the new object in " + name);
        }
        return read.get().getFirst().getValue();
    });
}
 
Example #2
Source Project: multiconnect   Author: Earthcomputer   File: BlockStateReverseFlattening.java    License: MIT License 5 votes vote down vote up
public static Dynamic<?> reverseLookupState(int stateId) {
    if (stateId < 0 || stateId >= IDS_TO_OLD_STATES.length)
        return IDS_TO_OLD_STATES[0];
    Dynamic<?> ret = IDS_TO_OLD_STATES[stateId];
    if (ret == null)
        return IDS_TO_OLD_STATES[0];
    return ret;
}
 
Example #3
Source Project: multiconnect   Author: Earthcomputer   File: BlockStateReverseFlattening.java    License: MIT License 5 votes vote down vote up
public static String reverseLookupStateBlock(int stateId) {
    if (stateId < 0 || stateId >= IDS_TO_OLD_STATES.length)
        return "minecraft:air";
    Dynamic<?> val = IDS_TO_OLD_STATES[stateId];
    if (val == null)
        return "minecraft:air";
    return val.get("Name").asString("");
}
 
Example #4
Source Project: multiconnect   Author: Earthcomputer   File: MixinBlockStateFlattening.java    License: MIT License 5 votes vote down vote up
@Inject(method = "putStates", at = @At("RETURN"))
private static void onPutStates(int id, String newState, String[] oldStates, CallbackInfo ci) {
    Dynamic<?> oldState = BlockStateFlattening.parseState(oldStates.length == 0 ? newState : oldStates[0]);
    BlockStateReverseFlattening.IDS_TO_OLD_STATES[id] = oldState;
    for (String old : oldStates) {
        handleOldState(old);
    }
}
 
Example #5
Source Project: multiconnect   Author: Earthcomputer   File: MixinBlockStateFlattening.java    License: MIT License 5 votes vote down vote up
@Unique
private static void handleOldState(String old) {
    Dynamic<?> oldState = BlockStateFlattening.parseState(old);
    Identifier id = new Identifier(oldState.get("Name").asString(""));
    Map<String, String> properties = oldState.get("Properties").asMap(k -> k.asString(""), v -> v.asString(""));
    BlockStateReverseFlattening.OLD_PROPERTIES.computeIfAbsent(id, k -> properties.keySet().stream().sorted().collect(Collectors.toList()));
    properties.forEach((name, value) -> {
        List<String> values = BlockStateReverseFlattening.OLD_PROPERTY_VALUES.computeIfAbsent(Pair.of(id, name), k -> new ArrayList<>());
        if (!values.contains(value))
            values.add(value);
    });
}
 
Example #6
Source Project: DataFixerUpper   Author: Mojang   File: DataFixerUpper.java    License: MIT License 5 votes vote down vote up
@Override
public <T> Dynamic<T> update(final DSL.TypeReference type, final Dynamic<T> input, final int version, final int newVersion) {
    if (version < newVersion) {
        final Type<?> dataType = getType(type, version);
        final DataResult<T> read = dataType.readAndWrite(input.getOps(), getType(type, newVersion), getRule(version, newVersion), OPTIMIZATION_RULE, input.getValue());
        final T result = read.resultOrPartial(LOGGER::error).orElse(input.getValue());
        return new Dynamic<>(input.getOps(), result);
    }
    return input;
}
 
Example #7
Source Project: DataFixerUpper   Author: Mojang   File: Typed.java    License: MIT License 4 votes vote down vote up
public DataResult<? extends Dynamic<?>> write() {
    return type.writeDynamic(ops, value);
}
 
Example #8
Source Project: DataFixerUpper   Author: Mojang   File: EmptyPartPassthrough.java    License: MIT License 4 votes vote down vote up
@Override
public Optional<Dynamic<?>> point(final DynamicOps<?> ops) {
    return Optional.of(new Dynamic<>(ops));
}
 
Example #9
Source Project: DataFixerUpper   Author: Mojang   File: EmptyPartPassthrough.java    License: MIT License 4 votes vote down vote up
@Override
public Codec<Dynamic<?>> buildCodec() {
    return Codec.PASSTHROUGH;
}
 
Example #10
Source Project: DataFixerUpper   Author: Mojang   File: Type.java    License: MIT License 4 votes vote down vote up
public final <T> DataResult<Pair<A, Dynamic<T>>> read(final Dynamic<T> input) {
    return codec().decode(input.getOps(), input.getValue()).map(v -> v.mapSecond(t -> new Dynamic<>(input.getOps(), t)));
}
 
Example #11
Source Project: DataFixerUpper   Author: Mojang   File: Type.java    License: MIT License 4 votes vote down vote up
public final <T> DataResult<Dynamic<T>> writeDynamic(final DynamicOps<T> ops, final A value) {
    return write(ops, value).map(result -> new Dynamic<>(ops, result));
}
 
Example #12
Source Project: DataFixerUpper   Author: Mojang   File: Type.java    License: MIT License 4 votes vote down vote up
public <T> DataResult<Pair<Typed<A>, T>> readTyped(final Dynamic<T> input) {
    return readTyped(input.getOps(), input.getValue());
}
 
Example #13
Source Project: DataFixerUpper   Author: Mojang   File: DSL.java    License: MIT License 4 votes vote down vote up
static Type<Dynamic<?>> remainderType() {
    return Instances.EMPTY_PASSTHROUGH;
}
 
Example #14
Source Project: DataFixerUpper   Author: Mojang   File: DSL.java    License: MIT License 4 votes vote down vote up
static OpticFinder<Dynamic<?>> remainderFinder() {
    return Instances.REMAINDER_FINDER;
}
 
Example #15
Source Project: worldedit-adapters   Author: EngineHub   File: DataConverters_1_16_R1.java    License: GNU Lesser General Public License v3.0 4 votes vote down vote up
private String fixBlockState(String blockState, int srcVer) {
    NBTTagCompound stateNBT = stateToNBT(blockState);
    Dynamic<NBTBase> dynamic = new Dynamic<>(OPS_NBT, stateNBT);
    NBTTagCompound fixed = (NBTTagCompound) INSTANCE.fixer.update(DataConverterTypes.BLOCK_STATE, dynamic, srcVer, DATA_VERSION).getValue();
    return nbtToState(fixed);
}
 
Example #16
Source Project: worldedit-adapters   Author: EngineHub   File: DataConverters_1_16_R1.java    License: GNU Lesser General Public License v3.0 4 votes vote down vote up
private static String fixName(String key, int srcVer, TypeReference type) {
    return INSTANCE.fixer.update(type, new Dynamic<>(OPS_NBT, NBTTagString.a(key)), srcVer, DATA_VERSION)
            .getValue().asString();
}
 
Example #17
Source Project: worldedit-adapters   Author: EngineHub   File: DataConverters_1_16_R1.java    License: GNU Lesser General Public License v3.0 4 votes vote down vote up
public static NBTTagCompound convert(TypeReference type, NBTTagCompound cmp, int sourceVer, int targetVer) {
    if (sourceVer >= targetVer) {
        return cmp;
    }
    return (NBTTagCompound) INSTANCE.fixer.update(type, new Dynamic<>(OPS_NBT, cmp), sourceVer, targetVer).getValue();
}
 
Example #18
Source Project: DataFixerUpper   Author: Mojang   File: DataFixer.java    License: MIT License votes vote down vote up
<T> Dynamic<T> update(DSL.TypeReference type, Dynamic<T> input, int version, int newVersion);