mirror of
https://github.com/LeavesMC/Leaves.git
synced 2026-01-04 15:41:31 +00:00
Improve ElytraAeronautics
This commit is contained in:
@@ -5,20 +5,98 @@ Subject: [PATCH] Elytra aeronautics no chunk load
|
||||
|
||||
|
||||
diff --git a/net/minecraft/server/level/ChunkMap.java b/net/minecraft/server/level/ChunkMap.java
|
||||
index 4785f9d6c53e18419a3df4a1be9c8a4f9d8cadfb..adba1c30d38f9d42c9c763f0ed2321d46363ca96 100644
|
||||
index 4785f9d6c53e18419a3df4a1be9c8a4f9d8cadfb..af78e9ff6888ea3e7cc9eead64b643245c4cf836 100644
|
||||
--- a/net/minecraft/server/level/ChunkMap.java
|
||||
+++ b/net/minecraft/server/level/ChunkMap.java
|
||||
@@ -854,7 +854,8 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||
@@ -3,19 +3,12 @@ package net.minecraft.server.level;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
-import com.google.common.collect.Queues;
|
||||
-import com.google.common.collect.ImmutableList.Builder;
|
||||
import com.mojang.datafixers.DataFixer;
|
||||
import com.mojang.logging.LogUtils;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
import it.unimi.dsi.fastutil.longs.Long2ByteMap;
|
||||
import it.unimi.dsi.fastutil.longs.Long2ByteOpenHashMap;
|
||||
-import it.unimi.dsi.fastutil.longs.Long2LongMap;
|
||||
-import it.unimi.dsi.fastutil.longs.Long2LongOpenHashMap;
|
||||
-import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap;
|
||||
-import it.unimi.dsi.fastutil.longs.LongIterator;
|
||||
-import it.unimi.dsi.fastutil.longs.LongLinkedOpenHashSet;
|
||||
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
|
||||
import it.unimi.dsi.fastutil.longs.LongSet;
|
||||
import java.io.IOException;
|
||||
@@ -24,17 +17,14 @@ import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
-import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
-import java.util.Queue;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CancellationException;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.CompletionException;
|
||||
-import java.util.concurrent.CompletionStage;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.function.BooleanSupplier;
|
||||
@@ -55,13 +45,11 @@ import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.NbtException;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.network.protocol.game.ClientboundChunksBiomesPacket;
|
||||
-import net.minecraft.network.protocol.game.ClientboundSetChunkCacheCenterPacket;
|
||||
import net.minecraft.server.level.progress.ChunkProgressListener;
|
||||
import net.minecraft.server.network.ServerPlayerConnection;
|
||||
import net.minecraft.util.CsvOutput;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.util.StaticCache2D;
|
||||
-import net.minecraft.util.TriState;
|
||||
import net.minecraft.util.profiling.Profiler;
|
||||
import net.minecraft.util.profiling.ProfilerFiller;
|
||||
import net.minecraft.util.thread.BlockableEventLoop;
|
||||
@@ -76,7 +64,6 @@ import net.minecraft.world.level.TicketStorage;
|
||||
import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
import net.minecraft.world.level.chunk.ChunkGenerator;
|
||||
import net.minecraft.world.level.chunk.ChunkGeneratorStructureState;
|
||||
-import net.minecraft.world.level.chunk.ImposterProtoChunk;
|
||||
import net.minecraft.world.level.chunk.LevelChunk;
|
||||
import net.minecraft.world.level.chunk.LightChunkGetter;
|
||||
import net.minecraft.world.level.chunk.ProtoChunk;
|
||||
@@ -87,17 +74,14 @@ import net.minecraft.world.level.chunk.status.ChunkType;
|
||||
import net.minecraft.world.level.chunk.status.WorldGenContext;
|
||||
import net.minecraft.world.level.chunk.storage.ChunkStorage;
|
||||
import net.minecraft.world.level.chunk.storage.RegionStorageInfo;
|
||||
-import net.minecraft.world.level.chunk.storage.SerializableChunkData;
|
||||
import net.minecraft.world.level.entity.ChunkStatusUpdateListener;
|
||||
import net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator;
|
||||
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
|
||||
import net.minecraft.world.level.levelgen.RandomState;
|
||||
-import net.minecraft.world.level.levelgen.structure.StructureStart;
|
||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager;
|
||||
import net.minecraft.world.level.storage.DimensionDataStorage;
|
||||
import net.minecraft.world.level.storage.LevelStorageSource;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
-import org.apache.commons.lang3.mutable.MutableBoolean;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider, GeneratingChunkMap, ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemChunkMap { // Paper - rewrite chunk system
|
||||
@@ -854,7 +838,8 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||
}
|
||||
|
||||
private boolean skipPlayer(ServerPlayer player) {
|
||||
- return player.isSpectator() && !this.level.getGameRules().getBoolean(GameRules.RULE_SPECTATORSGENERATECHUNKS);
|
||||
+ return (player.isSpectator() && !this.level.getGameRules().getBoolean(GameRules.RULE_SPECTATORSGENERATECHUNKS))
|
||||
+ || (org.leavesmc.leaves.LeavesConfig.modify.elytraAeronautics.noChunk && player.elytraAeronauticsNoChunk); // Leaves - Elytra aeronautics
|
||||
+ || (org.leavesmc.leaves.LeavesConfig.modify.elytraAeronautics.enableNoChunkLoad && player.elytraAeronauticsNoChunk); // Leaves - Elytra aeronautics
|
||||
}
|
||||
|
||||
void updatePlayerStatus(ServerPlayer player, boolean track) {
|
||||
@@ -888,6 +889,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||
@@ -888,6 +873,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||
}
|
||||
|
||||
public void move(ServerPlayer player) {
|
||||
@@ -26,8 +104,65 @@ index 4785f9d6c53e18419a3df4a1be9c8a4f9d8cadfb..adba1c30d38f9d42c9c763f0ed2321d4
|
||||
// Paper - optimise entity tracker
|
||||
|
||||
SectionPos lastSectionPos = player.getLastSectionPos();
|
||||
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
||||
index 270ce4c452ed7efce45923e80b11a606c3f15dab..07173b12bd5177d61c5bf0f8e77e1586ae36e548 100644
|
||||
--- a/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -52,7 +52,6 @@ import net.minecraft.network.protocol.game.ClientboundBlockEventPacket;
|
||||
import net.minecraft.network.protocol.game.ClientboundDamageEventPacket;
|
||||
import net.minecraft.network.protocol.game.ClientboundEntityEventPacket;
|
||||
import net.minecraft.network.protocol.game.ClientboundExplodePacket;
|
||||
-import net.minecraft.network.protocol.game.ClientboundGameEventPacket;
|
||||
import net.minecraft.network.protocol.game.ClientboundLevelEventPacket;
|
||||
import net.minecraft.network.protocol.game.ClientboundLevelParticlesPacket;
|
||||
import net.minecraft.network.protocol.game.ClientboundSetDefaultSpawnPositionPacket;
|
||||
@@ -73,7 +72,6 @@ import net.minecraft.util.CsvOutput;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.util.ProgressListener;
|
||||
import net.minecraft.util.RandomSource;
|
||||
-import net.minecraft.util.datafix.DataFixTypes;
|
||||
import net.minecraft.util.profiling.Profiler;
|
||||
import net.minecraft.util.profiling.ProfilerFiller;
|
||||
import net.minecraft.util.valueproviders.IntProvider;
|
||||
@@ -126,18 +124,14 @@ import net.minecraft.world.level.chunk.ChunkAccess;
|
||||
import net.minecraft.world.level.chunk.ChunkGenerator;
|
||||
import net.minecraft.world.level.chunk.LevelChunk;
|
||||
import net.minecraft.world.level.chunk.LevelChunkSection;
|
||||
-import net.minecraft.world.level.chunk.storage.EntityStorage;
|
||||
import net.minecraft.world.level.chunk.storage.RegionStorageInfo;
|
||||
-import net.minecraft.world.level.chunk.storage.SimpleRegionStorage;
|
||||
import net.minecraft.world.level.dimension.BuiltinDimensionTypes;
|
||||
import net.minecraft.world.level.dimension.LevelStem;
|
||||
import net.minecraft.world.level.dimension.end.EndDragonFight;
|
||||
-import net.minecraft.world.level.entity.EntityPersistentStorage;
|
||||
import net.minecraft.world.level.entity.EntityTickList;
|
||||
import net.minecraft.world.level.entity.EntityTypeTest;
|
||||
import net.minecraft.world.level.entity.LevelCallback;
|
||||
import net.minecraft.world.level.entity.LevelEntityGetter;
|
||||
-import net.minecraft.world.level.entity.PersistentEntitySectionManager;
|
||||
import net.minecraft.world.level.gameevent.DynamicGameEventListener;
|
||||
import net.minecraft.world.level.gameevent.GameEvent;
|
||||
import net.minecraft.world.level.gameevent.GameEventDispatcher;
|
||||
@@ -157,7 +151,6 @@ import net.minecraft.world.level.saveddata.maps.MapIndex;
|
||||
import net.minecraft.world.level.saveddata.maps.MapItemSavedData;
|
||||
import net.minecraft.world.level.storage.DimensionDataStorage;
|
||||
import net.minecraft.world.level.storage.LevelStorageSource;
|
||||
-import net.minecraft.world.level.storage.ServerLevelData;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraft.world.phys.shapes.BooleanOp;
|
||||
@@ -830,6 +823,9 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
}
|
||||
}
|
||||
);
|
||||
+ if (org.leavesmc.leaves.LeavesConfig.modify.elytraAeronautics.enableNoChunkLoad) {
|
||||
+ org.leavesmc.leaves.util.ElytraAeronauticsHelper.tick(this);
|
||||
+ }
|
||||
profilerFiller.pop();
|
||||
this.tickBlockEntities();
|
||||
}
|
||||
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
index 0e1af5f3b7aaa1e0e1c385b47ff70bf7e6ab5e4f..ca6b80b9f6bb9de0741e98196e5dcbb741dd4cb5 100644
|
||||
index 448c77f5002276eab680a96b518e8a7234806f80..655ca2ead22addbb458b89e12cb2be1d269e4f5e 100644
|
||||
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
@@ -541,7 +541,7 @@ public class ServerGamePacketListenerImpl
|
||||
@@ -48,16 +183,24 @@ index 0e1af5f3b7aaa1e0e1c385b47ff70bf7e6ab5e4f..ca6b80b9f6bb9de0741e98196e5dcbb7
|
||||
if (teleportBack) {
|
||||
io.papermc.paper.event.player.PlayerFailMoveEvent event = fireFailMove(io.papermc.paper.event.player.PlayerFailMoveEvent.FailReason.CLIPPED_INTO_BLOCK,
|
||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||
index 2d54997ead46e5185104af621dbe39f66246aa96..5333c4bdf25fe05d63fc1caf0f45538f8ae9fcc6 100644
|
||||
index 2d54997ead46e5185104af621dbe39f66246aa96..2b0b88592ff5ca5d3718832aacfcae65c039384c 100644
|
||||
--- a/net/minecraft/world/entity/Entity.java
|
||||
+++ b/net/minecraft/world/entity/Entity.java
|
||||
@@ -1092,7 +1092,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -2,7 +2,6 @@ package net.minecraft.world.entity;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Lists;
|
||||
-import com.google.common.collect.Sets;
|
||||
import com.google.common.collect.ImmutableList.Builder;
|
||||
import com.mojang.serialization.Codec;
|
||||
import it.unimi.dsi.fastutil.floats.FloatArraySet;
|
||||
@@ -1092,7 +1091,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
return;
|
||||
}
|
||||
}
|
||||
-
|
||||
+ // Leaves start - elytra aeronautics
|
||||
+ if (org.leavesmc.leaves.LeavesConfig.modify.elytraAeronautics.noChunk && this instanceof Player player) {
|
||||
+ if (org.leavesmc.leaves.LeavesConfig.modify.elytraAeronautics.enableNoChunkLoad && this instanceof Player player) {
|
||||
+ if (type == MoverType.PLAYER && player.isFallFlying()) {
|
||||
+ org.leavesmc.leaves.util.ElytraAeronauticsHelper.flightBehaviour(player, movement);
|
||||
+ }
|
||||
@@ -66,7 +209,7 @@ index 2d54997ead46e5185104af621dbe39f66246aa96..5333c4bdf25fe05d63fc1caf0f45538f
|
||||
ProfilerFiller profilerFiller = Profiler.get();
|
||||
profilerFiller.push("move");
|
||||
if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7) {
|
||||
@@ -2053,6 +2059,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -2053,6 +2058,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
this.yo = y;
|
||||
this.zo = d1;
|
||||
this.setPos(d, y, d1);
|
||||
@@ -91,7 +234,7 @@ index 6893ca36cd4ae9a62fecedb1167cc6cf797a7f8f..a95fec1506af042bd3d4424e93aa3f4d
|
||||
|
||||
if (this.isSleeping()) {
|
||||
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
|
||||
index 9f792a7cf9da888e502b79d6b1d1075e9f084f43..e3de8bba5d37c2dc8c91d09e2225463ffbc2f7e5 100644
|
||||
index 3eb9a9f6d7f8d28d527941177a5faf2c97628594..a00e1ccb915e9e33b0c56b228cb0447d8af1e195 100644
|
||||
--- a/net/minecraft/world/entity/player/Player.java
|
||||
+++ b/net/minecraft/world/entity/player/Player.java
|
||||
@@ -210,6 +210,7 @@ public abstract class Player extends LivingEntity {
|
||||
@@ -102,6 +245,19 @@ index 9f792a7cf9da888e502b79d6b1d1075e9f084f43..e3de8bba5d37c2dc8c91d09e2225463f
|
||||
|
||||
// CraftBukkit start
|
||||
public boolean fauxSleeping;
|
||||
diff --git a/net/minecraft/world/entity/projectile/FireworkRocketEntity.java b/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
|
||||
index e0e193078e550225e163149638bf9e053c0531f8..484f1c5eba3776eff86438ba02607e60c7083b3b 100644
|
||||
--- a/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
|
||||
+++ b/net/minecraft/world/entity/projectile/FireworkRocketEntity.java
|
||||
@@ -328,7 +328,7 @@ public class FireworkRocketEntity extends Projectile implements ItemSupplier {
|
||||
this.spawningEntity = compound.read("SpawningEntity", net.minecraft.core.UUIDUtil.CODEC).orElse(null); // Paper
|
||||
}
|
||||
|
||||
- private List<FireworkExplosion> getExplosions() {
|
||||
+ public List<FireworkExplosion> getExplosions() { // Leaves private -> public
|
||||
ItemStack itemStack = this.entityData.get(DATA_ID_FIREWORKS_ITEM);
|
||||
Fireworks fireworks = itemStack.get(DataComponents.FIREWORKS);
|
||||
return fireworks != null ? fireworks.explosions() : List.of();
|
||||
diff --git a/net/minecraft/world/item/FireworkRocketItem.java b/net/minecraft/world/item/FireworkRocketItem.java
|
||||
index 18d63d2da49451a2d5e1da7bf0c00e05e2f192bc..6c78a59b6518799c9b199c96cc4592fb48229e9a 100644
|
||||
--- a/net/minecraft/world/item/FireworkRocketItem.java
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] No block update command
|
||||
|
||||
|
||||
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
||||
index 270ce4c452ed7efce45923e80b11a606c3f15dab..07f2af32c57cf002af0b25e4a9f2c75558663c86 100644
|
||||
index 07173b12bd5177d61c5bf0f8e77e1586ae36e548..216f163376ea79fd576ae9ca8979a4080287c4ff 100644
|
||||
--- a/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -1786,6 +1786,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
@@ -1782,6 +1782,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
|
||||
@Override
|
||||
public void updateNeighborsAt(BlockPos pos, Block block, @Nullable Orientation orientation) {
|
||||
|
||||
@@ -83,10 +83,10 @@ index 7af8b2cf9ccfeadac1cc60541da31ba6f4dc0edb..284cdbd6034ec8962409abba6da37eab
|
||||
public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
|
||||
private static final float AVERAGE_PACKETS_SMOOTHING = 0.75F;
|
||||
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
||||
index e1962e123dc2d6a3cf97ba723532e30863bf400f..ec61dcf1a69855ad48de3a46d21ffed9243ceb7a 100644
|
||||
index 216f163376ea79fd576ae9ca8979a4080287c4ff..b14996a1840046c4c2e8b9ceb2db46510c27fc61 100644
|
||||
--- a/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -165,6 +165,7 @@ import net.minecraft.world.phys.shapes.Shapes;
|
||||
@@ -158,6 +158,7 @@ import net.minecraft.world.phys.shapes.Shapes;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import net.minecraft.world.ticks.LevelTicks;
|
||||
import org.slf4j.Logger;
|
||||
@@ -95,7 +95,7 @@ index e1962e123dc2d6a3cf97ba723532e30863bf400f..ec61dcf1a69855ad48de3a46d21ffed9
|
||||
public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLevel, ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel, ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevelReader, ca.spottedleaf.moonrise.patches.chunk_tick_iteration.ChunkTickServerLevel { // Paper - rewrite chunk system // Paper - chunk tick iteration
|
||||
public static final BlockPos END_SPAWN_POINT = new BlockPos(100, 50, 0);
|
||||
diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
index 0c811363c9b8ac2bed9039ccd86b4c72538e5e4e..c81bd1a48944a7e37f35866d3f580378e13fa86f 100644
|
||||
index 655ca2ead22addbb458b89e12cb2be1d269e4f5e..926b09363bf5c8555a27e4be0374a5a0d3ee0c0d 100644
|
||||
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
@@ -236,6 +236,7 @@ import org.bukkit.event.player.PlayerToggleFlightEvent;
|
||||
@@ -162,7 +162,7 @@ index 50993ce7519a77c6a9d36cb925125adccda7037f..e5124b566e791c1c011b301f910a8926
|
||||
|
||||
public ZeroBitStorage(int size) {
|
||||
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
|
||||
index 12a63f75d878fcdad83847b20f5a57f7936c7779..ea25b29a5f28a171151cd1ca185a8fc0ceaa248a 100644
|
||||
index 7c13e7b7a547150642c4a4bddf5e8dee1d580984..21d50e9a60be430d8fff259d31793c5a897d2272 100644
|
||||
--- a/net/minecraft/world/level/Level.java
|
||||
+++ b/net/minecraft/world/level/Level.java
|
||||
@@ -93,6 +93,7 @@ import org.bukkit.craftbukkit.block.CraftBlockState;
|
||||
|
||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Optimize sun burn tick
|
||||
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
|
||||
|
||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||
index 5333c4bdf25fe05d63fc1caf0f45538f8ae9fcc6..dbd541361b518ccd6323996847f0ae1447d23362 100644
|
||||
index 2b0b88592ff5ca5d3718832aacfcae65c039384c..c1659ce4f632b458f8c56f829c108585b95a7253 100644
|
||||
--- a/net/minecraft/world/entity/Entity.java
|
||||
+++ b/net/minecraft/world/entity/Entity.java
|
||||
@@ -2034,9 +2034,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -2033,9 +2033,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
|
||||
@Deprecated
|
||||
public float getLightLevelDependentMagicValue() {
|
||||
@@ -33,7 +33,7 @@ index 5333c4bdf25fe05d63fc1caf0f45538f8ae9fcc6..dbd541361b518ccd6323996847f0ae14
|
||||
}
|
||||
|
||||
public void absSnapTo(double x, double y, double z, float yRot, float xRot) {
|
||||
@@ -2051,6 +2062,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -2050,6 +2061,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
this.xRotO = this.getXRot();
|
||||
this.setYHeadRot(yRot); // Paper - Update head rotation
|
||||
}
|
||||
|
||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Skip entity move if movement is zero
|
||||
This patch is Powered by Gale(https://github.com/GaleMC/Gale)
|
||||
|
||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||
index dbd541361b518ccd6323996847f0ae1447d23362..20521e729704a925e8aa61f65afdcf76e3863b9f 100644
|
||||
index c1659ce4f632b458f8c56f829c108585b95a7253..4ab45c8f62d2594c144cc7755d1d3f44e0aa0b01 100644
|
||||
--- a/net/minecraft/world/entity/Entity.java
|
||||
+++ b/net/minecraft/world/entity/Entity.java
|
||||
@@ -242,6 +242,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -241,6 +241,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
public float yRotO;
|
||||
public float xRotO;
|
||||
private AABB bb = INITIAL_AABB;
|
||||
@@ -17,7 +17,7 @@ index dbd541361b518ccd6323996847f0ae1447d23362..20521e729704a925e8aa61f65afdcf76
|
||||
public boolean onGround;
|
||||
public boolean horizontalCollision;
|
||||
public boolean verticalCollision;
|
||||
@@ -1068,6 +1069,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -1067,6 +1068,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
// Paper end - detailed watchdog information
|
||||
|
||||
public void move(MoverType type, Vec3 movement) {
|
||||
@@ -31,7 +31,7 @@ index dbd541361b518ccd6323996847f0ae1447d23362..20521e729704a925e8aa61f65afdcf76
|
||||
final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity
|
||||
// Paper start - detailed watchdog information
|
||||
ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread("Cannot move an entity off-main");
|
||||
@@ -4191,6 +4199,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -4190,6 +4198,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
}
|
||||
|
||||
public final void setBoundingBox(AABB bb) {
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix villagers dont release memory
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||
index 20521e729704a925e8aa61f65afdcf76e3863b9f..633419d830780f33f172bd9098440a832c78a6f0 100644
|
||||
index 4ab45c8f62d2594c144cc7755d1d3f44e0aa0b01..225b37c6212fc9af9204fdd0788a377bafcf9557 100644
|
||||
--- a/net/minecraft/world/entity/Entity.java
|
||||
+++ b/net/minecraft/world/entity/Entity.java
|
||||
@@ -3822,7 +3822,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -3821,7 +3821,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -120,10 +120,10 @@ index 814bb2981ab32b216b7953e9b14fe09e96cc7c89..45f884bf598b38ec45baf423b84f5293
|
||||
.filter(player -> !playerList.isOp(player.getGameProfile()))
|
||||
.map(player -> player.getGameProfile().getName()),
|
||||
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
||||
index d9e9a5e2b28b8745f2a8576ddb03a31141d59eb6..a20969499e2734cabef2353b52c5386b47dbe234 100644
|
||||
index b14996a1840046c4c2e8b9ceb2db46510c27fc61..4bc42cafd698e4fda951b4fa77b68c2858712781 100644
|
||||
--- a/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -2644,7 +2644,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
@@ -2640,7 +2640,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
if (entity instanceof ServerPlayer serverPlayer) {
|
||||
ServerLevel.this.players.add(serverPlayer);
|
||||
// Leaves start - skip
|
||||
@@ -132,7 +132,7 @@ index d9e9a5e2b28b8745f2a8576ddb03a31141d59eb6..a20969499e2734cabef2353b52c5386b
|
||||
ServerLevel.this.realPlayers.add(serverPlayer);
|
||||
}
|
||||
// Leaves end - skip
|
||||
@@ -2715,7 +2715,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
@@ -2711,7 +2711,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
if (entity instanceof ServerPlayer serverPlayer) {
|
||||
ServerLevel.this.players.remove(serverPlayer);
|
||||
// Leaves start - skip
|
||||
@@ -142,7 +142,7 @@ index d9e9a5e2b28b8745f2a8576ddb03a31141d59eb6..a20969499e2734cabef2353b52c5386b
|
||||
}
|
||||
// Leaves end - skip
|
||||
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
||||
index 3b612c02ddbf25c6dcfe5df14fca027986e6f252..c2598c70492a16153d53079b5281466c0449db90 100644
|
||||
index f2442fbf0cee7a2d1c3a155ec38d6a7eca36d6e8..e33776c039e36f55f0579b51b147d7be087839cf 100644
|
||||
--- a/net/minecraft/server/players/PlayerList.java
|
||||
+++ b/net/minecraft/server/players/PlayerList.java
|
||||
@@ -131,6 +131,7 @@ public abstract class PlayerList {
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Servux Protocol
|
||||
|
||||
|
||||
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
||||
index c091c5d7a71821b51c37dbcbd1c12f92cf3ba0b3..66e5b969c23e4468dce90bb2cd455da2f5e912aa 100644
|
||||
index 4bc42cafd698e4fda951b4fa77b68c2858712781..0d9e0d3baae8ea2bbd8e9dc083924f1abc5ee54d 100644
|
||||
--- a/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -2205,6 +2205,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
@@ -2201,6 +2201,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||
}
|
||||
|
||||
this.lastSpawnChunkRadius = i;
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix falling block's block location
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||
index 633419d830780f33f172bd9098440a832c78a6f0..c6077fb3db9e5e3c2b2da8335e27186c64bfa426 100644
|
||||
index 225b37c6212fc9af9204fdd0788a377bafcf9557..929b0d90c815e25927bd9081b14e06ca359e35c7 100644
|
||||
--- a/net/minecraft/world/entity/Entity.java
|
||||
+++ b/net/minecraft/world/entity/Entity.java
|
||||
@@ -4818,6 +4818,15 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -4817,6 +4817,15 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
int floor = Mth.floor(x);
|
||||
int floor1 = Mth.floor(y);
|
||||
int floor2 = Mth.floor(z);
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Configurable MC-67
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||
index c6077fb3db9e5e3c2b2da8335e27186c64bfa426..76324918b0c305d4ff15b4ae8f01de870cc64e46 100644
|
||||
index 929b0d90c815e25927bd9081b14e06ca359e35c7..45215307dd7092491d86168861c5e49383434ec5 100644
|
||||
--- a/net/minecraft/world/entity/Entity.java
|
||||
+++ b/net/minecraft/world/entity/Entity.java
|
||||
@@ -3970,6 +3970,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -3969,6 +3969,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
}
|
||||
|
||||
public boolean canTeleport(Level fromLevel, Level toLevel) {
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix EntityPortalExitEvent logic
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||
index 76324918b0c305d4ff15b4ae8f01de870cc64e46..f6581d89e05771bfe9c5ef4f1599281a1a7fad95 100644
|
||||
index 45215307dd7092491d86168861c5e49383434ec5..701ac15df1163b4887a07c40b91fb73c7831fb5a 100644
|
||||
--- a/net/minecraft/world/entity/Entity.java
|
||||
+++ b/net/minecraft/world/entity/Entity.java
|
||||
@@ -3774,19 +3774,29 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -3773,19 +3773,29 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
}
|
||||
if (this.portalProcess != null) { // if in a portal
|
||||
org.bukkit.craftbukkit.entity.CraftEntity bukkitEntity = this.getBukkitEntity();
|
||||
|
||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Skip negligible planar movement multiplication
|
||||
This patch is Powered by Gale(https://github.com/Dreeam-qwq/Gale)
|
||||
|
||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||
index f6581d89e05771bfe9c5ef4f1599281a1a7fad95..4be496e9a911f5eb3ebcad80b1b3b50c8144fe99 100644
|
||||
index 701ac15df1163b4887a07c40b91fb73c7831fb5a..cac3567d90b0ef821cbc6936dcc2beb850f32515 100644
|
||||
--- a/net/minecraft/world/entity/Entity.java
|
||||
+++ b/net/minecraft/world/entity/Entity.java
|
||||
@@ -1218,8 +1218,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -1217,8 +1217,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Vanilla portal handle
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||
index 4be496e9a911f5eb3ebcad80b1b3b50c8144fe99..3c87cdb5bf4c84c7b8e8f051479197deab930580 100644
|
||||
index cac3567d90b0ef821cbc6936dcc2beb850f32515..9e2fea332444925a8ca83d06826ead9c417f4afc 100644
|
||||
--- a/net/minecraft/world/entity/Entity.java
|
||||
+++ b/net/minecraft/world/entity/Entity.java
|
||||
@@ -807,6 +807,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -806,6 +806,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
|
||||
// CraftBukkit start
|
||||
public void postTick() {
|
||||
@@ -16,7 +16,7 @@ index 4be496e9a911f5eb3ebcad80b1b3b50c8144fe99..3c87cdb5bf4c84c7b8e8f051479197de
|
||||
// No clean way to break out of ticking once the entity has been copied to a new world, so instead we move the portalling later in the tick cycle
|
||||
if (!(this instanceof ServerPlayer) && this.isAlive()) { // Paper - don't attempt to teleport dead entities
|
||||
this.handlePortal();
|
||||
@@ -827,7 +828,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
@@ -826,7 +827,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||
this.boardingCooldown--;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Sound update suppression
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/level/block/SculkSensorBlock.java b/net/minecraft/world/level/block/SculkSensorBlock.java
|
||||
index fa9cb4c40a41eea7fd63a4513d0b0f39067de9ba..4f8739f76cc4a8ecc322662e45145f6db017e9b7 100644
|
||||
index fa9cb4c40a41eea7fd63a4513d0b0f39067de9ba..331276f4464d78dc86f35fe7d9c42864d7e73a6c 100644
|
||||
--- a/net/minecraft/world/level/block/SculkSensorBlock.java
|
||||
+++ b/net/minecraft/world/level/block/SculkSensorBlock.java
|
||||
@@ -97,7 +97,7 @@ public class SculkSensorBlock extends BaseEntityBlock implements SimpleWaterlogg
|
||||
@@ -17,17 +17,17 @@ index fa9cb4c40a41eea7fd63a4513d0b0f39067de9ba..4f8739f76cc4a8ecc322662e45145f6d
|
||||
&& entity.getType() != EntityType.WARDEN
|
||||
&& level.getBlockEntity(pos) instanceof SculkSensorBlockEntity sculkSensorBlockEntity
|
||||
&& level instanceof ServerLevel serverLevel
|
||||
@@ -213,7 +213,12 @@ public class SculkSensorBlock extends BaseEntityBlock implements SimpleWaterlogg
|
||||
public static SculkSensorPhase getPhase(BlockState state) {
|
||||
@@ -214,6 +214,13 @@ public class SculkSensorBlock extends BaseEntityBlock implements SimpleWaterlogg
|
||||
return state.getValue(PHASE);
|
||||
}
|
||||
-
|
||||
|
||||
+ // Leaves start - Sound update suppression
|
||||
+ public static boolean canActivate(BlockState state, BlockPos pos) {
|
||||
+ if (org.leavesmc.leaves.LeavesConfig.modify.oldMC.updater.soundUpdateSuppression && !(state.getBlock() instanceof SculkSensorBlock)) throw new org.leavesmc.leaves.util.UpdateSuppressionException(pos, state.getBlock());
|
||||
+ return canActivate(state);
|
||||
+ }
|
||||
+ // Leaves end - Sound update suppression
|
||||
+
|
||||
public static boolean canActivate(BlockState state) {
|
||||
return state.getBlock() instanceof SculkSensorBlock && getPhase(state) == SculkSensorPhase.INACTIVE; // Paper - Check for a valid type
|
||||
}
|
||||
|
||||
@@ -342,15 +342,8 @@ public final class LeavesConfig {
|
||||
|
||||
@GlobalConfigCategory("elytra-aeronautics")
|
||||
public static class ElytraAeronauticsConfig {
|
||||
@GlobalConfig(value = "no-chunk-load", validator = ElytraNoChunkLoadValidator.class)
|
||||
public boolean noChunk = false;
|
||||
|
||||
public static class ElytraNoChunkLoadValidator extends BooleanConfigValidator {
|
||||
@Override
|
||||
public void verify(Boolean old, Boolean value) throws IllegalArgumentException {
|
||||
ElytraAeronauticsHelper.setActive(value);
|
||||
}
|
||||
}
|
||||
@GlobalConfig("no-chunk-load")
|
||||
public boolean enableNoChunkLoad = false;
|
||||
|
||||
@GlobalConfig(value = "no-chunk-height")
|
||||
public double noChunkHeight = 500.0D;
|
||||
@@ -359,13 +352,13 @@ public final class LeavesConfig {
|
||||
public double noChunkSpeed = -1.0D;
|
||||
|
||||
@GlobalConfig("message")
|
||||
public boolean noChunkMes = true;
|
||||
public boolean doSendMessages = true;
|
||||
|
||||
@GlobalConfig(value = "message-start")
|
||||
public String noChunkStartMes = "Flight enter cruise mode";
|
||||
public String startMessage = "Flight enter cruise mode";
|
||||
|
||||
@GlobalConfig(value = "message-end")
|
||||
public String noChunkEndMes = "Flight exit cruise mode";
|
||||
public String endMessage = "Flight exit cruise mode";
|
||||
}
|
||||
|
||||
@RemovedConfig(name = "redstone-shears-wrench", category = {}, transform = true)
|
||||
|
||||
@@ -1,78 +1,88 @@
|
||||
package org.leavesmc.leaves.util;
|
||||
|
||||
import ca.spottedleaf.moonrise.common.PlatformHooks;
|
||||
import io.papermc.paper.threadedregions.scheduler.ScheduledTask;
|
||||
import net.minecraft.core.SectionPos;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.protocol.game.ClientboundSetEntityMotionPacket;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.entity.projectile.FireworkRocketEntity;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.item.component.FireworkExplosion;
|
||||
import net.minecraft.world.level.gameevent.GameEvent;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||
import org.leavesmc.leaves.LeavesConfig;
|
||||
import org.leavesmc.leaves.plugin.MinecraftInternalPlugin;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class ElytraAeronauticsHelper {
|
||||
|
||||
public static final List<FireworkRocketEntity> proxyTickingFireworks = new ArrayList<>();
|
||||
public static ScheduledTask tickTask;
|
||||
private static boolean isActive;
|
||||
public static final Map<ServerLevel, List<FireworkRocketEntity>> globalTickingFireworks = new HashMap<>();
|
||||
|
||||
public static void setActive(boolean active) {
|
||||
isActive = active;
|
||||
if (!isActive) {
|
||||
if (tickTask != null) {
|
||||
tickTask.cancel();
|
||||
public static void tick(ServerLevel level) {
|
||||
List<FireworkRocketEntity> tickingFireworks = globalTickingFireworks.getOrDefault(level, Collections.emptyList());
|
||||
for (Iterator<FireworkRocketEntity> it = tickingFireworks.iterator(); it.hasNext(); ) {
|
||||
FireworkRocketEntity firework = it.next();
|
||||
firework.life++;
|
||||
Vec3 handHoldingItemAngle;
|
||||
if (!firework.isAlive()) {
|
||||
it.remove();
|
||||
}
|
||||
tickTask = null;
|
||||
if (firework.attachedToEntity == null || firework.life > firework.lifetime) {
|
||||
explodeNoClip(firework);
|
||||
continue;
|
||||
}
|
||||
if (firework.attachedToEntity.isFallFlying()) {
|
||||
if (firework.attachedToEntity instanceof ServerPlayer player) {
|
||||
player.connection.send(new ClientboundSetEntityMotionPacket(player));
|
||||
}
|
||||
Vec3 lookAngle = firework.attachedToEntity.getLookAngle();
|
||||
Vec3 deltaMovement = firework.attachedToEntity.getDeltaMovement();
|
||||
firework.attachedToEntity.setDeltaMovement(deltaMovement.add(
|
||||
lookAngle.x * 0.1 + (lookAngle.x * 1.5 - deltaMovement.x) * 0.5,
|
||||
lookAngle.y * 0.1 + (lookAngle.y * 1.5 - deltaMovement.y) * 0.5,
|
||||
lookAngle.z * 0.1 + (lookAngle.z * 1.5 - deltaMovement.z) * 0.5
|
||||
));
|
||||
firework.attachedToEntity.hurtMarked = true;
|
||||
handHoldingItemAngle = firework.attachedToEntity.getHandHoldingItemAngle(Items.FIREWORK_ROCKET);
|
||||
} else {
|
||||
handHoldingItemAngle = Vec3.ZERO;
|
||||
}
|
||||
|
||||
firework.setPos(
|
||||
firework.attachedToEntity.getX() + handHoldingItemAngle.x,
|
||||
firework.attachedToEntity.getY() + handHoldingItemAngle.y,
|
||||
firework.attachedToEntity.getZ() + handHoldingItemAngle.z
|
||||
);
|
||||
firework.setDeltaMovement(firework.attachedToEntity.getDeltaMovement());
|
||||
}
|
||||
tickTask = Bukkit.getGlobalRegionScheduler().runAtFixedRate(MinecraftInternalPlugin.INSTANCE, task -> {
|
||||
proxyTickingFireworks.removeIf(Entity::isRemoved);
|
||||
for (FireworkRocketEntity firework : proxyTickingFireworks) {
|
||||
firework.life++;
|
||||
Vec3 handHoldingItemAngle;
|
||||
if (firework.attachedToEntity == null || firework.life > firework.lifetime) {
|
||||
firework.discard();
|
||||
continue;
|
||||
}
|
||||
if (firework.attachedToEntity.isFallFlying()) {
|
||||
if (firework.attachedToEntity instanceof ServerPlayer player) {
|
||||
player.connection.send(new ClientboundSetEntityMotionPacket(player));
|
||||
}
|
||||
Vec3 lookAngle = firework.attachedToEntity.getLookAngle();
|
||||
Vec3 deltaMovement = firework.attachedToEntity.getDeltaMovement();
|
||||
firework.attachedToEntity.setDeltaMovement(deltaMovement.add(
|
||||
lookAngle.x * 0.1 + (lookAngle.x * 1.5 - deltaMovement.x) * 0.5,
|
||||
lookAngle.y * 0.1 + (lookAngle.y * 1.5 - deltaMovement.y) * 0.5,
|
||||
lookAngle.z * 0.1 + (lookAngle.z * 1.5 - deltaMovement.z) * 0.5
|
||||
));
|
||||
firework.attachedToEntity.hurtMarked = true;
|
||||
handHoldingItemAngle = firework.attachedToEntity.getHandHoldingItemAngle(Items.FIREWORK_ROCKET);
|
||||
} else {
|
||||
handHoldingItemAngle = Vec3.ZERO;
|
||||
}
|
||||
}
|
||||
|
||||
firework.setPos(
|
||||
firework.attachedToEntity.getX() + handHoldingItemAngle.x,
|
||||
firework.attachedToEntity.getY() + handHoldingItemAngle.y,
|
||||
firework.attachedToEntity.getZ() + handHoldingItemAngle.z
|
||||
);
|
||||
firework.setDeltaMovement(firework.attachedToEntity.getDeltaMovement());
|
||||
}
|
||||
}, 1, 1);
|
||||
private static void explodeNoClip(FireworkRocketEntity firework) {
|
||||
if (firework.life <= firework.lifetime) {
|
||||
firework.discard();
|
||||
}
|
||||
ServerLevel level = firework.level().getMinecraftWorld();
|
||||
List<FireworkExplosion> explosions = firework.getExplosions();
|
||||
if (!explosions.isEmpty() && firework.attachedToEntity != null &&
|
||||
org.bukkit.craftbukkit.event.CraftEventFactory.callFireworkExplodeEvent(firework)) {
|
||||
level.broadcastEntityEvent(firework, (byte) 17);
|
||||
firework.gameEvent(GameEvent.EXPLODE, firework.getOwner());
|
||||
firework.attachedToEntity.hurtServer(level, firework.damageSources().fireworks(firework, firework.getOwner()), 5.0F + explosions.size() * 2);
|
||||
firework.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.EXPLODE);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean proxySpawnAndTick(FireworkRocketEntity entity) {
|
||||
if (!isActive) {
|
||||
if (!LeavesConfig.modify.elytraAeronautics.enableNoChunkLoad) {
|
||||
return false;
|
||||
}
|
||||
entity.generation = false;
|
||||
@@ -87,12 +97,12 @@ public class ElytraAeronauticsHelper {
|
||||
if (!org.bukkit.craftbukkit.event.CraftEventFactory.doEntityAddEventCalling(entity.level(), entity, CreatureSpawnEvent.SpawnReason.DEFAULT)) {
|
||||
return false;
|
||||
}
|
||||
proxyTickingFireworks.add(entity);
|
||||
globalTickingFireworks.computeIfAbsent(entity.level().getMinecraftWorld(), w -> new ArrayList<>()).add(entity);
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void flightBehaviour(Player player, Vec3 velocity) {
|
||||
if (!LeavesConfig.modify.elytraAeronautics.noChunk) {
|
||||
if (!LeavesConfig.modify.elytraAeronautics.enableNoChunkLoad) {
|
||||
return;
|
||||
}
|
||||
if ((LeavesConfig.modify.elytraAeronautics.noChunkSpeed <= 0.0D || velocity.horizontalDistanceSqr() >= LeavesConfig.modify.elytraAeronautics.noChunkSpeed)
|
||||
@@ -107,8 +117,8 @@ public class ElytraAeronauticsHelper {
|
||||
if (!player.elytraAeronauticsNoChunk) {
|
||||
player.elytraAeronauticsNoChunk = true;
|
||||
ServerPlayer serverPlayer = (ServerPlayer) player;
|
||||
if (LeavesConfig.modify.elytraAeronautics.noChunkMes) {
|
||||
serverPlayer.sendSystemMessage(Component.literal(LeavesConfig.modify.elytraAeronautics.noChunkStartMes), true);
|
||||
if (LeavesConfig.modify.elytraAeronautics.doSendMessages) {
|
||||
serverPlayer.sendSystemMessage(Component.literal(LeavesConfig.modify.elytraAeronautics.startMessage), true);
|
||||
}
|
||||
try {
|
||||
PlatformHooks.get().removePlayerFromDistanceMaps(serverPlayer.serverLevel(), serverPlayer);
|
||||
@@ -122,8 +132,8 @@ public class ElytraAeronauticsHelper {
|
||||
if (player.elytraAeronauticsNoChunk) {
|
||||
player.elytraAeronauticsNoChunk = false;
|
||||
ServerPlayer serverPlayer = (ServerPlayer) player;
|
||||
if (LeavesConfig.modify.elytraAeronautics.noChunkMes) {
|
||||
serverPlayer.sendSystemMessage(Component.literal(LeavesConfig.modify.elytraAeronautics.noChunkEndMes), true);
|
||||
if (LeavesConfig.modify.elytraAeronautics.doSendMessages) {
|
||||
serverPlayer.sendSystemMessage(Component.literal(LeavesConfig.modify.elytraAeronautics.endMessage), true);
|
||||
}
|
||||
try {
|
||||
PlatformHooks.get().addPlayerToDistanceMaps((ServerLevel) serverPlayer.level(), serverPlayer);
|
||||
|
||||
Reference in New Issue
Block a user