3
0
Mirror von https://github.com/ViaVersion/ViaVersion.git synchronisiert 2024-12-26 08:10:09 +01:00

Only show blocking if it knows that we're blocking #176

Dieser Commit ist enthalten in:
Myles 2016-03-08 19:27:04 +00:00
Ursprung 29754c0787
Commit 6e4fd5a63b

Datei anzeigen

@ -1,6 +1,7 @@
package us.myles.ViaVersion.transformers; package us.myles.ViaVersion.transformers;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import org.bukkit.Material;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser; import org.json.simple.parser.JSONParser;
@ -37,6 +38,7 @@ public class OutgoingTransformer {
private final Map<Integer, UUID> uuidMap = new HashMap<>(); private final Map<Integer, UUID> uuidMap = new HashMap<>();
private final Map<Integer, EntityType> clientEntityTypes = new HashMap<>(); private final Map<Integer, EntityType> clientEntityTypes = new HashMap<>();
private final Map<Integer, Integer> vehicleMap = new HashMap<>(); private final Map<Integer, Integer> vehicleMap = new HashMap<>();
private final Set<Integer> validBlocking = new HashSet<>();
private boolean autoTeam = false; private boolean autoTeam = false;
public OutgoingTransformer(ConnectionInfo info) { public OutgoingTransformer(ConnectionInfo info) {
@ -317,7 +319,24 @@ public class OutgoingTransformer {
slot += 1; // add 1 so it's now 2-5 slot += 1; // add 1 so it's now 2-5
} }
PacketUtil.writeVarInt(slot, output); PacketUtil.writeVarInt(slot, output);
if (slot == 0) {
// Read aheat for sword
input.markReaderIndex();
short itemID = input.readShort();
if (itemID != -1) {
Material m = Material.getMaterial(itemID);
if (m != null) {
if (m.name().endsWith("SWORD")) {
validBlocking.add(id);
} else {
validBlocking.remove(id);
}
}
} else {
validBlocking.remove(id);
}
input.resetReaderIndex();
}
ItemSlotRewriter.rewrite1_8To1_9(input, output); ItemSlotRewriter.rewrite1_8To1_9(input, output);
return; return;
} }
@ -808,12 +827,15 @@ public class OutgoingTransformer {
if (entry.getOldID() == 0) { if (entry.getOldID() == 0) {
// Byte // Byte
byte data = (byte) entry.getValue(); byte data = (byte) entry.getValue();
if ((data & 0x10) == 0x10) { if ((data & 0x10) == 0x10) {
if (validBlocking.contains(entityID)) {
ItemSlotRewriter.ItemStack shield = new ItemSlotRewriter.ItemStack(); ItemSlotRewriter.ItemStack shield = new ItemSlotRewriter.ItemStack();
shield.id = 442; shield.id = 442;
shield.amount = 1; shield.amount = 1;
shield.data = 0; shield.data = 0;
sendSecondHandItem(entityID, shield); sendSecondHandItem(entityID, shield);
}
} else { } else {
sendSecondHandItem(entityID, null); sendSecondHandItem(entityID, null);
} }