25w36b
This commit is contained in:
1 parent
6533716c93
commit
f371e2e8bd
29 files changed
+222
-153
No files matched your search
+1
-1
@@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G
|
||||
|
||||
# Fabric Properties
|
||||
# check https://fabricmc.net/develop/
|
||||
minecraft_version=25w35a
|
||||
minecraft_version=25w36b
|
||||
loader_version=0.16.14
|
||||
jsr305_version=3.0.2
|
||||
fabric_version=0.119.5+1.21.5
|
||||
|
||||
@@ -162,7 +162,7 @@ public class CarpetServer // static for now - easier to handle all around the co
|
||||
LoggerRegistry.playerDisconnected(player);
|
||||
extensions.forEach(e -> e.onPlayerLoggedOut(player));
|
||||
// first case client, second case server
|
||||
CarpetScriptServer runningScriptServer = (player.getServer() == null) ? scriptServer : Vanilla.MinecraftServer_getScriptServer(player.getServer());
|
||||
CarpetScriptServer runningScriptServer = (player.level().getServer() == null) ? scriptServer : Vanilla.MinecraftServer_getScriptServer(player.level().getServer());
|
||||
if (runningScriptServer != null && !runningScriptServer.stopAll) {
|
||||
runningScriptServer.onPlayerLoggedOut(player, reason);
|
||||
}
|
||||
|
||||
@@ -1006,7 +1006,7 @@ public class CarpetSettings
|
||||
{
|
||||
double from = worldBorder.getSize();
|
||||
double to = worldBorder.getLerpTarget();
|
||||
long time = worldBorder.getLerpRemainingTime();
|
||||
long time = worldBorder.getLerpTime();
|
||||
worldBorder.lerpSizeBetween(from, to, time);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -350,12 +350,12 @@ public class PlayerCommand
|
||||
Messenger.m(context.getSource(), "r Cannot shadow fake players");
|
||||
return 0;
|
||||
}
|
||||
if (player.getServer().isSingleplayerOwner(player.nameAndId())) {
|
||||
if (player.level().getServer().isSingleplayerOwner(player.nameAndId())) {
|
||||
Messenger.m(context.getSource(), "r Cannot shadow single-player server owner");
|
||||
return 0;
|
||||
}
|
||||
|
||||
EntityPlayerMPFake.createShadow(player.getServer(), player);
|
||||
EntityPlayerMPFake.createShadow(player.level().getServer(), player);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package carpet.fakes;
|
||||
|
||||
import net.minecraft.client.renderer.blockentity.state.BlockEntityRenderState;
|
||||
|
||||
public interface PistonHeadRenderStateInterface {
|
||||
public BlockEntityRenderState getMovedBERenderState();
|
||||
public void setMovedBERenderState(BlockEntityRenderState state);
|
||||
}
|
||||
@@ -18,10 +18,7 @@ import net.minecraft.world.level.block.EntityBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.piston.MovingPistonBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
import net.minecraft.world.level.chunk.LevelChunk;
|
||||
import net.minecraft.world.level.chunk.LevelChunkSection;
|
||||
import net.minecraft.world.level.chunk.UpgradeData;
|
||||
import net.minecraft.world.level.chunk.*;
|
||||
import net.minecraft.world.level.levelgen.Heightmap;
|
||||
import net.minecraft.world.level.levelgen.blending.BlendingData;
|
||||
import net.minecraft.world.level.lighting.LightEngine;
|
||||
@@ -39,8 +36,8 @@ public abstract class LevelChunk_movableBEMixin extends ChunkAccess implements W
|
||||
@Final
|
||||
Level level;
|
||||
|
||||
public LevelChunk_movableBEMixin(ChunkPos pos, UpgradeData upgradeData, LevelHeightAccessor heightLimitView, Registry<Biome> biome, long inhabitedTime, @Nullable LevelChunkSection[] sectionArrayInitializer, @Nullable BlendingData blendingData) {
|
||||
super(pos, upgradeData, heightLimitView, biome, inhabitedTime, sectionArrayInitializer, blendingData);
|
||||
public LevelChunk_movableBEMixin(ChunkPos chunkPos, UpgradeData upgradeData, LevelHeightAccessor levelHeightAccessor, PalettedContainerFactory palettedContainerFactory, long l, @Nullable LevelChunkSection[] levelChunkSections, @Nullable BlendingData blendingData) {
|
||||
super(chunkPos, upgradeData, levelHeightAccessor, palettedContainerFactory, l, levelChunkSections, blendingData);
|
||||
}
|
||||
|
||||
@Shadow
|
||||
|
||||
@@ -6,14 +6,18 @@ import com.mojang.blaze3d.buffers.GpuBufferSlice;
|
||||
import com.mojang.blaze3d.framegraph.FrameGraphBuilder;
|
||||
import com.mojang.blaze3d.framegraph.FramePass;
|
||||
import net.minecraft.client.Camera;
|
||||
import net.minecraft.client.DeltaTracker;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.LevelRenderState;
|
||||
import net.minecraft.client.renderer.LevelRenderer;
|
||||
import net.minecraft.client.renderer.LevelTargetBundle;
|
||||
import net.minecraft.client.renderer.RenderBuffers;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher;
|
||||
import net.minecraft.client.renderer.culling.Frustum;
|
||||
import net.minecraft.client.renderer.entity.EntityRenderDispatcher;
|
||||
import net.minecraft.client.renderer.feature.FeatureRenderDispatcher;
|
||||
import net.minecraft.util.profiling.ProfilerFiller;
|
||||
import org.joml.Matrix4f;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
@@ -37,16 +41,17 @@ public class LevelRenderer_scarpetRenderMixin
|
||||
}
|
||||
|
||||
@Inject(method = "addMainPass", at = @At("RETURN"))
|
||||
private void renderScarpetThingsLate(FrameGraphBuilder frameGraphBuilder, Camera camera, float f, GpuBufferSlice fogParameters, CallbackInfo ci)
|
||||
private void renderScarpetThingsLate(FrameGraphBuilder frameGraphBuilder, Frustum frustum, Camera camera, Matrix4f matrix4f, GpuBufferSlice gpuBufferSlice, boolean bl, LevelRenderState levelRenderState, DeltaTracker deltaTracker, ProfilerFiller profilerFiller, CallbackInfo ci)
|
||||
{
|
||||
// in normal circumstances we want to render shapes at the very end so it appears correctly behind stuff.
|
||||
// we might actually not need to play with render hooks here.
|
||||
//if (!FabricAPIHooks.WORLD_RENDER_EVENTS && CarpetClient.shapes != null )
|
||||
if (CarpetClient.shapes != null)
|
||||
{
|
||||
final float deltaPartialTick = deltaTracker.getGameTimeDeltaPartialTick(false);
|
||||
FramePass pass = frameGraphBuilder.addPass("scarpet_shapes");
|
||||
targets.main = pass.readsAndWrites(targets.main);
|
||||
pass.executes(() -> CarpetClient.shapes.render(null, camera, f));
|
||||
pass.executes(() -> CarpetClient.shapes.render(null, camera, deltaPartialTick));
|
||||
featureRenderDispatcher.renderAllFeatures();
|
||||
renderBuffers.bufferSource().endLastBatch();
|
||||
}
|
||||
|
||||
@@ -23,6 +23,6 @@ public abstract class LivingEntity_cleanLogsMixin extends Entity
|
||||
@Redirect(method = "die", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;hasCustomName()Z"))
|
||||
private boolean shouldLogDeaths(LivingEntity livingEntity)
|
||||
{
|
||||
return livingEntity.hasCustomName() && CarpetSettings.cleanLogs && livingEntity.getServer().getGameRules().getBoolean(GameRules.RULE_SHOWDEATHMESSAGES);
|
||||
return livingEntity.hasCustomName() && CarpetSettings.cleanLogs && livingEntity.level().getServer().getGameRules().getBoolean(GameRules.RULE_SHOWDEATHMESSAGES);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package carpet.mixins;
|
||||
|
||||
import carpet.fakes.PistonHeadRenderStateInterface;
|
||||
import net.minecraft.client.renderer.blockentity.state.BlockEntityRenderState;
|
||||
import net.minecraft.client.renderer.blockentity.state.PistonHeadRenderState;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
|
||||
@Mixin(PistonHeadRenderState.class)
|
||||
public class PistonHeadRenderState_movableBEMixin implements PistonHeadRenderStateInterface {
|
||||
private BlockEntityRenderState blockEntityRenderState;
|
||||
@Override
|
||||
public BlockEntityRenderState getMovedBERenderState() {
|
||||
return blockEntityRenderState;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMovedBERenderState(BlockEntityRenderState state) {
|
||||
this.blockEntityRenderState = state;
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,16 @@
|
||||
package carpet.mixins;
|
||||
|
||||
import carpet.CarpetSettings;
|
||||
import carpet.fakes.PistonHeadRenderStateInterface;
|
||||
import carpet.fakes.PistonBlockEntityInterface;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.SubmitNodeCollector;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||
import net.minecraft.client.renderer.blockentity.PistonHeadRenderer;
|
||||
import net.minecraft.client.renderer.blockentity.state.BlockEntityRenderState;
|
||||
import net.minecraft.client.renderer.blockentity.state.PistonHeadRenderState;
|
||||
import net.minecraft.client.renderer.feature.ModelFeatureRenderer;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.piston.PistonMovingBlockEntity;
|
||||
@@ -17,48 +19,51 @@ import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||
|
||||
@Mixin(PistonHeadRenderer.class)
|
||||
public abstract class PistonHeadRenderer_movableBEMixin implements BlockEntityRenderer<PistonMovingBlockEntity>
|
||||
public abstract class PistonHeadRenderer_movableBEMixin implements BlockEntityRenderer<PistonMovingBlockEntity, PistonHeadRenderState>
|
||||
{
|
||||
BlockEntityRenderDispatcher dispatcher;
|
||||
@Inject(method = "<init>", at = @At("TAIL"))
|
||||
private void onInitCM(BlockEntityRendererProvider.Context arguments, CallbackInfo ci)
|
||||
private void onInitCM(CallbackInfo ci)
|
||||
{
|
||||
dispatcher = arguments.blockEntityRenderDispatcher();
|
||||
dispatcher = Minecraft.getInstance().getBlockEntityRenderDispatcher();
|
||||
}
|
||||
|
||||
@Inject(method = "submit(Lnet/minecraft/world/level/block/piston/PistonMovingBlockEntity;FLcom/mojang/blaze3d/vertex/PoseStack;IILnet/minecraft/world/phys/Vec3;Lnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;Lnet/minecraft/client/renderer/SubmitNodeCollector;)V", at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/client/renderer/blockentity/PistonHeadRenderer;submitMovingBlock(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Holder;Lnet/minecraft/world/level/Level;)V",
|
||||
ordinal = 3))
|
||||
private void updateRenderBool(PistonMovingBlockEntity pistonBlockEntity_1, float f, PoseStack poseStack, int i, int j, Vec3 vec3, ModelFeatureRenderer.CrumblingOverlay crumblingOverlay, SubmitNodeCollector submitNodeCollector, CallbackInfo ci)
|
||||
//private void updateRenderBool(PistonBlockEntity pistonBlockEntity_1, double double_1, double double_2, double double_3, float float_1, class_4587 class_4587_1, class_4597 class_4597_1, int int_1, CallbackInfo ci)
|
||||
@Inject(method = "extractRenderState(Lnet/minecraft/world/level/block/piston/PistonMovingBlockEntity;Lnet/minecraft/client/renderer/blockentity/state/PistonHeadRenderState;FLnet/minecraft/world/phys/Vec3;Lnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V",
|
||||
at = @At("RETURN"))
|
||||
private void addBE(PistonMovingBlockEntity pistonMovingBlockEntity, PistonHeadRenderState pistonHeadRenderState, float f, Vec3 vec3, ModelFeatureRenderer.CrumblingOverlay crumblingOverlay, CallbackInfo ci)
|
||||
{
|
||||
if (!((PistonBlockEntityInterface) pistonBlockEntity_1).isRenderModeSet())
|
||||
((PistonBlockEntityInterface) pistonBlockEntity_1).setRenderCarriedBlockEntity(CarpetSettings.movableBlockEntities && ((PistonBlockEntityInterface) pistonBlockEntity_1).getCarriedBlockEntity() != null);
|
||||
}
|
||||
|
||||
|
||||
@Inject(method = "submit(Lnet/minecraft/world/level/block/piston/PistonMovingBlockEntity;FLcom/mojang/blaze3d/vertex/PoseStack;IILnet/minecraft/world/phys/Vec3;Lnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;Lnet/minecraft/client/renderer/SubmitNodeCollector;)V", at = @At("RETURN"), locals = LocalCapture.NO_CAPTURE)
|
||||
private void endMethod(PistonMovingBlockEntity pistonBlockEntity_1, float partialTicks, PoseStack matrixStack_1, int i, int j, Vec3 vec3, ModelFeatureRenderer.CrumblingOverlay crumblingOverlay, SubmitNodeCollector submitNodeCollector, CallbackInfo ci)
|
||||
//private void endMethod3576(PistonMovingBlockEntity pistonBlockEntity_1, float partialTicks, PoseStack matrixStack_1, MultiBufferSource layeredVertexConsumerStorage_1, int int_1, int init_2, Vec3 cameraPos, CallbackInfo ci)
|
||||
{
|
||||
if (((PistonBlockEntityInterface) pistonBlockEntity_1).getRenderCarriedBlockEntity())
|
||||
if (CarpetSettings.movableBlockEntities)
|
||||
{
|
||||
BlockEntity carriedBlockEntity = ((PistonBlockEntityInterface) pistonBlockEntity_1).getCarriedBlockEntity();
|
||||
if (carriedBlockEntity != null)
|
||||
BlockEntity be = ((PistonBlockEntityInterface) pistonMovingBlockEntity).getCarriedBlockEntity();
|
||||
if (be != null)
|
||||
{
|
||||
// maybe ??? carriedBlockEntity.setPos(pistonBlockEntity_1.getPos());
|
||||
//((BlockEntityRenderDispatcherInterface) BlockEntityRenderDispatcher.INSTANCE).renderBlockEntityOffset(carriedBlockEntity, float_1, int_1, BlockRenderLayer.field_20799, bufferBuilder_1, pistonBlockEntity_1.getRenderOffsetX(float_1), pistonBlockEntity_1.getRenderOffsetY(float_1), pistonBlockEntity_1.getRenderOffsetZ(float_1));
|
||||
matrixStack_1.translate(
|
||||
pistonBlockEntity_1.getXOff(partialTicks),
|
||||
pistonBlockEntity_1.getYOff(partialTicks),
|
||||
pistonBlockEntity_1.getZOff(partialTicks)
|
||||
);
|
||||
dispatcher.submit(carriedBlockEntity, partialTicks, matrixStack_1, crumblingOverlay, submitNodeCollector);
|
||||
|
||||
float progress = pistonMovingBlockEntity.getProgress(f);
|
||||
//System.out.println("progress: " + progress);
|
||||
//if (progress != 0) {
|
||||
BlockEntityRenderState res = dispatcher.tryExtractRenderState(be, f, crumblingOverlay);
|
||||
if (res != null) {
|
||||
((PistonHeadRenderStateInterface) pistonHeadRenderState).setMovedBERenderState(res);
|
||||
}
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "submit(Lnet/minecraft/client/renderer/blockentity/state/PistonHeadRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;)V",
|
||||
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitMovingBlock(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/block/MovingBlockRenderState;)V",
|
||||
ordinal = 0))
|
||||
private void endMethod(PistonHeadRenderState pistonHeadRenderState, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CallbackInfo ci)
|
||||
//private void endMethod(PistonMovingBlockEntity pistonBlockEntity_1, float partialTicks, PoseStack matrixStack_1, int i, int j, Vec3 vec3, ModelFeatureRenderer.CrumblingOverlay crumblingOverlay, SubmitNodeCollector submitNodeCollector, CallbackInfo ci)
|
||||
//private void endMethod3576(PistonMovingBlockEntity pistonBlockEntity_1, float partialTicks, PoseStack matrixStack_1, MultiBufferSource layeredVertexConsumerStorage_1, int int_1, int init_2, Vec3 cameraPos, CallbackInfo ci)
|
||||
{
|
||||
if (pistonHeadRenderState instanceof PistonHeadRenderStateInterface mbrsi && pistonHeadRenderState.block != null)
|
||||
if (mbrsi.getMovedBERenderState() != null) {
|
||||
BlockEntityRenderState res = mbrsi.getMovedBERenderState();
|
||||
if (res != null) {
|
||||
dispatcher.submit(res, poseStack, submitNodeCollector);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,7 +32,7 @@ public abstract class Player_antiCheatDisabledMixin extends LivingEntity
|
||||
@Inject(method = "tryToStartFallFlying", at = @At("HEAD"), cancellable = true)
|
||||
private void allowDeploys(CallbackInfoReturnable<Boolean> cir)
|
||||
{
|
||||
if (CarpetSettings.antiCheatDisabled && (Object)this instanceof ServerPlayer sp && sp.getServer().isDedicatedServer())
|
||||
if (CarpetSettings.antiCheatDisabled && (Object)this instanceof ServerPlayer sp && sp.level().getServer().isDedicatedServer())
|
||||
{
|
||||
ItemStack itemStack_1 = equipment.get(EquipmentSlot.CHEST);
|
||||
if (itemStack_1.getItem() == Items.ELYTRA && !itemStack_1.nextDamageWillBreak()) {
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package carpet.mixins;
|
||||
|
||||
import carpet.CarpetSettings;
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
@@ -21,76 +23,21 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
@Mixin(Player.class)
|
||||
public abstract class Player_parrotMixin extends LivingEntity
|
||||
{
|
||||
@Shadow @Final public Abilities abilities;
|
||||
|
||||
@Shadow protected abstract void removeEntitiesOnShoulder();
|
||||
|
||||
@Shadow public abstract CompoundTag getShoulderEntityLeft();
|
||||
|
||||
@Shadow protected abstract void setShoulderEntityLeft(CompoundTag NbtCompound_1);
|
||||
|
||||
@Shadow protected abstract void setShoulderEntityRight(CompoundTag NbtCompound_1);
|
||||
|
||||
@Shadow public abstract CompoundTag getShoulderEntityRight();
|
||||
|
||||
@Shadow protected abstract void respawnEntityOnShoulder(CompoundTag entityNbt);
|
||||
protected Player_parrotMixin(EntityType<? extends LivingEntity> entityType, Level level) {
|
||||
super(entityType, level);
|
||||
}
|
||||
|
||||
protected Player_parrotMixin(EntityType<? extends LivingEntity> entityType_1, Level world_1)
|
||||
{
|
||||
super(entityType_1, world_1);
|
||||
}
|
||||
|
||||
@Redirect(method = "aiStep", at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/world/entity/player/Player;removeEntitiesOnShoulder()V"))
|
||||
private void cancelDropShoulderEntities1(Player playerEntity)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Inject(method = "aiStep", at = @At(value = "INVOKE", shift = At.Shift.AFTER, ordinal = 1,
|
||||
target = "Lnet/minecraft/world/entity/player/Player;playShoulderEntityAmbientSound(Lnet/minecraft/nbt/CompoundTag;)V"))
|
||||
private void onTickMovement(CallbackInfo ci)
|
||||
{
|
||||
boolean parrots_will_drop = !CarpetSettings.persistentParrots || this.abilities.invulnerable;
|
||||
if (!this.level().isClientSide() && ((parrots_will_drop && this.fallDistance > 0.5F) || this.isInWater() || this.abilities.flying || isSleeping()))
|
||||
{
|
||||
this.removeEntitiesOnShoulder();
|
||||
}
|
||||
}
|
||||
|
||||
@Redirect(method = "hurtServer", at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/world/entity/player/Player;removeEntitiesOnShoulder()V"))
|
||||
private void cancelDropShoulderEntities2(Player playerEntity)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected void dismount_left()
|
||||
{
|
||||
respawnEntityOnShoulder(this.getShoulderEntityLeft());
|
||||
this.setShoulderEntityLeft(new CompoundTag());
|
||||
}
|
||||
|
||||
protected void dismount_right()
|
||||
{
|
||||
respawnEntityOnShoulder(this.getShoulderEntityRight());
|
||||
this.setShoulderEntityRight(new CompoundTag());
|
||||
}
|
||||
|
||||
@Inject(method = "hurtServer", at = @At(value = "INVOKE", shift = At.Shift.BEFORE,
|
||||
target = "Lnet/minecraft/world/entity/player/Player;removeEntitiesOnShoulder()V"))
|
||||
private void onDamage(ServerLevel serverLevel, DamageSource damageSource_1, float float_1, CallbackInfoReturnable<Boolean> cir)
|
||||
{
|
||||
if (CarpetSettings.persistentParrots && !this.isShiftKeyDown())
|
||||
{
|
||||
if (this.random.nextFloat() < ((float_1)/15.0) )
|
||||
{
|
||||
this.dismount_left();
|
||||
}
|
||||
if (this.random.nextFloat() < ((float_1)/15.0) )
|
||||
{
|
||||
this.dismount_right();
|
||||
}
|
||||
if (!CarpetSettings.persistentParrots) {
|
||||
removeEntitiesOnShoulder();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -257,7 +257,7 @@ public class ServerGamePacketListenerImpl_scarpetEventsMixin
|
||||
{
|
||||
if (PLAYER_CHOOSES_RECIPE.isNeeded())
|
||||
{
|
||||
RecipeManager.ServerDisplayInfo displayInfo = player.getServer().getRecipeManager().getRecipeFromDisplay(packet.recipe());
|
||||
RecipeManager.ServerDisplayInfo displayInfo = player.level().getServer().getRecipeManager().getRecipeFromDisplay(packet.recipe());
|
||||
if (displayInfo == null) {
|
||||
return;
|
||||
}
|
||||
@@ -268,7 +268,7 @@ public class ServerGamePacketListenerImpl_scarpetEventsMixin
|
||||
@Inject(method = "handleSetCarriedItem", at = @At("HEAD"))
|
||||
private void onUpdatedSelectedSLot(ServerboundSetCarriedItemPacket packet, CallbackInfo ci)
|
||||
{
|
||||
if (PLAYER_SWITCHES_SLOT.isNeeded() && player.getServer() != null && player.getServer().isSameThread())
|
||||
if (PLAYER_SWITCHES_SLOT.isNeeded() && player.level().getServer() != null && player.level().getServer().isSameThread())
|
||||
{
|
||||
PLAYER_SWITCHES_SLOT.onSlotSwitch(player, player.getInventory().getSelectedSlot(), packet.getSlot());
|
||||
}
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
package carpet.mixins;
|
||||
|
||||
import carpet.CarpetSettings;
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.Level;
|
||||
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.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
@Mixin(ServerPlayer.class)
|
||||
public abstract class ServerPlayer_parrotMixin extends Player {
|
||||
|
||||
@Shadow
|
||||
public abstract CompoundTag getShoulderEntityLeft();
|
||||
|
||||
@Shadow protected abstract void setShoulderEntityLeft(CompoundTag NbtCompound_1);
|
||||
|
||||
@Shadow protected abstract void setShoulderEntityRight(CompoundTag NbtCompound_1);
|
||||
|
||||
@Shadow public abstract CompoundTag getShoulderEntityRight();
|
||||
|
||||
@Shadow protected abstract void respawnEntityOnShoulder(CompoundTag entityNbt);
|
||||
|
||||
public ServerPlayer_parrotMixin(Level level, GameProfile gameProfile) {
|
||||
super(level, gameProfile);
|
||||
}
|
||||
|
||||
|
||||
protected void dismount_left()
|
||||
{
|
||||
respawnEntityOnShoulder(this.getShoulderEntityLeft());
|
||||
this.setShoulderEntityLeft(new CompoundTag());
|
||||
}
|
||||
|
||||
protected void dismount_right()
|
||||
{
|
||||
respawnEntityOnShoulder(this.getShoulderEntityRight());
|
||||
this.setShoulderEntityRight(new CompoundTag());
|
||||
}
|
||||
|
||||
@Inject(method = "hurtServer", at = @At("HEAD"))
|
||||
private void onDamage(ServerLevel serverLevel, DamageSource damageSource_1, float float_1, CallbackInfoReturnable<Boolean> cir)
|
||||
{
|
||||
if (CarpetSettings.persistentParrots && !this.isShiftKeyDown())
|
||||
{
|
||||
if (this.random.nextFloat() < ((float_1)/15.0) )
|
||||
{
|
||||
this.dismount_left();
|
||||
}
|
||||
if (this.random.nextFloat() < ((float_1)/15.0) )
|
||||
{
|
||||
this.dismount_right();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Redirect(method = "handleShoulderEntities", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;removeEntitiesOnShoulder()V"))
|
||||
private void onRespawnParrotsInstead(ServerPlayer serverPlayer)
|
||||
{
|
||||
if (!CarpetSettings.persistentParrots)
|
||||
{
|
||||
this.removeEntitiesOnShoulder();
|
||||
return;
|
||||
}
|
||||
if (((getAbilities().invulnerable && this.fallDistance > 0.5F) || this.isInWater() || this.getAbilities().flying || isSleeping() || isInPowderSnow))
|
||||
{
|
||||
this.removeEntitiesOnShoulder();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package carpet.mixins;
|
||||
import carpet.CarpetSettings;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityWithBoundingBoxRenderer;
|
||||
import net.minecraft.client.renderer.blockentity.state.BlockEntityWithBoundingBoxRenderState;
|
||||
import net.minecraft.world.level.block.entity.StructureBlockEntity;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
@@ -10,7 +11,7 @@ import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
@Mixin(BlockEntityWithBoundingBoxRenderer.class)
|
||||
public abstract class StructureBlockRenderer_mixin implements BlockEntityRenderer<StructureBlockEntity>
|
||||
public abstract class StructureBlockRenderer_mixin implements BlockEntityRenderer<StructureBlockEntity, BlockEntityWithBoundingBoxRenderState>
|
||||
{
|
||||
@Inject(method = "getViewDistance", at = @At("HEAD"), cancellable = true)
|
||||
void newLimit(CallbackInfoReturnable<Integer> cir)
|
||||
|
||||
@@ -61,7 +61,7 @@ public class ServerNetworkHandler
|
||||
{
|
||||
CarpetSettings.LOG.warn("Player " + playerEntity.getName().getString() + " joined with another carpet version: " + version);
|
||||
}
|
||||
DataBuilder data = DataBuilder.create(playerEntity.getServer()); // tickrate related settings are sent on world change
|
||||
DataBuilder data = DataBuilder.create(playerEntity.level().getServer()); // tickrate related settings are sent on world change
|
||||
CarpetServer.forEachManager(sm -> sm.getCarpetRules().forEach(data::withRule));
|
||||
playerEntity.connection.send(data.build());
|
||||
}
|
||||
@@ -84,13 +84,13 @@ public class ServerNetworkHandler
|
||||
List<Component> output = new ArrayList<>();
|
||||
Component[] error = {null};
|
||||
int[] returnValue = {0};
|
||||
if (player.getServer() == null)
|
||||
if (player.level().getServer() == null)
|
||||
{
|
||||
error[0] = Component.literal("No Server");
|
||||
}
|
||||
else
|
||||
{
|
||||
player.getServer().getCommands().performPrefixedCommand(
|
||||
player.level().getServer().getCommands().performPrefixedCommand(
|
||||
new SnoopyCommandSource(player, error, output, returnValue), command
|
||||
);
|
||||
}
|
||||
@@ -110,7 +110,7 @@ public class ServerNetworkHandler
|
||||
{
|
||||
result.put("output", outputResult);
|
||||
}
|
||||
player.connection.send(DataBuilder.create(player.getServer()).withCustomNbt("clientCommand", result).build());
|
||||
player.connection.send(DataBuilder.create(player.level().getServer()).withCustomNbt("clientCommand", result).build());
|
||||
// run command plug to command output,
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ public class ServerNetworkHandler
|
||||
}
|
||||
for (ServerPlayer player : remoteCarpetPlayers.keySet())
|
||||
{
|
||||
player.connection.send(DataBuilder.create(player.getServer()).withRule(rule).build());
|
||||
player.connection.send(DataBuilder.create(player.level().getServer()).withRule(rule).build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,7 +149,7 @@ public class ServerNetworkHandler
|
||||
}
|
||||
for (ServerPlayer player : validCarpetPlayers)
|
||||
{
|
||||
player.connection.send(DataBuilder.create(player.getServer()).withCustomNbt(command, data).build());
|
||||
player.connection.send(DataBuilder.create(player.level().getServer()).withCustomNbt(command, data).build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ public class ServerNetworkHandler
|
||||
{
|
||||
if (isValidCarpetPlayer(player))
|
||||
{
|
||||
player.connection.send(DataBuilder.create(player.getServer()).withCustomNbt(command, data).build());
|
||||
player.connection.send(DataBuilder.create(player.level().getServer()).withCustomNbt(command, data).build());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ public class EntityPlayerMPFake extends ServerPlayer
|
||||
|
||||
public static EntityPlayerMPFake createShadow(MinecraftServer server, ServerPlayer player)
|
||||
{
|
||||
player.getServer().getPlayerList().remove(player);
|
||||
player.level().getServer().getPlayerList().remove(player);
|
||||
player.connection.disconnect(Component.translatable("multiplayer.disconnect.duplicate_login"));
|
||||
ServerLevel worldIn = player.level();//.getWorld(player.dimension);
|
||||
GameProfile gameprofile = player.getGameProfile();
|
||||
@@ -182,7 +182,7 @@ public class EntityPlayerMPFake extends ServerPlayer
|
||||
if (reason.getContents() instanceof TranslatableContents text && text.getKey().equals("multiplayer.disconnect.duplicate_login")) {
|
||||
this.connection.onDisconnect(new DisconnectionDetails(reason));
|
||||
} else {
|
||||
this.getServer().schedule(new TickTask(this.getServer().getTickCount(), () -> {
|
||||
this.level().getServer().schedule(new TickTask(this.level().getServer().getTickCount(), () -> {
|
||||
this.connection.onDisconnect(new DisconnectionDetails(reason));
|
||||
}));
|
||||
}
|
||||
@@ -191,7 +191,7 @@ public class EntityPlayerMPFake extends ServerPlayer
|
||||
@Override
|
||||
public void tick()
|
||||
{
|
||||
if (this.getServer().getTickCount() % 10 == 0)
|
||||
if (this.level().getServer().getTickCount() % 10 == 0)
|
||||
{
|
||||
this.connection.resetPosition();
|
||||
this.level().getChunkSource().move(this);
|
||||
|
||||
@@ -81,7 +81,7 @@ public class TickSyncedBorderExtent implements WorldBorder.BorderExtent
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getLerpRemainingTime()
|
||||
public long getLerpTime()
|
||||
{
|
||||
// Rough estimation
|
||||
MinecraftServer server = CarpetServer.minecraft_server;
|
||||
@@ -143,10 +143,7 @@ public class TickSyncedBorderExtent implements WorldBorder.BorderExtent
|
||||
{
|
||||
// We do not want to update DelegateBorderChangeListener
|
||||
// This updates borders in other dimensions
|
||||
if (!(listener instanceof BorderChangeListener.DelegateBorderChangeListener))
|
||||
{
|
||||
listener.onBorderSizeLerping(this.border, this.from, this.to, this.realDuration);
|
||||
}
|
||||
listener.onLerpSize(this.border, this.from, this.to, this.realDuration);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -886,7 +886,7 @@ public class CarpetEventServer
|
||||
new NumericValue(amount),
|
||||
StringValue.of(source.getMsgId()),
|
||||
source.getEntity() == null ? Value.NULL : new EntityValue(source.getEntity())
|
||||
), () -> target.getServer().createCommandSourceStack());
|
||||
), () -> target.level().getServer().createCommandSourceStack());
|
||||
}
|
||||
};
|
||||
public static final Event PLAYER_DEALS_DAMAGE = new Event("player_deals_damage", 3, false)
|
||||
@@ -896,7 +896,7 @@ public class CarpetEventServer
|
||||
{
|
||||
return handler.call(() ->
|
||||
Arrays.asList(new EntityValue(source.getEntity()), new NumericValue(amount), new EntityValue(target)),
|
||||
() -> source.getEntity().getServer().createCommandSourceStack()
|
||||
() -> source.getEntity().level().getServer().createCommandSourceStack()
|
||||
);
|
||||
}
|
||||
};
|
||||
@@ -1108,7 +1108,7 @@ public class CarpetEventServer
|
||||
{
|
||||
handler.call(
|
||||
() -> Collections.singletonList(new EntityValue(entity)),
|
||||
() -> entity.getServer().createCommandSourceStack().withLevel((ServerLevel) entity.level()).withPermission(Vanilla.MinecraftServer_getRunPermissionLevel(entity.getServer()))
|
||||
() -> entity.level().getServer().createCommandSourceStack().withLevel((ServerLevel) entity.level()).withPermission(Vanilla.MinecraftServer_getRunPermissionLevel(entity.level().getServer()))
|
||||
);
|
||||
}
|
||||
})).collect(Collectors.toUnmodifiableMap(Map.Entry::getKey, Map.Entry::getValue));
|
||||
@@ -1127,7 +1127,7 @@ public class CarpetEventServer
|
||||
{
|
||||
handler.call(
|
||||
() -> Arrays.asList(new EntityValue(entity), BooleanValue.of(created)),
|
||||
() -> entity.getServer().createCommandSourceStack().withLevel((ServerLevel) entity.level()).withPermission(Vanilla.MinecraftServer_getRunPermissionLevel(entity.getServer()))
|
||||
() -> entity.level().getServer().createCommandSourceStack().withLevel((ServerLevel) entity.level()).withPermission(Vanilla.MinecraftServer_getRunPermissionLevel(entity.level().getServer()))
|
||||
);
|
||||
}
|
||||
}))
|
||||
|
||||
@@ -49,7 +49,7 @@ public class EntityEventsGroup
|
||||
{
|
||||
return;
|
||||
}
|
||||
CarpetScriptServer scriptServer = Vanilla.MinecraftServer_getScriptServer(entity.getServer());
|
||||
CarpetScriptServer scriptServer = Vanilla.MinecraftServer_getScriptServer(entity.level().getServer());
|
||||
if (scriptServer.stopAll)
|
||||
{
|
||||
return; // executed after world is closin down
|
||||
@@ -64,7 +64,7 @@ public class EntityEventsGroup
|
||||
iterator.remove();
|
||||
continue;
|
||||
}
|
||||
if (key.user() != null && entity.getServer().getPlayerList().getPlayerByName(key.user()) == null)
|
||||
if (key.user() != null && entity.level().getServer().getPlayerList().getPlayerByName(key.user()) == null)
|
||||
{
|
||||
iterator.remove();
|
||||
continue;
|
||||
@@ -170,7 +170,7 @@ public class EntityEventsGroup
|
||||
public CarpetEventServer.CallbackResult call(CarpetEventServer.Callback tickCall, Entity entity, Object... args)
|
||||
{
|
||||
assert args.length == argcount - 1;
|
||||
return tickCall.execute((entity instanceof ServerPlayer player ? player.createCommandSourceStack() : entity.getServer().createCommandSourceStack()), makeArgs(entity, args));
|
||||
return tickCall.execute((entity instanceof ServerPlayer player ? player.createCommandSourceStack() : entity.level().getServer().createCommandSourceStack()), makeArgs(entity, args));
|
||||
}
|
||||
|
||||
protected List<Value> makeArgs(Entity entity, Object... args)
|
||||
|
||||
@@ -212,7 +212,7 @@ public interface Param
|
||||
registerStrictConverter(Component.class, false, new SimpleTypeConverter<>(FormattedTextValue.class, FormattedTextValue::getText, "text"));
|
||||
registerStrictConverter(Component.class, true, new SimpleTypeConverter<>(StringValue.class, FormattedTextValue::getTextByValue, "text"));
|
||||
registerStrictConverter(ServerPlayer.class, false, new SimpleTypeConverter<>(EntityValue.class,
|
||||
v -> EntityValue.getPlayerByValue(v.getEntity().getServer(), v), "online player entity"));
|
||||
v -> EntityValue.getPlayerByValue(v.getEntity().level().getServer(), v), "online player entity"));
|
||||
registerStrictConverter(Boolean.class, false, new SimpleTypeConverter<>(BooleanValue.class, BooleanValue::getBoolean, "boolean"));
|
||||
registerStrictConverter(Boolean.class, true, new SimpleTypeConverter<>(NumericValue.class, NumericValue::getBoolean, "boolean"));
|
||||
}
|
||||
|
||||
@@ -762,7 +762,7 @@ public class ShapeDispatcher
|
||||
{
|
||||
return p -> {
|
||||
ParticleOptions particle;
|
||||
Registry<Block> blocks = p.getServer().registryAccess().lookupOrThrow(Registries.BLOCK);
|
||||
Registry<Block> blocks = p.level().getServer().registryAccess().lookupOrThrow(Registries.BLOCK);
|
||||
if (this.isitem)
|
||||
{
|
||||
if (Block.byItem(this.item.getItem()).defaultBlockState().isAir())
|
||||
|
||||
@@ -33,6 +33,7 @@ import net.minecraft.client.renderer.LightTexture;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
|
||||
import net.minecraft.client.renderer.blockentity.state.BlockEntityRenderState;
|
||||
import net.minecraft.client.renderer.entity.state.EntityRenderState;
|
||||
import net.minecraft.client.renderer.item.ItemStackRenderState;
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
@@ -438,11 +439,17 @@ public class ShapesRenderer
|
||||
}
|
||||
if (BlockEntity != null)
|
||||
{
|
||||
BlockEntityRenderer<BlockEntity> blockEntityRenderer = client.getBlockEntityRenderDispatcher().getRenderer(BlockEntity);
|
||||
if (blockEntityRenderer != null)
|
||||
BlockEntityRenderer<BlockEntity, BlockEntityRenderState> blockEntityRenderer = client.getBlockEntityRenderDispatcher().getRenderer(BlockEntity);
|
||||
BlockEntityRenderState state = client.getBlockEntityRenderDispatcher().tryExtractRenderState(BlockEntity, partialTick, null);
|
||||
|
||||
|
||||
|
||||
if (blockEntityRenderer != null && state != null)
|
||||
{
|
||||
blockEntityRenderer.submit(BlockEntity, partialTick,
|
||||
matrices, light, OverlayTexture.NO_OVERLAY, camera1.getPosition(), null, client.gameRenderer.getFeatureRenderDispatcher().getSubmitNodeStorage());
|
||||
// testme partial positions
|
||||
blockEntityRenderer.submit(state, matrices,client.gameRenderer.getFeatureRenderDispatcher().getSubmitNodeStorage());
|
||||
//blockEntityRenderer.submit(BlockEntity, partialTick,
|
||||
// matrices, light, OverlayTexture.NO_OVERLAY, camera1.getPosition(), null, client.gameRenderer.getFeatureRenderDispatcher().getSubmitNodeStorage());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,12 +70,12 @@ public class SnoopyCommandSource extends CommandSourceStack
|
||||
{
|
||||
super(player.commandSource(), player.position(), player.getRotationVector(),
|
||||
player.level() instanceof final ServerLevel serverLevel ? serverLevel : null,
|
||||
player.getServer().getProfilePermissions(player.nameAndId()), player.getName().getString(), player.getDisplayName(),
|
||||
player.level().getServer().getProfilePermissions(player.nameAndId()), player.getName().getString(), player.getDisplayName(),
|
||||
player.level().getServer(), player);
|
||||
this.output = player.commandSource();
|
||||
this.position = player.position();
|
||||
this.world = player.level() instanceof final ServerLevel serverLevel ? serverLevel : null;
|
||||
this.level = player.getServer().getProfilePermissions(player.nameAndId());
|
||||
this.level = player.level().getServer().getProfilePermissions(player.nameAndId());
|
||||
this.simpleName = player.getName().getString();
|
||||
this.name = player.getDisplayName();
|
||||
this.server = player.level().getServer();
|
||||
@@ -86,7 +86,7 @@ public class SnoopyCommandSource extends CommandSourceStack
|
||||
this.error = error;
|
||||
this.chatOutput = output;
|
||||
this.signingContext = CommandSigningContext.ANONYMOUS;
|
||||
this.taskChainer = TaskChainer.immediate(player.getServer());
|
||||
this.taskChainer = TaskChainer.immediate(player.level().getServer());
|
||||
}
|
||||
|
||||
private SnoopyCommandSource(CommandSource output, Vec3 pos, Vec2 rot, ServerLevel world, int level, String simpleName, Component name, MinecraftServer server, @Nullable Entity entity, CommandResultCallback consumer, EntityAnchorArgument.Anchor entityAnchor, CommandSigningContext context, TaskChainer chainer,
|
||||
|
||||
@@ -134,7 +134,7 @@ public class EntityValue extends Value
|
||||
{
|
||||
if (entity instanceof ServerPlayer serverPlayer && Vanilla.ServerPlayer_isInvalidEntityObject(serverPlayer))
|
||||
{
|
||||
ServerPlayer newPlayer = entity.getServer().getPlayerList().getPlayer(entity.getUUID());
|
||||
ServerPlayer newPlayer = entity.level().getServer().getPlayerList().getPlayer(entity.getUUID());
|
||||
if (newPlayer != null)
|
||||
{
|
||||
entity = newPlayer;
|
||||
@@ -458,14 +458,14 @@ public class EntityValue extends Value
|
||||
put("scoreboard_tags", (e, a) -> ListValue.wrap(e.getTags().stream().map(StringValue::new)));
|
||||
put("entity_tags", (e, a) -> {
|
||||
EntityType<?> type = e.getType();
|
||||
return ListValue.wrap(e.getServer().registryAccess().lookupOrThrow(Registries.ENTITY_TYPE).getTags().filter(entry -> entry.stream().anyMatch(h -> h.value() == type)).map(entry -> ValueConversions.of(entry)));
|
||||
return ListValue.wrap(e.level().getServer().registryAccess().lookupOrThrow(Registries.ENTITY_TYPE).getTags().filter(entry -> entry.stream().anyMatch(h -> h.value() == type)).map(entry -> ValueConversions.of(entry)));
|
||||
});
|
||||
// deprecated
|
||||
put("has_tag", (e, a) -> BooleanValue.of(e.getTags().contains(a.getString())));
|
||||
|
||||
put("has_scoreboard_tag", (e, a) -> BooleanValue.of(e.getTags().contains(a.getString())));
|
||||
put("has_entity_tag", (e, a) -> {
|
||||
Optional<HolderSet.Named<EntityType<?>>> tag = e.getServer().registryAccess().lookupOrThrow(Registries.ENTITY_TYPE).get(TagKey.create(Registries.ENTITY_TYPE, InputValidator.identifierOf(a.getString())));
|
||||
Optional<HolderSet.Named<EntityType<?>>> tag = e.level().getServer().registryAccess().lookupOrThrow(Registries.ENTITY_TYPE).get(TagKey.create(Registries.ENTITY_TYPE, InputValidator.identifierOf(a.getString())));
|
||||
if (tag.isEmpty())
|
||||
{
|
||||
return Value.NULL;
|
||||
@@ -505,7 +505,7 @@ public class EntityValue extends Value
|
||||
put("despawn_timer", (e, a) -> e instanceof LivingEntity le ? new NumericValue(le.getNoActionTime()) : Value.NULL);
|
||||
put("blue_skull", (e, a) -> e instanceof WitherSkull w ? BooleanValue.of(w.isDangerous()) : Value.NULL);
|
||||
put("offering_flower", (e, a) -> e instanceof IronGolem ig ? BooleanValue.of(ig.getOfferFlowerTick() > 0) : Value.NULL);
|
||||
put("item", (e, a) -> e instanceof ItemEntity ie ? ValueConversions.of(ie.getItem(), e.getServer().registryAccess()) : e instanceof ItemFrame frame ? ValueConversions.of(frame.getItem(), e.getServer().registryAccess()) : Value.NULL);
|
||||
put("item", (e, a) -> e instanceof ItemEntity ie ? ValueConversions.of(ie.getItem(), e.level().getServer().registryAccess()) : e instanceof ItemFrame frame ? ValueConversions.of(frame.getItem(), e.level().getServer().registryAccess()) : Value.NULL);
|
||||
put("count", (e, a) -> (e instanceof ItemEntity ie) ? new NumericValue(ie.getItem().getCount()) : Value.NULL);
|
||||
put("pickup_delay", (e, a) -> (e instanceof ItemEntity ie) ? new NumericValue(Vanilla.ItemEntity_getPickupDelay(ie)) : Value.NULL);
|
||||
put("portal_cooldown", (e, a) -> new NumericValue(Vanilla.Entity_getPublicNetherPortalCooldown(e)));
|
||||
@@ -693,7 +693,7 @@ public class EntityValue extends Value
|
||||
}
|
||||
if (e instanceof LivingEntity le)
|
||||
{
|
||||
return ValueConversions.of(le.getItemBySlot(where), e.getServer().registryAccess());
|
||||
return ValueConversions.of(le.getItemBySlot(where), e.level().getServer().registryAccess());
|
||||
}
|
||||
return Value.NULL;
|
||||
});
|
||||
@@ -1376,7 +1376,7 @@ public class EntityValue extends Value
|
||||
if (params.size() > blockLocator.offset)
|
||||
{
|
||||
Value worldValue = params.get(blockLocator.offset);
|
||||
world = ValueConversions.dimFromValue(worldValue, spe.getServer()).dimension();
|
||||
world = ValueConversions.dimFromValue(worldValue, spe.level().getServer()).dimension();
|
||||
if (params.size() > blockLocator.offset + 1)
|
||||
{
|
||||
angle = NumericValue.asNumber(params.get(blockLocator.offset + 1), "angle").getFloat();
|
||||
|
||||
@@ -200,7 +200,7 @@ public class ScreenValue extends Value
|
||||
this.screenHandler = null;
|
||||
return false;
|
||||
}
|
||||
int runPermissionLevel = Vanilla.MinecraftServer_getRunPermissionLevel(player.getServer());
|
||||
int runPermissionLevel = Vanilla.MinecraftServer_getRunPermissionLevel(player.level().getServer());
|
||||
CommandSourceStack source = player.createCommandSourceStack().withPermission(runPermissionLevel);
|
||||
CarpetScriptHost executingHost = appHost.retrieveForExecution(source, player);
|
||||
try
|
||||
|
||||
@@ -89,7 +89,7 @@ public class ValueConversions
|
||||
return ListValue.of(StringValue.of(Colors.mapColourName.get(color)), ofRGB(color.col));
|
||||
}
|
||||
|
||||
public static <T extends Number> Value of(MinMaxBounds<T> range)
|
||||
public static <T extends Number & Comparable<T>> Value of(MinMaxBounds<T> range)
|
||||
{
|
||||
return ListValue.of(
|
||||
range.min().map(NumericValue::of).orElse(Value.NULL),
|
||||
|
||||
@@ -109,7 +109,7 @@ public class WoolTool
|
||||
DyeColor under = getWoolColorAtPosition(worldIn, pos.below());
|
||||
if (under == null) return;
|
||||
HopperCounter counter = HopperCounter.getCounter(under);
|
||||
counter.reset(placer.getServer());
|
||||
counter.reset(placer.level().getServer());
|
||||
List<Component> res = new ArrayList<>();
|
||||
res.add(Messenger.s(String.format("%s counter reset",under.toString())));
|
||||
Messenger.send(placer, res);
|
||||
|
||||
@@ -78,6 +78,7 @@
|
||||
"ServerGamePacketListenerImpl_scarpetEventsMixin",
|
||||
"ServerPlayerGameMode_scarpetEventsMixin",
|
||||
"Player_parrotMixin",
|
||||
"ServerPlayer_parrotMixin",
|
||||
"SaplingBlock_desertShrubsMixin",
|
||||
"EntityMixin",
|
||||
"Guardian_renewableSpongesMixin",
|
||||
@@ -189,6 +190,7 @@
|
||||
"Gui_tablistMixin",
|
||||
"PlayerTabOverlayMixin",
|
||||
"PistonHeadRenderer_movableBEMixin",
|
||||
"PistonHeadRenderState_movableBEMixin",
|
||||
"StructureBlockRenderer_mixin",
|
||||
"ClientPacketListener_clientCommandMixin",
|
||||
"ClientPacketListener_explosionMixin",
|
||||
|
||||
Reference in new issue
Block a user