mirror of
https://github.com/BX-Team/DivineMC.git
synced 2025-12-19 14:59:25 +00:00
and little more
This commit is contained in:
@@ -0,0 +1,16 @@
|
|||||||
|
--- a/net/minecraft/server/commands/LocateCommand.java
|
||||||
|
+++ b/net/minecraft/server/commands/LocateCommand.java
|
||||||
|
@@ -200,8 +_,10 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
private static float dist(int x1, int z1, int x2, int z2) {
|
||||||
|
- int i = x2 - x1;
|
||||||
|
- int i1 = z2 - z1;
|
||||||
|
- return Mth.sqrt(i * i + i1 * i1);
|
||||||
|
+ // DivineMC start - Fix MC-177381
|
||||||
|
+ double i = x2 - x1;
|
||||||
|
+ double j = z2 - z1;
|
||||||
|
+ return (float) Math.hypot(i, j);
|
||||||
|
+ // DivineMC end
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
--- a/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
+++ b/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
@@ -2239,6 +_,7 @@
|
||||||
|
this.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.CHANGE_GAME_MODE, gameMode.getId()));
|
||||||
|
if (gameMode == GameType.SPECTATOR) {
|
||||||
|
this.removeEntitiesOnShoulder();
|
||||||
|
+ this.stopSleeping(); // DivineMC - Fix MC-119417
|
||||||
|
this.stopRiding();
|
||||||
|
EnchantmentHelper.stopLocationBasedEffects(this);
|
||||||
|
} else {
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
--- a/net/minecraft/util/thread/BlockableEventLoop.java
|
||||||
|
+++ b/net/minecraft/util/thread/BlockableEventLoop.java
|
||||||
|
@@ -22,7 +_,7 @@
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
|
public abstract class BlockableEventLoop<R extends Runnable> implements ProfilerMeasured, TaskScheduler<R>, Executor {
|
||||||
|
- public static final long BLOCK_TIME_NANOS = 100000L;
|
||||||
|
+ public static final long BLOCK_TIME_NANOS = 2000000L; // DivineMC - Fix MC-183518
|
||||||
|
private final String name;
|
||||||
|
private static final Logger LOGGER = LogUtils.getLogger();
|
||||||
|
private final Queue<R> pendingRunnables = Queues.newConcurrentLinkedQueue();
|
||||||
|
@@ -146,8 +_,7 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void waitForTasks() {
|
||||||
|
- Thread.yield();
|
||||||
|
- LockSupport.parkNanos("waiting for tasks", 100000L);
|
||||||
|
+ LockSupport.parkNanos("waiting for tasks", 2000000L); // DivineMC - Fix MC-183518
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void doRunTask(R task) {
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
--- a/net/minecraft/world/entity/monster/ZombieVillager.java
|
||||||
|
+++ b/net/minecraft/world/entity/monster/ZombieVillager.java
|
||||||
|
@@ -313,6 +_,12 @@
|
||||||
|
if (!this.isSilent()) {
|
||||||
|
serverLevel.levelEvent(null, 1027, this.blockPosition(), 0);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ // DivineMC start - Fix MC-200418
|
||||||
|
+ if (villager.isPassenger() && villager.getVehicle() instanceof net.minecraft.world.entity.animal.Chicken && villager.isBaby()) {
|
||||||
|
+ villager.removeVehicle();
|
||||||
|
+ }
|
||||||
|
+ // DivineMC end - Fix MC-200418
|
||||||
|
// CraftBukkit start
|
||||||
|
}, org.bukkit.event.entity.EntityTransformEvent.TransformReason.CURED, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.CURED // CraftBukkit
|
||||||
|
);
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
--- a/net/minecraft/world/entity/vehicle/MinecartHopper.java
|
||||||
|
+++ b/net/minecraft/world/entity/vehicle/MinecartHopper.java
|
||||||
|
@@ -99,6 +_,13 @@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // DivineMC start - tick minecart hopper without players
|
||||||
|
+ @Override
|
||||||
|
+ public void inactiveTick() {
|
||||||
|
+ this.tick();
|
||||||
|
+ }
|
||||||
|
+ // DivineMC end - tick minecart hopper without players
|
||||||
|
+
|
||||||
|
public boolean suckInItems() {
|
||||||
|
if (HopperBlockEntity.suckInItems(this.level(), this)) {
|
||||||
|
this.immunize(); // Paper
|
||||||
@@ -1,5 +1,17 @@
|
|||||||
--- a/net/minecraft/world/level/Level.java
|
--- a/net/minecraft/world/level/Level.java
|
||||||
+++ b/net/minecraft/world/level/Level.java
|
+++ b/net/minecraft/world/level/Level.java
|
||||||
|
@@ -115,9 +_,9 @@
|
||||||
|
public static final int TICKS_PER_DAY = 24000;
|
||||||
|
public static final int MAX_ENTITY_SPAWN_Y = 20000000;
|
||||||
|
public static final int MIN_ENTITY_SPAWN_Y = -20000000;
|
||||||
|
- public final List<TickingBlockEntity> blockEntityTickers = Lists.newArrayList(); // Paper - public
|
||||||
|
+ public final List<TickingBlockEntity> blockEntityTickers = new space.bxteam.divinemc.util.lithium.HashedReferenceList<>(Lists.newArrayList()); // Paper - public // DivineMC - lithium: hashed_list
|
||||||
|
protected final NeighborUpdater neighborUpdater;
|
||||||
|
- private final List<TickingBlockEntity> pendingBlockEntityTickers = Lists.newArrayList();
|
||||||
|
+ private final List<TickingBlockEntity> pendingBlockEntityTickers = new space.bxteam.divinemc.util.lithium.HashedReferenceList<>(Lists.newArrayList()); // DivineMC - lithium: hashed_list
|
||||||
|
private boolean tickingBlockEntities;
|
||||||
|
public final Thread thread;
|
||||||
|
private final boolean isDebug;
|
||||||
@@ -172,8 +_,6 @@
|
@@ -172,8 +_,6 @@
|
||||||
public final io.papermc.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray
|
public final io.papermc.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray
|
||||||
public final org.purpurmc.purpur.PurpurWorldConfig purpurConfig; // Purpur - Purpur config files
|
public final org.purpurmc.purpur.PurpurWorldConfig purpurConfig; // Purpur - Purpur config files
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
--- a/net/minecraft/world/level/block/Blocks.java
|
||||||
|
+++ b/net/minecraft/world/level/block/Blocks.java
|
||||||
|
@@ -6630,6 +_,7 @@
|
||||||
|
.mapColor(MapColor.COLOR_ORANGE)
|
||||||
|
.instrument(NoteBlockInstrument.BASEDRUM)
|
||||||
|
.requiresCorrectToolForDrops()
|
||||||
|
+ .sound(SoundType.COPPER) // DivineMC - Fix MC-223153
|
||||||
|
.strength(5.0F, 6.0F)
|
||||||
|
);
|
||||||
|
public static final Block RAW_GOLD_BLOCK = register(
|
||||||
@@ -0,0 +1,281 @@
|
|||||||
|
package space.bxteam.divinemc.util.lithium;
|
||||||
|
|
||||||
|
import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap;
|
||||||
|
import it.unimi.dsi.fastutil.objects.ReferenceArrayList;
|
||||||
|
import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.ListIterator;
|
||||||
|
import java.util.NoSuchElementException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wraps a {@link List} with a hash table which provides O(1) lookups for {@link Collection#contains(Object)}. The type
|
||||||
|
* contained by this list must use reference-equality semantics.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("SuspiciousMethodCalls")
|
||||||
|
public class HashedReferenceList<T> implements List<T> {
|
||||||
|
private final ReferenceArrayList<T> list;
|
||||||
|
private final Reference2IntOpenHashMap<T> counter;
|
||||||
|
|
||||||
|
public HashedReferenceList(List<T> list) {
|
||||||
|
this.list = new ReferenceArrayList<>();
|
||||||
|
this.list.addAll(list);
|
||||||
|
|
||||||
|
this.counter = new Reference2IntOpenHashMap<>();
|
||||||
|
this.counter.defaultReturnValue(0);
|
||||||
|
|
||||||
|
for (T obj : this.list) {
|
||||||
|
this.counter.addTo(obj, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int size() {
|
||||||
|
return this.list.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEmpty() {
|
||||||
|
return this.list.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean contains(Object o) {
|
||||||
|
return this.counter.containsKey(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Iterator<T> iterator() {
|
||||||
|
return this.listIterator();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object[] toArray() {
|
||||||
|
return this.list.toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T1> T1[] toArray(T1 @NotNull [] a) {
|
||||||
|
return this.list.toArray(a);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean add(T t) {
|
||||||
|
this.trackReferenceAdded(t);
|
||||||
|
|
||||||
|
return this.list.add(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean remove(Object o) {
|
||||||
|
this.trackReferenceRemoved(o);
|
||||||
|
|
||||||
|
return this.list.remove(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean containsAll(Collection<?> c) {
|
||||||
|
for (Object obj : c) {
|
||||||
|
if (!this.counter.containsKey(obj)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addAll(Collection<? extends T> c) {
|
||||||
|
for (T obj : c) {
|
||||||
|
this.trackReferenceAdded(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.list.addAll(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addAll(int index, Collection<? extends T> c) {
|
||||||
|
for (T obj : c) {
|
||||||
|
this.trackReferenceAdded(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.list.addAll(index, c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean removeAll(@NotNull Collection<?> c) {
|
||||||
|
if (this.size() >= 2 && c.size() > 4 && c instanceof List) {
|
||||||
|
//HashReferenceList uses reference equality, so using ReferenceOpenHashSet is fine
|
||||||
|
c = new ReferenceOpenHashSet<>(c);
|
||||||
|
}
|
||||||
|
this.counter.keySet().removeAll(c);
|
||||||
|
return this.list.removeAll(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean retainAll(@NotNull Collection<?> c) {
|
||||||
|
this.counter.keySet().retainAll(c);
|
||||||
|
return this.list.retainAll(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clear() {
|
||||||
|
this.counter.clear();
|
||||||
|
this.list.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T get(int index) {
|
||||||
|
return this.list.get(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T set(int index, T element) {
|
||||||
|
T prev = this.list.set(index, element);
|
||||||
|
|
||||||
|
if (prev != element) {
|
||||||
|
if (prev != null) {
|
||||||
|
this.trackReferenceRemoved(prev);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.trackReferenceAdded(element);
|
||||||
|
}
|
||||||
|
|
||||||
|
return prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void add(int index, T element) {
|
||||||
|
this.trackReferenceAdded(element);
|
||||||
|
|
||||||
|
this.list.add(index, element);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T remove(int index) {
|
||||||
|
T prev = this.list.remove(index);
|
||||||
|
|
||||||
|
if (prev != null) {
|
||||||
|
this.trackReferenceRemoved(prev);
|
||||||
|
}
|
||||||
|
|
||||||
|
return prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int indexOf(Object o) {
|
||||||
|
return this.list.indexOf(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int lastIndexOf(Object o) {
|
||||||
|
return this.list.lastIndexOf(o);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListIterator<T> listIterator() {
|
||||||
|
return this.listIterator(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListIterator<T> listIterator(int index) {
|
||||||
|
return new ListIterator<>() {
|
||||||
|
private final ListIterator<T> inner = HashedReferenceList.this.list.listIterator(index);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasNext() {
|
||||||
|
return this.inner.hasNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T next() {
|
||||||
|
return this.inner.next();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPrevious() {
|
||||||
|
return this.inner.hasPrevious();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T previous() {
|
||||||
|
return this.inner.previous();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int nextIndex() {
|
||||||
|
return this.inner.nextIndex();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int previousIndex() {
|
||||||
|
return this.inner.previousIndex();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void remove() {
|
||||||
|
int last = this.previousIndex();
|
||||||
|
|
||||||
|
if (last == -1) {
|
||||||
|
throw new NoSuchElementException();
|
||||||
|
}
|
||||||
|
|
||||||
|
T prev = HashedReferenceList.this.get(last);
|
||||||
|
|
||||||
|
if (prev != null) {
|
||||||
|
HashedReferenceList.this.trackReferenceRemoved(prev);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.inner.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void set(T t) {
|
||||||
|
int last = this.previousIndex();
|
||||||
|
|
||||||
|
if (last == -1) {
|
||||||
|
throw new NoSuchElementException();
|
||||||
|
}
|
||||||
|
|
||||||
|
T prev = HashedReferenceList.this.get(last);
|
||||||
|
|
||||||
|
if (prev != t) {
|
||||||
|
if (prev != null) {
|
||||||
|
HashedReferenceList.this.trackReferenceRemoved(prev);
|
||||||
|
}
|
||||||
|
|
||||||
|
HashedReferenceList.this.trackReferenceAdded(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.inner.remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void add(T t) {
|
||||||
|
HashedReferenceList.this.trackReferenceAdded(t);
|
||||||
|
|
||||||
|
this.inner.add(t);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<T> subList(int fromIndex, int toIndex) {
|
||||||
|
return this.list.subList(fromIndex, toIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void trackReferenceAdded(T t) {
|
||||||
|
this.counter.addTo(t, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
private void trackReferenceRemoved(Object o) {
|
||||||
|
if (this.counter.addTo((T) o, -1) <= 1) {
|
||||||
|
this.counter.removeInt(o);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com>
|
|
||||||
Date: Wed, 22 May 2024 23:26:51 +0300
|
|
||||||
Subject: [PATCH] Make minecart hopper work without players
|
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java b/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java
|
|
||||||
index d81a6874e8b25f098df619f84c359e146c7f64de..1d2794b77ca71b1dd9abd1200860467be2c346d9 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java
|
|
||||||
@@ -99,6 +99,13 @@ public class MinecartHopper extends AbstractMinecartContainer implements Hopper
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // DivineMC start - tick minecart
|
|
||||||
+ @Override
|
|
||||||
+ public void inactiveTick() {
|
|
||||||
+ this.tick();
|
|
||||||
+ }
|
|
||||||
+ // DivineMC end
|
|
||||||
+
|
|
||||||
public boolean suckInItems() {
|
|
||||||
if (HopperBlockEntity.suckInItems(this.level(), this)) {
|
|
||||||
this.immunize(); // Paper
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com>
|
|
||||||
Date: Thu, 11 Jul 2024 19:11:08 +0300
|
|
||||||
Subject: [PATCH] Fix MC-223153
|
|
||||||
|
|
||||||
Original bug on Mojira: https://bugs.mojang.com/browse/MC-223153
|
|
||||||
Took here: https://github.com/Winds-Studio/Leaf/blob/ver/1.21/patches/server/0083-Fix-MC-223153.patch
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/block/Blocks.java b/src/main/java/net/minecraft/world/level/block/Blocks.java
|
|
||||||
index c5f8227cd9631d98cc8404e3f6d6109a55c617aa..041013600b2b76c146d7f73e9429376ac09faf23 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/level/block/Blocks.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/level/block/Blocks.java
|
|
||||||
@@ -6600,6 +6600,7 @@ public class Blocks {
|
|
||||||
.mapColor(MapColor.COLOR_ORANGE)
|
|
||||||
.instrument(NoteBlockInstrument.BASEDRUM)
|
|
||||||
.requiresCorrectToolForDrops()
|
|
||||||
+ .sound(SoundType.COPPER) // DivineMC - Fix MC-223153
|
|
||||||
.strength(5.0F, 6.0F)
|
|
||||||
);
|
|
||||||
public static final Block RAW_GOLD_BLOCK = register(
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com>
|
|
||||||
Date: Thu, 11 Jul 2024 19:12:14 +0300
|
|
||||||
Subject: [PATCH] Fix MC-119417
|
|
||||||
|
|
||||||
Original bug on Mojira: https://bugs.mojang.com/browse/MC-119417
|
|
||||||
Took here: https://github.com/Winds-Studio/Leaf/blob/ver/1.21/patches/server/0082-Fix-MC-119417.patch
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
index 6f39fd99ffb28d6c0267f4251c54af0c519289db..0da41d7b11ac98d4cbd059f48be75fb43012118e 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
||||||
@@ -2487,6 +2487,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple
|
|
||||||
this.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.CHANGE_GAME_MODE, (float) gameMode.getId()));
|
|
||||||
if (gameMode == GameType.SPECTATOR) {
|
|
||||||
this.removeEntitiesOnShoulder();
|
|
||||||
+ this.stopSleeping(); // DivineMC - Fix MC-119417
|
|
||||||
this.stopRiding();
|
|
||||||
EnchantmentHelper.stopLocationBasedEffects(this);
|
|
||||||
} else {
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com>
|
|
||||||
Date: Thu, 11 Jul 2024 19:15:23 +0300
|
|
||||||
Subject: [PATCH] Fix MC-200418
|
|
||||||
|
|
||||||
Original bug on Mojira: https://bugs.mojang.com/browse/MC-200418
|
|
||||||
Took here: https://github.com/Winds-Studio/Leaf/blob/ver/1.21/patches/server/0081-Fix-MC-200418.patch
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
|
|
||||||
index bba3562bf316878e7b8ba6a138889d9583a1b0f6..7ce3a667b819c096257732d8505b1aae03b0a148 100644
|
|
||||||
--- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
|
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
|
|
||||||
@@ -330,6 +330,12 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
|
|
||||||
if (!this.isSilent()) {
|
|
||||||
world.levelEvent((Player) null, 1027, this.blockPosition(), 0);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ // DivineMC start - Fix MC-200418
|
|
||||||
+ if (entityvillager.isPassenger() && entityvillager.getVehicle() instanceof net.minecraft.world.entity.animal.Chicken && entityvillager.isBaby()) {
|
|
||||||
+ entityvillager.removeVehicle();
|
|
||||||
+ }
|
|
||||||
+ // DivineMC end
|
|
||||||
// CraftBukkit start
|
|
||||||
}, EntityTransformEvent.TransformReason.CURED, CreatureSpawnEvent.SpawnReason.CURED);
|
|
||||||
if (converted == null) {
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com>
|
|
||||||
Date: Mon, 17 Jun 2024 17:15:13 +0300
|
|
||||||
Subject: [PATCH] Fix MC-183518
|
|
||||||
|
|
||||||
Issue on Mojira: https://bugs.mojang.com/browse/MC-183518
|
|
||||||
P.S. Btw, I took this fix from this PR - https://github.com/Winds-Studio/Leaf/pull/69
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java b/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java
|
|
||||||
index 9b706276dc5b5f55b966c5472c6c4e864342b916..e9f2b88058bea5841fa648dad32903af19293328 100644
|
|
||||||
--- a/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java
|
|
||||||
+++ b/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java
|
|
||||||
@@ -22,7 +22,7 @@ import net.minecraft.util.profiling.metrics.ProfilerMeasured;
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
|
|
||||||
public abstract class BlockableEventLoop<R extends Runnable> implements ProfilerMeasured, TaskScheduler<R>, Executor {
|
|
||||||
- public static final long BLOCK_TIME_NANOS = 100000L;
|
|
||||||
+ public static final long BLOCK_TIME_NANOS = 2000000L; // DivineMC - Fix MC-183518
|
|
||||||
private final String name;
|
|
||||||
private static final Logger LOGGER = LogUtils.getLogger();
|
|
||||||
private final Queue<R> pendingRunnables = Queues.newConcurrentLinkedQueue();
|
|
||||||
@@ -145,8 +145,7 @@ public abstract class BlockableEventLoop<R extends Runnable> implements Profiler
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void waitForTasks() {
|
|
||||||
- Thread.yield();
|
|
||||||
- LockSupport.parkNanos("waiting for tasks", 100000L);
|
|
||||||
+ LockSupport.parkNanos("waiting for tasks", 2000000L); // DivineMC - Fix MC-183518
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void doRunTask(R task) {
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com>
|
|
||||||
Date: Mon, 16 Dec 2024 01:22:14 +0300
|
|
||||||
Subject: [PATCH] Fix MC-177381
|
|
||||||
|
|
||||||
Original bug on Mojira https://bugs.mojang.com/browse/MC-177381
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/commands/LocateCommand.java b/src/main/java/net/minecraft/server/commands/LocateCommand.java
|
|
||||||
index 2972f041eea95b92b37c2ab869f9f8ed3d142a27..894bc308d623be6afded9aceca9a85c3ec4ac66d 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/commands/LocateCommand.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/commands/LocateCommand.java
|
|
||||||
@@ -196,8 +196,10 @@ public class LocateCommand {
|
|
||||||
}
|
|
||||||
|
|
||||||
private static float dist(int x1, int y1, int x2, int y2) {
|
|
||||||
- int i = x2 - x1;
|
|
||||||
- int j = y2 - y1;
|
|
||||||
- return Mth.sqrt((float)(i * i + j * j));
|
|
||||||
+ // DivineMC start - Fix MC-177381
|
|
||||||
+ double i = x2 - x1;
|
|
||||||
+ double j = y2 - y1;
|
|
||||||
+ return (float) Math.hypot(i, j);
|
|
||||||
+ // DivineMC end
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user