Skip to content

Commit db8b6a9

Browse files
committed
fix crash when fake player dies during vehicle ticking
fix #30
1 parent d0d5c4d commit db8b6a9

2 files changed

Lines changed: 36 additions & 26 deletions

File tree

patches/net/minecraft/server/MinecraftServer.java.patch

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,22 @@
435435
}
436436

437437
public CrashReport addServerInfoToCrashReport(CrashReport report)
438-
@@ -1605,6 +1784,12 @@
438+
@@ -1585,6 +1764,14 @@
439+
}
440+
}
441+
442+
+ // TISCM: for fixing https://github.com/TISUnion/TISCarpet113/issues/30
443+
+ public void scheduleFutureTask$TISCM(Runnable runnableToSchedule)
444+
+ {
445+
+ Callable<?> callable = Executors.callable(runnableToSchedule);
446+
+ ListenableFutureTask<?> listenablefuturetask = ListenableFutureTask.create(callable);
447+
+ this.futureTaskQueue.add(listenablefuturetask);
448+
+ }
449+
+
450+
public ListenableFuture<Object> addScheduledTask(Runnable runnableToSchedule)
451+
{
452+
Validate.notNull(runnableToSchedule);
453+
@@ -1605,6 +1792,12 @@
439454
{
440455
return this.serverTime;
441456
}
@@ -448,15 +463,15 @@
448463

449464
public Thread getServerThread()
450465
{
451-
@@ -1639,6 +1824,7 @@
466+
@@ -1639,6 +1832,7 @@
452467
}
453468
else
454469
{
455470
+ multimeterServer.getMultimeter().reloadOptions(); // RSMM
456471
this.getPlayerList().saveAllPlayerData();
457472
this.resourcePacks.reloadPacksFromFinders();
458473
this.loadDataPacks(this.getWorld(DimensionType.OVERWORLD).getWorldInfo());
459-
@@ -1825,4 +2011,28 @@
474+
@@ -1825,4 +2019,28 @@
460475
return 0;
461476
}
462477
}

src/main/java/carpet/patches/EntityPlayerMPFake.java

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,20 @@
11
package carpet.patches;
22

3-
import net.minecraft.entity.Entity;
4-
import net.minecraft.network.play.server.SPacketEntityHeadLook;
5-
import net.minecraft.network.play.server.SPacketEntityTeleport;
6-
import net.minecraft.network.play.server.SPacketPlayerListItem;
7-
import net.minecraft.server.MinecraftServer;
8-
import net.minecraft.server.management.PlayerInteractionManager;
9-
import com.mojang.authlib.GameProfile;
10-
import net.minecraft.tileentity.TileEntitySkull;
11-
import net.minecraft.util.DamageSource;
12-
import net.minecraft.util.math.Vec2f;
13-
import net.minecraft.util.math.Vec3d;
14-
import net.minecraft.util.text.TextComponentTranslation;
15-
import net.minecraft.world.WorldServer;
16-
import net.minecraft.entity.player.EntityPlayerMP;
17-
import net.minecraft.network.EnumPacketDirection;
18-
19-
import net.minecraft.world.GameType;
20-
import net.minecraft.world.dimension.DimensionType;
21-
22-
import java.util.function.BiConsumer;
3+
import com.mojang.authlib.GameProfile;
4+
import net.minecraft.entity.Entity;
5+
import net.minecraft.entity.player.EntityPlayerMP;
6+
import net.minecraft.network.EnumPacketDirection;
7+
import net.minecraft.network.play.server.SPacketEntityHeadLook;
8+
import net.minecraft.network.play.server.SPacketEntityTeleport;
9+
import net.minecraft.network.play.server.SPacketPlayerListItem;
10+
import net.minecraft.server.MinecraftServer;
11+
import net.minecraft.server.management.PlayerInteractionManager;
12+
import net.minecraft.tileentity.TileEntitySkull;
13+
import net.minecraft.util.DamageSource;
14+
import net.minecraft.util.text.TextComponentTranslation;
15+
import net.minecraft.world.GameType;
16+
import net.minecraft.world.WorldServer;
17+
import net.minecraft.world.dimension.DimensionType;
2318

2419
public class EntityPlayerMPFake extends EntityPlayerMP
2520
{
@@ -97,7 +92,7 @@ public void onKillCommand()
9792
{
9893
//super.onKillCommand();
9994
//check for 1.14compatibility
100-
this.getServer().addScheduledTask( () -> this.getServer().getPlayerList().playerLoggedOut(this) );
95+
this.getServer().scheduleFutureTask$TISCM( () -> this.getServer().getPlayerList().playerLoggedOut(this) );
10196
}
10297

10398
@Override
@@ -117,14 +112,14 @@ public void onDeath(DamageSource cause)
117112
{
118113
//check for 1.14 compatibility
119114
super.onDeath(cause);
120-
this.getServer().addScheduledTask( () -> this.getServer().getPlayerList().playerLoggedOut(this) );
115+
this.getServer().scheduleFutureTask$TISCM( () -> this.getServer().getPlayerList().playerLoggedOut(this) );
121116
}
122117

123118
@Override
124119
public Entity changeDimension(DimensionType p_212321_1_)
125120
{
126121
Entity res = super.changeDimension(p_212321_1_);
127-
this.getServer().addScheduledTask( () -> clearInvulnerableDimensionChange());
122+
this.getServer().scheduleFutureTask$TISCM( () -> clearInvulnerableDimensionChange());
128123
return res;
129124
}
130125
}

0 commit comments

Comments
 (0)