Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-12-26 08:10:09 +01:00
Possibility to show the new 1.9 death messages (#348)
Dieser Commit ist enthalten in:
Ursprung
517299d673
Commit
dc4b5b4d35
@ -360,6 +360,11 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI, ViaVe
|
|||||||
return getConfig().getBoolean("use-new-effect-indicator", true);
|
return getConfig().getBoolean("use-new-effect-indicator", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isShowNewDeathMessages() {
|
||||||
|
return getConfig().getBoolean("use-new-deathmessages", false);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isSuppressMetadataErrors() {
|
public boolean isSuppressMetadataErrors() {
|
||||||
return getConfig().getBoolean("suppress-metadata-errors", false);
|
return getConfig().getBoolean("suppress-metadata-errors", false);
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,13 @@ public interface ViaVersionConfig {
|
|||||||
*/
|
*/
|
||||||
boolean isNewEffectIndicator();
|
boolean isNewEffectIndicator();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get if 1.9 clients are shown the new death message on the death screen
|
||||||
|
*
|
||||||
|
* @return true if enabled
|
||||||
|
*/
|
||||||
|
boolean isShowNewDeathMessages();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get if metadata errors will be suppressed
|
* Get if metadata errors will be suppressed
|
||||||
*
|
*
|
||||||
|
@ -15,10 +15,7 @@ import us.myles.ViaVersion.api.protocol.Protocol;
|
|||||||
import us.myles.ViaVersion.api.remapper.ValueTransformer;
|
import us.myles.ViaVersion.api.remapper.ValueTransformer;
|
||||||
import us.myles.ViaVersion.api.type.Type;
|
import us.myles.ViaVersion.api.type.Type;
|
||||||
import us.myles.ViaVersion.protocols.base.ProtocolInfo;
|
import us.myles.ViaVersion.protocols.base.ProtocolInfo;
|
||||||
import us.myles.ViaVersion.protocols.protocol1_9to1_8.listeners.ArmorListener;
|
import us.myles.ViaVersion.protocols.protocol1_9to1_8.listeners.*;
|
||||||
import us.myles.ViaVersion.protocols.protocol1_9to1_8.listeners.BlockListener;
|
|
||||||
import us.myles.ViaVersion.protocols.protocol1_9to1_8.listeners.CommandBlockListener;
|
|
||||||
import us.myles.ViaVersion.protocols.protocol1_9to1_8.listeners.PaperPatch;
|
|
||||||
import us.myles.ViaVersion.protocols.protocol1_9to1_8.packets.*;
|
import us.myles.ViaVersion.protocols.protocol1_9to1_8.packets.*;
|
||||||
import us.myles.ViaVersion.protocols.protocol1_9to1_8.storage.ClientChunks;
|
import us.myles.ViaVersion.protocols.protocol1_9to1_8.storage.ClientChunks;
|
||||||
import us.myles.ViaVersion.protocols.protocol1_9to1_8.storage.EntityTracker;
|
import us.myles.ViaVersion.protocols.protocol1_9to1_8.storage.EntityTracker;
|
||||||
@ -99,6 +96,7 @@ public class Protocol1_9TO1_8 extends Protocol {
|
|||||||
ViaVersionPlugin plugin = (ViaVersionPlugin) Bukkit.getPluginManager().getPlugin("ViaVersion");
|
ViaVersionPlugin plugin = (ViaVersionPlugin) Bukkit.getPluginManager().getPlugin("ViaVersion");
|
||||||
Bukkit.getPluginManager().registerEvents(new ArmorListener(plugin), plugin);
|
Bukkit.getPluginManager().registerEvents(new ArmorListener(plugin), plugin);
|
||||||
Bukkit.getPluginManager().registerEvents(new CommandBlockListener(plugin), plugin);
|
Bukkit.getPluginManager().registerEvents(new CommandBlockListener(plugin), plugin);
|
||||||
|
Bukkit.getPluginManager().registerEvents(new DeathListener(plugin), plugin);
|
||||||
Bukkit.getPluginManager().registerEvents(new BlockListener(plugin), plugin);
|
Bukkit.getPluginManager().registerEvents(new BlockListener(plugin), plugin);
|
||||||
if (Bukkit.getVersion().toLowerCase().contains("paper")) {
|
if (Bukkit.getVersion().toLowerCase().contains("paper")) {
|
||||||
plugin.getLogger().info("Enabling PaperSpigot patch: Fixes block placement.");
|
plugin.getLogger().info("Enabling PaperSpigot patch: Fixes block placement.");
|
||||||
|
@ -0,0 +1,65 @@
|
|||||||
|
package us.myles.ViaVersion.protocols.protocol1_9to1_8.listeners;
|
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||||
|
import us.myles.ViaVersion.ViaVersionPlugin;
|
||||||
|
import us.myles.ViaVersion.api.PacketWrapper;
|
||||||
|
import us.myles.ViaVersion.api.data.UserConnection;
|
||||||
|
import us.myles.ViaVersion.api.type.Type;
|
||||||
|
import us.myles.ViaVersion.protocols.base.ProtocolInfo;
|
||||||
|
import us.myles.ViaVersion.protocols.protocol1_9to1_8.Protocol1_9TO1_8;
|
||||||
|
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class DeathListener implements Listener {
|
||||||
|
private final ViaVersionPlugin plugin;
|
||||||
|
|
||||||
|
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
|
||||||
|
public void onDeath(PlayerDeathEvent e) {
|
||||||
|
Player p = e.getEntity();
|
||||||
|
if (plugin.isShowNewDeathMessages() && checkGamerule(p.getWorld()) && e.getDeathMessage() != null && checkPipeline(p)) {
|
||||||
|
sendPacket(p, e.getDeathMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean checkPipeline(Player p) {
|
||||||
|
UserConnection userConnection = plugin.getConnection(p);
|
||||||
|
return userConnection != null && userConnection.get(ProtocolInfo.class).getPipeline().contains(Protocol1_9TO1_8.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
private UserConnection getUserConnection(Player p) {
|
||||||
|
return plugin.getConnection(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean checkGamerule(World w) {
|
||||||
|
try {
|
||||||
|
return Boolean.parseBoolean(w.getGameRuleValue("showDeathMessage"));
|
||||||
|
} catch (Exception e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendPacket(final Player p, final String msg) {
|
||||||
|
Bukkit.getScheduler().runTask(plugin, new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
PacketWrapper wrapper = new PacketWrapper(0x2C, null, getUserConnection(p));
|
||||||
|
try {
|
||||||
|
wrapper.write(Type.VAR_INT, 2);
|
||||||
|
wrapper.write(Type.VAR_INT, p.getEntityId());
|
||||||
|
wrapper.write(Type.INT, p.getEntityId());
|
||||||
|
Protocol1_9TO1_8.FIX_JSON.write(wrapper, msg);
|
||||||
|
wrapper.send();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
wrapper.clearInputBuffer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -22,6 +22,8 @@ bossbar-patch: true
|
|||||||
bossbar-anti-flicker: false
|
bossbar-anti-flicker: false
|
||||||
# This will show the new effect indicator in the top-right corner for 1.9 players.
|
# This will show the new effect indicator in the top-right corner for 1.9 players.
|
||||||
use-new-effect-indicator: true
|
use-new-effect-indicator: true
|
||||||
|
# Show the new death messages for 1.9 on the death screen
|
||||||
|
use-new-deathmessages: false
|
||||||
# This will suppress the following error: 'Unable to get entity for ID: xxxx'
|
# This will suppress the following error: 'Unable to get entity for ID: xxxx'
|
||||||
# This error message means one of you plugins is sending bad packets!
|
# This error message means one of you plugins is sending bad packets!
|
||||||
suppress-entityid-errors: false
|
suppress-entityid-errors: false
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren