Executions can now be cancelled, Properly implemented gripping progress bar, recovery timer is paused while getting carried, some bug fixes
This commit is contained in:
@@ -10,7 +10,6 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
|
|||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import net.minecraftforge.event.entity.EntityMountEvent;
|
import net.minecraftforge.event.entity.EntityMountEvent;
|
||||||
import net.minecraft.network.protocol.game.ClientboundSetPassengersPacket;
|
import net.minecraft.network.protocol.game.ClientboundSetPassengersPacket;
|
||||||
import net.minecraftforge.network.PacketDistributor;
|
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@@ -61,17 +60,13 @@ public class CarryManager {
|
|||||||
|
|
||||||
|
|
||||||
private static void stopCarry(Player knocked, ServerPlayer carrier) {
|
private static void stopCarry(Player knocked, ServerPlayer carrier) {
|
||||||
knocked.stopRiding();
|
|
||||||
carrying.remove(knocked.getUUID());
|
carrying.remove(knocked.getUUID());
|
||||||
ClientboundSetPassengersPacket dismount = new ClientboundSetPassengersPacket(carrier);
|
knocked.stopRiding();
|
||||||
NetworkHandler.CHANNEL.send(
|
ClientboundSetPassengersPacket dismountPacket = new ClientboundSetPassengersPacket(carrier);
|
||||||
PacketDistributor.TRACKING_ENTITY.with(() -> carrier),
|
carrier.connection.send(dismountPacket);
|
||||||
dismount
|
if (knocked instanceof ServerPlayer spKnocked) {
|
||||||
);
|
spKnocked.connection.send(dismountPacket);
|
||||||
NetworkHandler.CHANNEL.send(
|
}
|
||||||
PacketDistributor.PLAYER.with(() -> carrier),
|
|
||||||
dismount
|
|
||||||
);
|
|
||||||
carrier.sendSystemMessage(Component.literal("Dropped " + knocked.getName().getString()));
|
carrier.sendSystemMessage(Component.literal("Dropped " + knocked.getName().getString()));
|
||||||
knocked.sendSystemMessage(Component.literal("You have been dropped"));
|
knocked.sendSystemMessage(Component.literal("You have been dropped"));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import net.minecraft.world.entity.LivingEntity;
|
|||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraftforge.network.NetworkEvent;
|
import net.minecraftforge.network.NetworkEvent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class ExecuteKnockedPacket {
|
public class ExecuteKnockedPacket {
|
||||||
@@ -24,8 +25,13 @@ public class ExecuteKnockedPacket {
|
|||||||
if (executor == null) return;
|
if (executor == null) return;
|
||||||
LivingEntity target = findNearestKnockedEntity(executor);
|
LivingEntity target = findNearestKnockedEntity(executor);
|
||||||
if (target != null) {
|
if (target != null) {
|
||||||
if (target instanceof Player targetPlayer) {
|
if (target instanceof Player tp) {
|
||||||
PlayerExecutionHandler.startExecution(executor, targetPlayer);
|
UUID tid = tp.getUUID();
|
||||||
|
if (PlayerExecutionHandler.isBeingPlayerExecuted(tid)) {
|
||||||
|
PlayerExecutionHandler.cancelExecution(tid);
|
||||||
|
} else {
|
||||||
|
PlayerExecutionHandler.startExecution(executor, tp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -65,6 +65,17 @@ public class KnockedManager {
|
|||||||
Map.Entry<UUID, Integer> entry = it.next();
|
Map.Entry<UUID, Integer> entry = it.next();
|
||||||
UUID playerId = entry.getKey();
|
UUID playerId = entry.getKey();
|
||||||
int timeLeft = entry.getValue();
|
int timeLeft = entry.getValue();
|
||||||
|
if ( grippedEntities.contains(playerId)
|
||||||
|
|| CarryManager.isBeingCarried(playerId) ) {
|
||||||
|
ServerPlayer p = NetworkHandlerHelper.getPlayerByUuid(server, playerId);
|
||||||
|
if (p != null) {
|
||||||
|
NetworkHandler.CHANNEL.send(
|
||||||
|
PacketDistributor.PLAYER.with(() -> p),
|
||||||
|
new KnockedTimePacket(timeLeft)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (MobKillHandler.isBeingMobExecuted(playerId)
|
if (MobKillHandler.isBeingMobExecuted(playerId)
|
||||||
|| PlayerExecutionHandler.isBeingPlayerExecuted(playerId)) {
|
|| PlayerExecutionHandler.isBeingPlayerExecuted(playerId)) {
|
||||||
ServerPlayer p = NetworkHandlerHelper.getPlayerByUuid(server, playerId);
|
ServerPlayer p = NetworkHandlerHelper.getPlayerByUuid(server, playerId);
|
||||||
|
|||||||
@@ -84,10 +84,18 @@ public class PlayerExecutionHandler {
|
|||||||
ServerPlayer knocked = getPlayerByUuid(knockedId);
|
ServerPlayer knocked = getPlayerByUuid(knockedId);
|
||||||
if (knocked != null) {
|
if (knocked != null) {
|
||||||
knocked.sendSystemMessage(Component.literal("Execution interrupted!"));
|
knocked.sendSystemMessage(Component.literal("Execution interrupted!"));
|
||||||
|
NetworkHandler.CHANNEL.send(
|
||||||
|
PacketDistributor.PLAYER.with(() -> knocked),
|
||||||
|
new ExecutionProgressPacket(0)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
ServerPlayer executor = getPlayerByUuid(attempt.executorUuid);
|
ServerPlayer executor = getPlayerByUuid(attempt.executorUuid);
|
||||||
if (executor != null) {
|
if (executor != null) {
|
||||||
executor.sendSystemMessage(Component.literal("Your execution was interrupted!"));
|
executor.sendSystemMessage(Component.literal("Your execution was interrupted!"));
|
||||||
|
NetworkHandler.CHANNEL.send(
|
||||||
|
PacketDistributor.PLAYER.with(() -> executor),
|
||||||
|
new ExecutionProgressPacket(0)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user