Update upstream
This commit is contained in:
parent
ee7fcdafc0
commit
9449d0bd9c
|
@ -241,7 +241,7 @@ public abstract class ServerPlayNetHandlerMixin implements ServerPlayNetHandlerB
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
s = event.getReason();
|
s = event.getReason();
|
||||||
ArclightCaptures.captureQuitMessage(s);
|
ArclightCaptures.captureQuitMessage(event.getLeaveMessage());
|
||||||
Component textComponent = CraftChatMessage.fromString(s, true)[0];
|
Component textComponent = CraftChatMessage.fromString(s, true)[0];
|
||||||
this.connection.send(new ClientboundDisconnectPacket(textComponent), future -> this.connection.disconnect(textComponent));
|
this.connection.send(new ClientboundDisconnectPacket(textComponent), future -> this.connection.disconnect(textComponent));
|
||||||
this.onDisconnect(textComponent);
|
this.onDisconnect(textComponent);
|
||||||
|
|
|
@ -7,7 +7,6 @@ import io.izzel.arclight.common.bridge.core.command.ICommandSourceBridge;
|
||||||
import io.izzel.arclight.common.bridge.core.entity.EntityBridge;
|
import io.izzel.arclight.common.bridge.core.entity.EntityBridge;
|
||||||
import io.izzel.arclight.common.bridge.core.entity.InternalEntityBridge;
|
import io.izzel.arclight.common.bridge.core.entity.InternalEntityBridge;
|
||||||
import io.izzel.arclight.common.bridge.core.entity.LivingEntityBridge;
|
import io.izzel.arclight.common.bridge.core.entity.LivingEntityBridge;
|
||||||
import io.izzel.arclight.common.bridge.core.entity.MobEntityBridge;
|
|
||||||
import io.izzel.arclight.common.bridge.core.entity.player.ServerPlayerEntityBridge;
|
import io.izzel.arclight.common.bridge.core.entity.player.ServerPlayerEntityBridge;
|
||||||
import io.izzel.arclight.common.bridge.core.network.datasync.EntityDataManagerBridge;
|
import io.izzel.arclight.common.bridge.core.network.datasync.EntityDataManagerBridge;
|
||||||
import io.izzel.arclight.common.bridge.core.world.TeleporterBridge;
|
import io.izzel.arclight.common.bridge.core.world.TeleporterBridge;
|
||||||
|
@ -36,7 +35,6 @@ import net.minecraft.world.entity.LivingEntity;
|
||||||
import net.minecraft.world.entity.Mob;
|
import net.minecraft.world.entity.Mob;
|
||||||
import net.minecraft.world.entity.MoverType;
|
import net.minecraft.world.entity.MoverType;
|
||||||
import net.minecraft.world.entity.Pose;
|
import net.minecraft.world.entity.Pose;
|
||||||
import net.minecraft.world.entity.TamableAnimal;
|
|
||||||
import net.minecraft.world.entity.item.ItemEntity;
|
import net.minecraft.world.entity.item.ItemEntity;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
@ -554,20 +552,6 @@ public abstract class EntityMixin implements InternalEntityBridge, EntityBridge,
|
||||||
|
|
||||||
@Inject(method = "load", at = @At(value = "RETURN"))
|
@Inject(method = "load", at = @At(value = "RETURN"))
|
||||||
public void arclight$read$ReadBukkitValues(CompoundTag compound, CallbackInfo ci) {
|
public void arclight$read$ReadBukkitValues(CompoundTag compound, CallbackInfo ci) {
|
||||||
// CraftBukkit start
|
|
||||||
if ((Object) this instanceof LivingEntity entity) {
|
|
||||||
|
|
||||||
this.tickCount = compound.getInt("Spigot.ticksLived");
|
|
||||||
|
|
||||||
// Reset the persistence for tamed animals
|
|
||||||
if (entity instanceof TamableAnimal && !isLevelAtLeast(compound, 2) && !compound.getBoolean("PersistenceRequired")) {
|
|
||||||
Mob entityInsentient = (Mob) entity;
|
|
||||||
((MobEntityBridge) entityInsentient).bridge$setPersistenceRequired(!entityInsentient.removeWhenFarAway(0));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.persist = !compound.contains("Bukkit.persist") || compound.getBoolean("Bukkit.persist");
|
|
||||||
// CraftBukkit end
|
|
||||||
|
|
||||||
// CraftBukkit start - Reset world
|
// CraftBukkit start - Reset world
|
||||||
if ((Object) this instanceof ServerPlayer) {
|
if ((Object) this instanceof ServerPlayer) {
|
||||||
Server server = Bukkit.getServer();
|
Server server = Bukkit.getServer();
|
||||||
|
|
|
@ -34,7 +34,6 @@ import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Overwrite;
|
import org.spongepowered.asm.mixin.Overwrite;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.Unique;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||||
|
@ -184,15 +183,6 @@ public abstract class MobMixin extends LivingEntityMixin implements MobEntityBri
|
||||||
if (canPickup) mobEntity.setCanPickUpLoot(true);
|
if (canPickup) mobEntity.setCanPickUpLoot(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Redirect(method = "readAdditionalSaveData", at = @At(value = "INVOKE", ordinal = 1, target = "Lnet/minecraft/nbt/CompoundTag;getBoolean(Ljava/lang/String;)Z"))
|
|
||||||
public boolean arclight$setIfTrue(CompoundTag nbt, String key) {
|
|
||||||
if (nbt.contains("PersistenceRequired")) {
|
|
||||||
return nbt.getBoolean(key);
|
|
||||||
} else {
|
|
||||||
return !this.removeWhenFarAway(0.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Inject(method = "serverAiStep", cancellable = true, at = @At("HEAD"))
|
@Inject(method = "serverAiStep", cancellable = true, at = @At("HEAD"))
|
||||||
private void arclight$unaware(CallbackInfo ci) {
|
private void arclight$unaware(CallbackInfo ci) {
|
||||||
if (!this.aware) {
|
if (!this.aware) {
|
||||||
|
@ -244,11 +234,6 @@ public abstract class MobMixin extends LivingEntityMixin implements MobEntityBri
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Redirect(method = "checkDespawn", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Mob;removeWhenFarAway(D)Z"))
|
|
||||||
public boolean arclight$checkDespawn(Mob mobEntity, double distanceToClosestPlayer) {
|
|
||||||
return this.overridePersistenceRequired || mobEntity.removeWhenFarAway(distanceToClosestPlayer);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Inject(method = "interact", cancellable = true, at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Mob;dropLeash(ZZ)V"))
|
@Inject(method = "interact", cancellable = true, at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Mob;dropLeash(ZZ)V"))
|
||||||
private void arclight$unleash(Player player, InteractionHand hand, CallbackInfoReturnable<InteractionResult> cir) {
|
private void arclight$unleash(Player player, InteractionHand hand, CallbackInfoReturnable<InteractionResult> cir) {
|
||||||
if (CraftEventFactory.callPlayerUnleashEntityEvent((Mob) (Object) this, player).isCancelled()) {
|
if (CraftEventFactory.callPlayerUnleashEntityEvent((Mob) (Object) this, player).isCancelled()) {
|
||||||
|
@ -351,11 +336,8 @@ public abstract class MobMixin extends LivingEntityMixin implements MobEntityBri
|
||||||
return this.persistenceRequired;
|
return this.persistenceRequired;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Unique private boolean overridePersistenceRequired;
|
|
||||||
|
|
||||||
public void setPersistenceRequired(boolean value) {
|
public void setPersistenceRequired(boolean value) {
|
||||||
this.persistenceRequired = value;
|
this.persistenceRequired = value;
|
||||||
this.overridePersistenceRequired = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
package io.izzel.arclight.common.mixin.core.world.entity.animal;
|
|
||||||
|
|
||||||
import io.izzel.arclight.common.mixin.core.world.entity.PathfinderMobMixin;
|
|
||||||
import net.minecraft.world.entity.animal.AbstractFish;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.Overwrite;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
||||||
|
|
||||||
@Mixin(AbstractFish.class)
|
|
||||||
public abstract class AbstractFishMixin extends PathfinderMobMixin {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author IzzelAliz
|
|
||||||
* @reason
|
|
||||||
*/
|
|
||||||
@Overwrite
|
|
||||||
public boolean removeWhenFarAway(double distanceToClosestPlayer) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Inject(method = "setFromBucket", at = @At("RETURN"))
|
|
||||||
private void arclight$updatePersist(boolean p_203706_1_, CallbackInfo ci) {
|
|
||||||
this.persistenceRequired = this.isPersistenceRequired();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -12,7 +12,6 @@ import net.minecraft.world.InteractionResult;
|
||||||
import net.minecraft.world.damagesource.DamageSource;
|
import net.minecraft.world.damagesource.DamageSource;
|
||||||
import net.minecraft.world.entity.AgeableMob;
|
import net.minecraft.world.entity.AgeableMob;
|
||||||
import net.minecraft.world.entity.ExperienceOrb;
|
import net.minecraft.world.entity.ExperienceOrb;
|
||||||
import net.minecraft.world.entity.TamableAnimal;
|
|
||||||
import net.minecraft.world.entity.animal.Animal;
|
import net.minecraft.world.entity.animal.Animal;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
|
@ -96,9 +95,6 @@ public abstract class AnimalMixin extends AgeableMobMixin implements AnimalEntit
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (child != null) {
|
if (child != null) {
|
||||||
if (child instanceof TamableAnimal && ((TamableAnimal) child).isTame()) {
|
|
||||||
child.persistenceRequired = true;
|
|
||||||
}
|
|
||||||
ServerPlayer serverplayerentity = this.getLoveCause();
|
ServerPlayer serverplayerentity = this.getLoveCause();
|
||||||
if (serverplayerentity == null && animalEntity.getLoveCause() != null) {
|
if (serverplayerentity == null && animalEntity.getLoveCause() != null) {
|
||||||
serverplayerentity = animalEntity.getLoveCause();
|
serverplayerentity = animalEntity.getLoveCause();
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
package io.izzel.arclight.common.mixin.core.world.entity.animal;
|
package io.izzel.arclight.common.mixin.core.world.entity.animal;
|
||||||
|
|
||||||
import io.izzel.arclight.common.mixin.core.world.entity.animal.AnimalMixin;
|
|
||||||
import net.minecraft.world.entity.animal.Chicken;
|
import net.minecraft.world.entity.animal.Chicken;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
@ -11,17 +9,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
@Mixin(Chicken.class)
|
@Mixin(Chicken.class)
|
||||||
public abstract class ChickenMixin extends AnimalMixin {
|
public abstract class ChickenMixin extends AnimalMixin {
|
||||||
|
|
||||||
// @formatter:off
|
|
||||||
@Shadow public abstract boolean isChickenJockey();
|
|
||||||
// @formatter:on
|
|
||||||
|
|
||||||
@Inject(method = "aiStep", at = @At("HEAD"))
|
|
||||||
private void arclight$persist(CallbackInfo ci) {
|
|
||||||
if (this.isChickenJockey()) {
|
|
||||||
this.persistenceRequired = !this.removeWhenFarAway(0.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Inject(method = "aiStep", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/animal/Chicken;spawnAtLocation(Lnet/minecraft/world/level/ItemLike;)Lnet/minecraft/world/entity/item/ItemEntity;"))
|
@Inject(method = "aiStep", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/animal/Chicken;spawnAtLocation(Lnet/minecraft/world/level/ItemLike;)Lnet/minecraft/world/entity/item/ItemEntity;"))
|
||||||
private void arclight$forceDropOn(CallbackInfo ci) {
|
private void arclight$forceDropOn(CallbackInfo ci) {
|
||||||
this.forceDrops = true;
|
this.forceDrops = true;
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
package io.izzel.arclight.common.mixin.core.world.entity.animal;
|
package io.izzel.arclight.common.mixin.core.world.entity.animal;
|
||||||
|
|
||||||
import io.izzel.arclight.common.mixin.core.world.entity.animal.AnimalMixin;
|
|
||||||
import net.minecraft.world.entity.animal.Ocelot;
|
import net.minecraft.world.entity.animal.Ocelot;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Overwrite;
|
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
|
||||||
@Mixin(Ocelot.class)
|
@Mixin(Ocelot.class)
|
||||||
|
@ -14,13 +12,4 @@ public abstract class OcelotMixin extends AnimalMixin {
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
|
|
||||||
public boolean spawnBonus = true;
|
public boolean spawnBonus = true;
|
||||||
|
|
||||||
/**
|
|
||||||
* @author IzzelAliz
|
|
||||||
* @reason
|
|
||||||
*/
|
|
||||||
@Overwrite
|
|
||||||
public boolean removeWhenFarAway(double distanceToClosestPlayer) {
|
|
||||||
return !this.isTrusting() /*&& this.ticksExisted > 2400*/;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,16 +37,6 @@ public abstract class WorldEntitySpawnerMixin {
|
||||||
@Shadow public static void spawnCategoryForChunk(MobCategory p_234967_0_, ServerLevel p_234967_1_, LevelChunk p_234967_2_, NaturalSpawner.SpawnPredicate p_234967_3_, NaturalSpawner.AfterSpawnCallback p_234967_4_) { }
|
@Shadow public static void spawnCategoryForChunk(MobCategory p_234967_0_, ServerLevel p_234967_1_, LevelChunk p_234967_2_, NaturalSpawner.SpawnPredicate p_234967_3_, NaturalSpawner.AfterSpawnCallback p_234967_4_) { }
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
|
|
||||||
@Redirect(method = "createState", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Mob;requiresCustomPersistence()Z"))
|
|
||||||
private static boolean arclight$specialDespawn(Mob mobEntity) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Redirect(method = "createState", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Mob;isPersistenceRequired()Z"))
|
|
||||||
private static boolean arclight$specialDespawn2(Mob mobEntity) {
|
|
||||||
return mobEntity.removeWhenFarAway(0) && mobEntity.isPersistenceRequired();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author IzzelAliz
|
* @author IzzelAliz
|
||||||
* @reason
|
* @reason
|
||||||
|
|
|
@ -123,7 +123,6 @@
|
||||||
"world.entity.ai.goal.TemptGoalMixin",
|
"world.entity.ai.goal.TemptGoalMixin",
|
||||||
"world.entity.ai.village.VillageSiegeMixin",
|
"world.entity.ai.village.VillageSiegeMixin",
|
||||||
"world.entity.ambient.BatMixin",
|
"world.entity.ambient.BatMixin",
|
||||||
"world.entity.animal.AbstractFishMixin",
|
|
||||||
"world.entity.animal.AnimalMixin",
|
"world.entity.animal.AnimalMixin",
|
||||||
"world.entity.animal.Bee_GrowCropGoalMixin",
|
"world.entity.animal.Bee_GrowCropGoalMixin",
|
||||||
"world.entity.animal.Bee_HurtByOtherGoalMixin",
|
"world.entity.animal.Bee_HurtByOtherGoalMixin",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user