diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftInput.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftInput.java new file mode 100644 index 0000000000..ee71b85e77 --- /dev/null +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftInput.java @@ -0,0 +1,75 @@ +package org.bukkit.craftbukkit; + +import java.util.Objects; +import org.bukkit.Input; + +public class CraftInput implements Input { + + private final net.minecraft.world.entity.player.Input handle; + + public CraftInput(net.minecraft.world.entity.player.Input handle) { + this.handle = handle; + } + + @Override + public boolean isForward() { + return handle.forward(); + } + + @Override + public boolean isBackward() { + return handle.backward(); + } + + @Override + public boolean isLeft() { + return handle.left(); + } + + @Override + public boolean isRight() { + return handle.right(); + } + + @Override + public boolean isJump() { + return handle.jump(); + } + + @Override + public boolean isSneak() { + return handle.shift(); + } + + @Override + public boolean isSprint() { + return handle.sprint(); + } + + @Override + public int hashCode() { + int hash = 7; + hash = 89 * hash + Objects.hashCode(this.handle); + return hash; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final CraftInput other = (CraftInput) obj; + return Objects.equals(this.handle, other.handle); + } + + @Override + public String toString() { + return "CraftInput{" + handle + '}'; + } +} diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index a4cfc6a9da..fa364aa322 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -118,6 +118,7 @@ import org.bukkit.Bukkit; import org.bukkit.DyeColor; import org.bukkit.Effect; import org.bukkit.GameMode; +import org.bukkit.Input; import org.bukkit.Instrument; import org.bukkit.Location; import org.bukkit.Material; @@ -144,6 +145,7 @@ import org.bukkit.conversations.ConversationAbandonedEvent; import org.bukkit.conversations.ManuallyAbandonedConversationCanceller; import org.bukkit.craftbukkit.CraftEffect; import org.bukkit.craftbukkit.CraftEquipmentSlot; +import org.bukkit.craftbukkit.CraftInput; import org.bukkit.craftbukkit.CraftOfflinePlayer; import org.bukkit.craftbukkit.CraftParticle; import org.bukkit.craftbukkit.CraftServer; @@ -1193,6 +1195,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return getHandle().getEnderPearls().stream().map((e) -> (EnderPearl) e.getBukkitEntity()).collect(Collectors.toList()); } + @Override + public Input getCurrentInput() { + return new CraftInput(getHandle().getLastClientInput()); + } + @Override public Location getBedLocation() { Preconditions.checkState(isSleeping(), "Not sleeping");