Cached tameable owner
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package io.akarin.server.mixin.core;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Overwrite;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
||||
import com.google.common.base.Optional;
|
||||
|
||||
import net.minecraft.server.DataWatcherObject;
|
||||
import net.minecraft.server.Entity;
|
||||
import net.minecraft.server.EntityHorseAbstract;
|
||||
import net.minecraft.server.World;
|
||||
|
||||
@Mixin(value = EntityHorseAbstract.class, remap = false)
|
||||
public abstract class MixinEntityHorseAbstract extends Entity {
|
||||
@Shadow @Final private static DataWatcherObject<Optional<UUID>> bJ;
|
||||
|
||||
@Nullable private Optional<UUID> cachedOwnerId;
|
||||
|
||||
@Overwrite
|
||||
@Nullable public UUID getOwnerUUID() {
|
||||
if (cachedOwnerId == null) cachedOwnerId = datawatcher.get(bJ);
|
||||
return cachedOwnerId.orNull();
|
||||
}
|
||||
|
||||
@Overwrite
|
||||
public void setOwnerUUID(@Nullable UUID uuid) {
|
||||
cachedOwnerId = Optional.fromNullable(uuid);
|
||||
datawatcher.set(bJ, cachedOwnerId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Extends from superclass
|
||||
* @param world
|
||||
*/
|
||||
public MixinEntityHorseAbstract(World world) {
|
||||
super(world);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package io.akarin.server.mixin.core;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Overwrite;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
||||
import com.google.common.base.Optional;
|
||||
|
||||
import net.minecraft.server.DataWatcherObject;
|
||||
import net.minecraft.server.Entity;
|
||||
import net.minecraft.server.EntityTameableAnimal;
|
||||
import net.minecraft.server.World;
|
||||
|
||||
@Mixin(value = EntityTameableAnimal.class, remap = false)
|
||||
public abstract class MixinEntityTameableAnimal extends Entity {
|
||||
@Shadow @Final protected static DataWatcherObject<Optional<UUID>> by;
|
||||
|
||||
@Nullable private Optional<UUID> cachedOwnerId;
|
||||
|
||||
@Overwrite
|
||||
@Nullable public UUID getOwnerUUID() {
|
||||
if (cachedOwnerId == null) cachedOwnerId = datawatcher.get(by);
|
||||
return cachedOwnerId.orNull();
|
||||
}
|
||||
|
||||
@Overwrite
|
||||
public void setOwnerUUID(@Nullable UUID uuid) {
|
||||
cachedOwnerId = Optional.fromNullable(uuid);
|
||||
datawatcher.set(by, cachedOwnerId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Extends from superclass
|
||||
* @param world
|
||||
*/
|
||||
public MixinEntityTameableAnimal(World world) {
|
||||
super(world);
|
||||
}
|
||||
}
|
||||
@@ -21,6 +21,8 @@ import io.akarin.server.core.AkarinGlobalConfig;
|
||||
import io.akarin.server.core.AkarinSlackScheduler;
|
||||
import net.minecraft.server.CrashReport;
|
||||
import net.minecraft.server.CustomFunctionData;
|
||||
import net.minecraft.server.Entity;
|
||||
import net.minecraft.server.EntityTameableAnimal;
|
||||
import net.minecraft.server.ITickable;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.MojangStatisticsGenerator;
|
||||
|
||||
Reference in New Issue
Block a user