mirror of
https://github.com/GeyserMC/MCProtocolLib.git
synced 2024-12-12 08:41:00 -05:00
Remove -1 workarounds in favor of new user error handling, add exception subclasses for MagicValues errors.
This commit is contained in:
parent
8e6bc6386b
commit
28dac2ec32
10 changed files with 41 additions and 14 deletions
2
pom.xml
2
pom.xml
|
@ -62,7 +62,7 @@
|
|||
<dependency>
|
||||
<groupId>com.github.steveice10</groupId>
|
||||
<artifactId>packetlib</artifactId>
|
||||
<version>43b394dfdc</version>
|
||||
<version>614d56cdc0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
|
|
@ -1173,11 +1173,6 @@ public class MagicValues {
|
|||
register(sound, sound.ordinal());
|
||||
register(sound, sound.getName());
|
||||
}
|
||||
|
||||
// Handle some protocol version translators that may send -1 for untranslatable IDs.
|
||||
// Choics are based on what (I think?) vanilla would default to.
|
||||
register(EntityType.PIG, -1);
|
||||
register(BuiltinSound.ENTITY_ITEM_PICKUP, -1);
|
||||
}
|
||||
|
||||
private MagicValues() {
|
||||
|
@ -1211,7 +1206,7 @@ public class MagicValues {
|
|||
}
|
||||
}
|
||||
|
||||
throw new IllegalArgumentException("Value " + value + " has no mapping for key class " + keyType.getName() + ".");
|
||||
throw new UnmappedValueException(value, keyType);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
@ -1238,6 +1233,6 @@ public class MagicValues {
|
|||
}
|
||||
}
|
||||
|
||||
throw new IllegalArgumentException("Key " + key + " has no mapping for value class " + valueType.getName() + ".");
|
||||
throw new UnmappedKeyException(key, valueType);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
package com.github.steveice10.mc.protocol.data;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public class UnmappedKeyException extends IllegalArgumentException {
|
||||
private Enum<?> key;
|
||||
private Class<?> valueType;
|
||||
|
||||
public UnmappedKeyException(Object key, Class<?> valueType) {
|
||||
super("Key " + key + " has no mapping for value class " + valueType.getName() + ".");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
package com.github.steveice10.mc.protocol.data;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public class UnmappedValueException extends IllegalArgumentException {
|
||||
private Object value;
|
||||
private Class<?> keyType;
|
||||
|
||||
public UnmappedValueException(Object value, Class<?> keyType) {
|
||||
super("Value " + value + " has no mapping for key class " + keyType.getName() + ".");
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package com.github.steveice10.mc.protocol.data.game.entity.attribute;
|
||||
|
||||
import com.github.steveice10.mc.protocol.data.MagicValues;
|
||||
import com.github.steveice10.mc.protocol.data.UnmappedValueException;
|
||||
import lombok.Data;
|
||||
import lombok.NonNull;
|
||||
|
||||
|
@ -25,7 +26,7 @@ public class AttributeModifier {
|
|||
ModifierType type = null;
|
||||
try {
|
||||
type = MagicValues.key(ModifierType.class, uuid);
|
||||
} catch(IllegalArgumentException e) {
|
||||
} catch(UnmappedValueException e) {
|
||||
}
|
||||
|
||||
this.type = type;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.github.steveice10.mc.protocol.packet.ingame.server;
|
||||
|
||||
import com.github.steveice10.mc.protocol.data.MagicValues;
|
||||
import com.github.steveice10.mc.protocol.data.UnmappedValueException;
|
||||
import com.github.steveice10.mc.protocol.data.game.statistic.BreakBlockStatistic;
|
||||
import com.github.steveice10.mc.protocol.data.game.statistic.BreakItemStatistic;
|
||||
import com.github.steveice10.mc.protocol.data.game.statistic.CraftItemStatistic;
|
||||
|
@ -73,7 +74,7 @@ public class ServerStatisticsPacket implements Packet {
|
|||
default:
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
} catch (IllegalArgumentException e) {
|
||||
} catch (UnmappedValueException e) {
|
||||
statistic = new CustomStatistic(categoryId, statisticId);
|
||||
}
|
||||
this.statistics.put(statistic, in.readVarInt());
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.github.steveice10.mc.protocol.packet.ingame.server;
|
||||
|
||||
import com.github.steveice10.mc.protocol.data.MagicValues;
|
||||
import com.github.steveice10.mc.protocol.data.UnmappedValueException;
|
||||
import com.github.steveice10.mc.protocol.data.game.world.sound.BuiltinSound;
|
||||
import com.github.steveice10.mc.protocol.data.game.world.sound.CustomSound;
|
||||
import com.github.steveice10.mc.protocol.data.game.world.sound.Sound;
|
||||
|
@ -41,7 +42,7 @@ public class ServerStopSoundPacket implements Packet {
|
|||
String value = in.readString();
|
||||
try {
|
||||
this.sound = MagicValues.key(BuiltinSound.class, value);
|
||||
} catch(IllegalArgumentException e) {
|
||||
} catch(UnmappedValueException e) {
|
||||
this.sound = new CustomSound(value);
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.github.steveice10.mc.protocol.packet.ingame.server.scoreboard;
|
||||
|
||||
import com.github.steveice10.mc.protocol.data.MagicValues;
|
||||
import com.github.steveice10.mc.protocol.data.UnmappedValueException;
|
||||
import com.github.steveice10.mc.protocol.data.game.scoreboard.CollisionRule;
|
||||
import com.github.steveice10.mc.protocol.data.game.scoreboard.NameTagVisibility;
|
||||
import com.github.steveice10.mc.protocol.data.game.scoreboard.TeamAction;
|
||||
|
@ -100,7 +101,7 @@ public class ServerTeamPacket implements Packet {
|
|||
|
||||
try {
|
||||
this.color = MagicValues.key(TeamColor.class, in.readVarInt());
|
||||
} catch(IllegalArgumentException e) {
|
||||
} catch(UnmappedValueException e) {
|
||||
this.color = TeamColor.NONE;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.github.steveice10.mc.protocol.packet.ingame.server.world;
|
||||
|
||||
import com.github.steveice10.mc.protocol.data.MagicValues;
|
||||
import com.github.steveice10.mc.protocol.data.UnmappedValueException;
|
||||
import com.github.steveice10.mc.protocol.data.game.entity.metadata.Position;
|
||||
import com.github.steveice10.mc.protocol.data.game.entity.player.BlockBreakStage;
|
||||
import com.github.steveice10.packetlib.io.NetInput;
|
||||
|
@ -29,7 +30,7 @@ public class ServerBlockBreakAnimPacket implements Packet {
|
|||
this.position = Position.read(in);
|
||||
try {
|
||||
this.stage = MagicValues.key(BlockBreakStage.class, in.readUnsignedByte());
|
||||
} catch(IllegalArgumentException e) {
|
||||
} catch(UnmappedValueException e) {
|
||||
this.stage = BlockBreakStage.RESET;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.github.steveice10.mc.protocol.packet.ingame.server.world;
|
||||
|
||||
import com.github.steveice10.mc.protocol.data.MagicValues;
|
||||
import com.github.steveice10.mc.protocol.data.UnmappedValueException;
|
||||
import com.github.steveice10.mc.protocol.data.game.world.sound.BuiltinSound;
|
||||
import com.github.steveice10.mc.protocol.data.game.world.sound.CustomSound;
|
||||
import com.github.steveice10.mc.protocol.data.game.world.sound.Sound;
|
||||
|
@ -35,7 +36,7 @@ public class ServerPlaySoundPacket implements Packet {
|
|||
String value = in.readString();
|
||||
try {
|
||||
this.sound = MagicValues.key(BuiltinSound.class, value);
|
||||
} catch(IllegalArgumentException e) {
|
||||
} catch(UnmappedValueException e) {
|
||||
this.sound = new CustomSound(value);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue