Fix generics

Changes to be committed:
	modified:   src/main/java/org/dimdev/dimdoors/rift/targets/EscapeTarget.java
	deleted:    src/main/java/org/dimdev/dimdoors/rift/targets/FlowTracker.java
	modified:   src/main/java/org/dimdev/dimdoors/rift/targets/LimboTarget.java
	modified:   src/main/java/org/dimdev/dimdoors/rift/targets/PublicPocketTarget.java
	modified:   src/main/java/org/dimdev/dimdoors/rift/targets/VirtualTarget.java
This commit is contained in:
SD 2020-11-03 10:36:57 +05:30
parent 2c575a55cb
commit 2402b210e8
No known key found for this signature in database
GPG key ID: E36B57EE08544BC5
5 changed files with 25 additions and 53 deletions

View file

@ -18,13 +18,11 @@ import net.minecraft.text.TranslatableText;
import static org.dimdev.dimdoors.util.EntityUtils.chat; import static org.dimdev.dimdoors.util.EntityUtils.chat;
public class EscapeTarget extends VirtualTarget implements EntityTarget { // TODO: createRift option public class EscapeTarget extends VirtualTarget implements EntityTarget { // TODO: createRift option
public static final Codec<EscapeTarget> CODEC = RecordCodecBuilder.create(instance -> { public static final Codec<EscapeTarget> CODEC = RecordCodecBuilder.create(instance -> instance.group(
return instance.group( Codec.BOOL.fieldOf("canEscapeLimbo").forGetter(target -> target.canEscapeLimbo)
Codec.BOOL.fieldOf("canEscapeLimbo").forGetter(target -> target.canEscapeLimbo) ).apply(instance, EscapeTarget::new));
).apply(instance, EscapeTarget::new);
});
protected boolean canEscapeLimbo = false; protected boolean canEscapeLimbo;
public EscapeTarget(boolean canEscapeLimbo) { public EscapeTarget(boolean canEscapeLimbo) {
this.canEscapeLimbo = canEscapeLimbo; this.canEscapeLimbo = canEscapeLimbo;

View file

@ -1,28 +0,0 @@
//package org.dimdev.dimdoors.rift.targets;
//
//import java.util.HashMap;
//import java.util.Map;
//
//import org.dimdev.dimdoors.util.AnnotatedNbt;
//
//import net.minecraft.nbt.CompoundTag;
//import net.minecraft.util.math.Direction;
//
///**
// * Helps flow (fluid, redstone, power) senders to keep track of flow received by the
// * target rift.
// */
//
//public class FlowTracker { // TODO
// //@Saved public Map<Direction, Map<Fluid, Integer>> fluids = new HashMap<>();
// public Map<Direction, Integer> redstone = new HashMap<>();
// public Map<Direction, Integer> power = new HashMap<>();
//
// public void fromTag(CompoundTag nbt) {
// AnnotatedNbt.load(this, nbt);
// }
//
// public CompoundTag toTag(CompoundTag nbt) {
// return AnnotatedNbt.serialize(this);
// }
//}

View file

@ -5,9 +5,10 @@ import com.mojang.serialization.Codec;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
public class LimboTarget extends VirtualTarget implements EntityTarget { public class LimboTarget extends VirtualTarget implements EntityTarget {
public static final Codec<LimboTarget> CODEC = Codec.unit(LimboTarget::new); public static final LimboTarget INSTANCE = new LimboTarget();
public static final Codec<LimboTarget> CODEC = Codec.unit(INSTANCE);
public LimboTarget() { private LimboTarget() {
} }
@Override @Override

View file

@ -9,11 +9,9 @@ import org.dimdev.dimdoors.world.pocket.Pocket;
import org.dimdev.dimdoors.world.pocket.VirtualLocation; import org.dimdev.dimdoors.world.pocket.VirtualLocation;
public class PublicPocketTarget extends RestoringTarget { public class PublicPocketTarget extends RestoringTarget {
public final static Codec<PublicPocketTarget> CODEC = RecordCodecBuilder.create(instance -> { public final static Codec<PublicPocketTarget> CODEC = RecordCodecBuilder.create(instance -> instance.group(
return instance.group( VirtualTarget.CODEC.optionalFieldOf("wrappedDestination", NoneTarget.DUMMY).forGetter(RestoringTarget::getTarget)
VirtualTarget.CODEC.optionalFieldOf("wrappedDestination", NoneTarget.DUMMY).forGetter(RestoringTarget::getTarget) ).apply(instance, PublicPocketTarget::new));
).apply(instance, PublicPocketTarget::new);
});
private VirtualTarget wrappedDestination; private VirtualTarget wrappedDestination;

View file

@ -1,6 +1,9 @@
package org.dimdev.dimdoors.rift.targets; package org.dimdev.dimdoors.rift.targets;
import java.util.Objects;
import com.mojang.serialization.Codec; import com.mojang.serialization.Codec;
import com.mojang.serialization.Lifecycle;
import org.dimdev.dimdoors.util.Location; import org.dimdev.dimdoors.util.Location;
import org.dimdev.dimdoors.util.NbtUtil; import org.dimdev.dimdoors.util.NbtUtil;
import org.dimdev.dimdoors.util.RGBA; import org.dimdev.dimdoors.util.RGBA;
@ -8,19 +11,20 @@ import org.dimdev.dimdoors.util.RGBA;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.RegistryKey;
import net.minecraft.util.registry.SimpleRegistry;
import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder; import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder;
import net.fabricmc.fabric.api.event.registry.RegistryAttribute;
/** /**
* A target that is not an actual object in the game such as a block or a tile * A target that is not an actual object in the game such as a block or a tile
* entity. Only virtual targets can be saved to NBT. * entity. Only virtual targets can be saved to NBT.
*/ */
public abstract class VirtualTarget implements Target { public abstract class VirtualTarget implements Target {
public static final Registry<VirtualTargetType> registry = FabricRegistryBuilder.createSimple(VirtualTargetType.class, new Identifier("dimdoors", "virtual_type")).attribute(RegistryAttribute.MODDED).buildAndRegister(); public static final Registry<VirtualTargetType<?>> REGISTRY = FabricRegistryBuilder.<VirtualTargetType<?>, SimpleRegistry<VirtualTargetType<?>>>from(new SimpleRegistry<>(RegistryKey.ofRegistry(new Identifier("dimdoors", "virtual_type")), Lifecycle.stable())).buildAndRegister();
public static final RGBA COLOR = new RGBA(1, 0, 0, 1); public static final RGBA COLOR = new RGBA(1, 0, 0, 1);
public static Codec<VirtualTarget> CODEC = registry.dispatch(VirtualTarget::getType, VirtualTargetType::codec); public static Codec<VirtualTarget> CODEC = REGISTRY.dispatch(VirtualTarget::getType, VirtualTargetType::codec);
protected Location location; protected Location location;
@ -44,18 +48,17 @@ public abstract class VirtualTarget implements Target {
return this.getType().getColor(); return this.getType().getColor();
} }
@Override
public boolean equals(Object o) { public boolean equals(Object o) {
return o instanceof VirtualTarget && if (this == o) return true;
((VirtualTarget) o).canEqual(this) && if (o == null || this.getClass() != o.getClass()) return false;
(this.location == null ? ((VirtualTarget) o).location == null : ((Object) this.location).equals(((VirtualTarget) o).location)); VirtualTarget that = (VirtualTarget) o;
} return Objects.equals(this.location, that.location);
protected boolean canEqual(Object other) {
return other instanceof VirtualTarget;
} }
@Override
public int hashCode() { public int hashCode() {
return 59 + (this.location == null ? 43 : this.location.hashCode()); return Objects.hash(this.location);
} }
public void setLocation(Location location) { public void setLocation(Location location) {
@ -85,7 +88,7 @@ public abstract class VirtualTarget implements Target {
RGBA getColor(); RGBA getColor();
static <T extends VirtualTarget> VirtualTargetType<T> register(String id, Codec<T> codec, RGBA color) { static <T extends VirtualTarget> VirtualTargetType<T> register(String id, Codec<T> codec, RGBA color) {
return Registry.register(registry, (String) id, new VirtualTargetType<T>() { return Registry.register(REGISTRY, (String) id, new VirtualTargetType<T>() {
@Override @Override
public Codec<T> codec() { public Codec<T> codec() {
return codec; return codec;