Reformat code
This commit is contained in:
parent
53f1508a01
commit
20b545b93d
108 changed files with 10123 additions and 9809 deletions
|
@ -1,13 +1,13 @@
|
|||
version: "3.0"
|
||||
|
||||
services:
|
||||
loup-garou:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./docker/Dockerfile
|
||||
args:
|
||||
SPIGOT_VERSION: 1.15.1
|
||||
volumes:
|
||||
- ./minecraft_data:/minecraft
|
||||
ports:
|
||||
- 25565:25565
|
||||
loup-garou:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: ./docker/Dockerfile
|
||||
args:
|
||||
SPIGOT_VERSION: 1.15.1
|
||||
volumes:
|
||||
- ./minecraft_data:/minecraft
|
||||
ports:
|
||||
- 25565:25565
|
||||
|
|
2
pom.xml
2
pom.xml
|
@ -1,4 +1,4 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>fr.leomelki</groupId>
|
||||
|
|
|
@ -2,115 +2,114 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.leomelki.com.comphenix.packetwrapper;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.ProtocolLibrary;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.google.common.base.Objects;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
public abstract class AbstractPacket {
|
||||
// The packet we will be modifying
|
||||
protected PacketContainer handle;
|
||||
// The packet we will be modifying
|
||||
protected PacketContainer handle;
|
||||
|
||||
/**
|
||||
* Constructs a new strongly typed wrapper for the given packet.
|
||||
*
|
||||
* @param handle - handle to the raw packet data.
|
||||
* @param type - the packet type.
|
||||
*/
|
||||
protected AbstractPacket(PacketContainer handle, PacketType type) {
|
||||
// Make sure we're given a valid packet
|
||||
if (handle == null)
|
||||
throw new IllegalArgumentException("Packet handle cannot be NULL.");
|
||||
if (!Objects.equal(handle.getType(), type))
|
||||
throw new IllegalArgumentException(handle.getHandle()
|
||||
+ " is not a packet of type " + type);
|
||||
/**
|
||||
* Constructs a new strongly typed wrapper for the given packet.
|
||||
*
|
||||
* @param handle - handle to the raw packet data.
|
||||
* @param type - the packet type.
|
||||
*/
|
||||
protected AbstractPacket(PacketContainer handle, PacketType type) {
|
||||
// Make sure we're given a valid packet
|
||||
if (handle == null)
|
||||
throw new IllegalArgumentException("Packet handle cannot be NULL.");
|
||||
if (!Objects.equal(handle.getType(), type))
|
||||
throw new IllegalArgumentException(handle.getHandle()
|
||||
+ " is not a packet of type " + type);
|
||||
|
||||
this.handle = handle;
|
||||
}
|
||||
this.handle = handle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a handle to the raw packet data.
|
||||
*
|
||||
* @return Raw packet data.
|
||||
*/
|
||||
public PacketContainer getHandle() {
|
||||
return handle;
|
||||
}
|
||||
/**
|
||||
* Retrieve a handle to the raw packet data.
|
||||
*
|
||||
* @return Raw packet data.
|
||||
*/
|
||||
public PacketContainer getHandle() {
|
||||
return handle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send the current packet to the given receiver.
|
||||
*
|
||||
* @param receiver - the receiver.
|
||||
* @throws RuntimeException If the packet cannot be sent.
|
||||
*/
|
||||
public void sendPacket(Player receiver) {
|
||||
if(receiver == null)
|
||||
return;
|
||||
try {
|
||||
ProtocolLibrary.getProtocolManager().sendServerPacket(receiver,
|
||||
getHandle());
|
||||
} catch (InvocationTargetException e) {
|
||||
throw new RuntimeException("Cannot send packet.", e);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Send the current packet to the given receiver.
|
||||
*
|
||||
* @param receiver - the receiver.
|
||||
* @throws RuntimeException If the packet cannot be sent.
|
||||
*/
|
||||
public void sendPacket(Player receiver) {
|
||||
if (receiver == null)
|
||||
return;
|
||||
try {
|
||||
ProtocolLibrary.getProtocolManager().sendServerPacket(receiver,
|
||||
getHandle());
|
||||
} catch (InvocationTargetException e) {
|
||||
throw new RuntimeException("Cannot send packet.", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Send the current packet to all online players.
|
||||
*/
|
||||
public void broadcastPacket() {
|
||||
ProtocolLibrary.getProtocolManager().broadcastServerPacket(getHandle());
|
||||
}
|
||||
/**
|
||||
* Send the current packet to all online players.
|
||||
*/
|
||||
public void broadcastPacket() {
|
||||
ProtocolLibrary.getProtocolManager().broadcastServerPacket(getHandle());
|
||||
}
|
||||
|
||||
/**
|
||||
* Simulate receiving the current packet from the given sender.
|
||||
*
|
||||
* @param sender - the sender.
|
||||
* @throws RuntimeException If the packet cannot be received.
|
||||
* @deprecated Misspelled. recieve to receive
|
||||
* @see #receivePacket(Player)
|
||||
*/
|
||||
@Deprecated
|
||||
public void recievePacket(Player sender) {
|
||||
try {
|
||||
ProtocolLibrary.getProtocolManager().recieveClientPacket(sender,
|
||||
getHandle());
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Cannot recieve packet.", e);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Simulate receiving the current packet from the given sender.
|
||||
*
|
||||
* @param sender - the sender.
|
||||
* @throws RuntimeException If the packet cannot be received.
|
||||
* @deprecated Misspelled. recieve to receive
|
||||
* @see #receivePacket(Player)
|
||||
*/
|
||||
@Deprecated
|
||||
public void recievePacket(Player sender) {
|
||||
try {
|
||||
ProtocolLibrary.getProtocolManager().recieveClientPacket(sender,
|
||||
getHandle());
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Cannot recieve packet.", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Simulate receiving the current packet from the given sender.
|
||||
*
|
||||
* @param sender - the sender.
|
||||
* @throws RuntimeException if the packet cannot be received.
|
||||
*/
|
||||
public void receivePacket(Player sender) {
|
||||
try {
|
||||
ProtocolLibrary.getProtocolManager().recieveClientPacket(sender,
|
||||
getHandle());
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Cannot receive packet.", e);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Simulate receiving the current packet from the given sender.
|
||||
*
|
||||
* @param sender - the sender.
|
||||
* @throws RuntimeException if the packet cannot be received.
|
||||
*/
|
||||
public void receivePacket(Player sender) {
|
||||
try {
|
||||
ProtocolLibrary.getProtocolManager().recieveClientPacket(sender,
|
||||
getHandle());
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Cannot receive packet.", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -21,8 +21,8 @@ package fr.leomelki.com.comphenix.packetwrapper;
|
|||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class PacketWrapper extends JavaPlugin {
|
||||
@Override
|
||||
public void onEnable() {
|
||||
// We don't really do much ...
|
||||
}
|
||||
@Override
|
||||
public void onEnable() {
|
||||
// We don't really do much ...
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,103 +2,102 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.leomelki.com.comphenix.packetwrapper;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.ChatType;
|
||||
import com.comphenix.protocol.wrappers.WrappedChatComponent;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class WrapperPlayServerChat extends AbstractPacket {
|
||||
public static final PacketType TYPE = PacketType.Play.Server.CHAT;
|
||||
public static final PacketType TYPE = PacketType.Play.Server.CHAT;
|
||||
|
||||
public WrapperPlayServerChat() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerChat() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerChat(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerChat(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the chat message.
|
||||
* <p>
|
||||
* Limited to 32767 bytes
|
||||
*
|
||||
* @return The current message
|
||||
*/
|
||||
public WrappedChatComponent getMessage() {
|
||||
return handle.getChatComponents().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve the chat message.
|
||||
* <p>
|
||||
* Limited to 32767 bytes
|
||||
*
|
||||
* @return The current message
|
||||
*/
|
||||
public WrappedChatComponent getMessage() {
|
||||
return handle.getChatComponents().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the message.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setMessage(WrappedChatComponent value) {
|
||||
handle.getChatComponents().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set the message.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setMessage(WrappedChatComponent value) {
|
||||
handle.getChatComponents().write(0, value);
|
||||
}
|
||||
|
||||
public ChatType getChatType() {
|
||||
return handle.getChatTypes().read(0);
|
||||
}
|
||||
public ChatType getChatType() {
|
||||
return handle.getChatTypes().read(0);
|
||||
}
|
||||
|
||||
public void setChatType(ChatType type) {
|
||||
handle.getChatTypes().write(0, type);
|
||||
}
|
||||
public void setChatType(ChatType type) {
|
||||
handle.getChatTypes().write(0, type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Position.
|
||||
* <p>
|
||||
* Notes: 0 - Chat (chat box) ,1 - System Message (chat box), 2 - Above
|
||||
* action bar
|
||||
*
|
||||
* @return The current Position
|
||||
* @deprecated Magic values replaced by enum
|
||||
*/
|
||||
@Deprecated
|
||||
public byte getPosition() {
|
||||
Byte position = handle.getBytes().readSafely(0);
|
||||
if (position != null) {
|
||||
return position;
|
||||
} else {
|
||||
return getChatType().getId();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Retrieve Position.
|
||||
* <p>
|
||||
* Notes: 0 - Chat (chat box) ,1 - System Message (chat box), 2 - Above
|
||||
* action bar
|
||||
*
|
||||
* @return The current Position
|
||||
* @deprecated Magic values replaced by enum
|
||||
*/
|
||||
@Deprecated
|
||||
public byte getPosition() {
|
||||
Byte position = handle.getBytes().readSafely(0);
|
||||
if (position != null) {
|
||||
return position;
|
||||
} else {
|
||||
return getChatType().getId();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Position.
|
||||
*
|
||||
* @param value - new value.
|
||||
* @deprecated Magic values replaced by enum
|
||||
*/
|
||||
@Deprecated
|
||||
public void setPosition(byte value) {
|
||||
handle.getBytes().writeSafely(0, value);
|
||||
/**
|
||||
* Set Position.
|
||||
*
|
||||
* @param value - new value.
|
||||
* @deprecated Magic values replaced by enum
|
||||
*/
|
||||
@Deprecated
|
||||
public void setPosition(byte value) {
|
||||
handle.getBytes().writeSafely(0, value);
|
||||
|
||||
if (EnumWrappers.getChatTypeClass() != null)
|
||||
{
|
||||
Arrays.stream(ChatType.values()).filter(t -> t.getId() == value).findAny()
|
||||
.ifPresent(t -> handle.getChatTypes().writeSafely(0, t));
|
||||
}
|
||||
}
|
||||
if (EnumWrappers.getChatTypeClass() != null) {
|
||||
Arrays.stream(ChatType.values()).filter(t -> t.getId() == value).findAny()
|
||||
.ifPresent(t -> handle.getChatTypes().writeSafely(0, t));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -25,159 +25,159 @@ import com.comphenix.protocol.wrappers.MinecraftKey;
|
|||
|
||||
public class WrapperPlayServerCustomSoundEffect extends AbstractPacket {
|
||||
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.CUSTOM_SOUND_EFFECT;
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.CUSTOM_SOUND_EFFECT;
|
||||
|
||||
public WrapperPlayServerCustomSoundEffect() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerCustomSoundEffect() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerCustomSoundEffect(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerCustomSoundEffect(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Sound Name.
|
||||
* <p>
|
||||
* Notes: all known sound effect names can be seen here.
|
||||
*
|
||||
* @return The current Sound Name
|
||||
*/
|
||||
public MinecraftKey getSoundName() {
|
||||
return handle.getMinecraftKeys().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Sound Name.
|
||||
* <p>
|
||||
* Notes: all known sound effect names can be seen here.
|
||||
*
|
||||
* @return The current Sound Name
|
||||
*/
|
||||
public MinecraftKey getSoundName() {
|
||||
return handle.getMinecraftKeys().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Sound Name.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setSoundName(MinecraftKey value) {
|
||||
handle.getMinecraftKeys().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Sound Name.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setSoundName(MinecraftKey value) {
|
||||
handle.getMinecraftKeys().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Sound Category.
|
||||
* <p>
|
||||
* Notes: the category that this sound will be played from (current
|
||||
* categories)
|
||||
*
|
||||
* @return The current Sound Category
|
||||
*/
|
||||
public SoundCategory getSoundCategory() {
|
||||
return handle.getSoundCategories().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Sound Category.
|
||||
* <p>
|
||||
* Notes: the category that this sound will be played from (current
|
||||
* categories)
|
||||
*
|
||||
* @return The current Sound Category
|
||||
*/
|
||||
public SoundCategory getSoundCategory() {
|
||||
return handle.getSoundCategories().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Sound Category.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setSoundCategory(SoundCategory value) {
|
||||
handle.getSoundCategories().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Sound Category.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setSoundCategory(SoundCategory value) {
|
||||
handle.getSoundCategories().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Effect Position X.
|
||||
* <p>
|
||||
* Notes: effect X multiplied by 8 (fixed-point number with only 3 bits
|
||||
* dedicated to the fractional part)
|
||||
*
|
||||
* @return The current Effect Position X
|
||||
*/
|
||||
public int getX() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Effect Position X.
|
||||
* <p>
|
||||
* Notes: effect X multiplied by 8 (fixed-point number with only 3 bits
|
||||
* dedicated to the fractional part)
|
||||
*
|
||||
* @return The current Effect Position X
|
||||
*/
|
||||
public int getX() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Effect Position X.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setX(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Effect Position X.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setX(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Effect Position Y.
|
||||
* <p>
|
||||
* Notes: effect Y multiplied by 8 (fixed-point number with only 3 bits
|
||||
* dedicated to the fractional part)
|
||||
*
|
||||
* @return The current Effect Position Y
|
||||
*/
|
||||
public int getY() {
|
||||
return handle.getIntegers().read(1);
|
||||
}
|
||||
/**
|
||||
* Retrieve Effect Position Y.
|
||||
* <p>
|
||||
* Notes: effect Y multiplied by 8 (fixed-point number with only 3 bits
|
||||
* dedicated to the fractional part)
|
||||
*
|
||||
* @return The current Effect Position Y
|
||||
*/
|
||||
public int getY() {
|
||||
return handle.getIntegers().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Effect Position Y.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setY(int value) {
|
||||
handle.getIntegers().write(1, value);
|
||||
}
|
||||
/**
|
||||
* Set Effect Position Y.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setY(int value) {
|
||||
handle.getIntegers().write(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Effect Position Z.
|
||||
* <p>
|
||||
* Notes: effect Z multiplied by 8 (fixed-point number with only 3 bits
|
||||
* dedicated to the fractional part)
|
||||
*
|
||||
* @return The current Effect Position Z
|
||||
*/
|
||||
public int getZ() {
|
||||
return handle.getIntegers().read(2);
|
||||
}
|
||||
/**
|
||||
* Retrieve Effect Position Z.
|
||||
* <p>
|
||||
* Notes: effect Z multiplied by 8 (fixed-point number with only 3 bits
|
||||
* dedicated to the fractional part)
|
||||
*
|
||||
* @return The current Effect Position Z
|
||||
*/
|
||||
public int getZ() {
|
||||
return handle.getIntegers().read(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Effect Position Z.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setZ(int value) {
|
||||
handle.getIntegers().write(2, value);
|
||||
}
|
||||
/**
|
||||
* Set Effect Position Z.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setZ(int value) {
|
||||
handle.getIntegers().write(2, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Volume.
|
||||
* <p>
|
||||
* Notes: 1 is 100%, can be more
|
||||
*
|
||||
* @return The current Volume
|
||||
*/
|
||||
public float getVolume() {
|
||||
return handle.getFloat().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Volume.
|
||||
* <p>
|
||||
* Notes: 1 is 100%, can be more
|
||||
*
|
||||
* @return The current Volume
|
||||
*/
|
||||
public float getVolume() {
|
||||
return handle.getFloat().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Volume.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setVolume(float value) {
|
||||
handle.getFloat().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Volume.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setVolume(float value) {
|
||||
handle.getFloat().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Pitch.
|
||||
* <p>
|
||||
* Notes: 63 is 100%, can be more
|
||||
*
|
||||
* @return The current Pitch
|
||||
*/
|
||||
public float getPitch() {
|
||||
return handle.getFloat().read(1);
|
||||
}
|
||||
/**
|
||||
* Retrieve Pitch.
|
||||
* <p>
|
||||
* Notes: 63 is 100%, can be more
|
||||
*
|
||||
* @return The current Pitch
|
||||
*/
|
||||
public float getPitch() {
|
||||
return handle.getFloat().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Pitch.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getFloat().write(1, value);
|
||||
}
|
||||
/**
|
||||
* Set Pitch.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getFloat().write(1, value);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,78 +2,77 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.leomelki.com.comphenix.packetwrapper;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
public class WrapperPlayServerEntity extends AbstractPacket {
|
||||
public static final PacketType TYPE = PacketType.Play.Server.ENTITY;
|
||||
public static final PacketType TYPE = PacketType.Play.Server.ENTITY;
|
||||
|
||||
public WrapperPlayServerEntity() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerEntity() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerEntity(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerEntity(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Entity ID.
|
||||
* <p>
|
||||
* Notes: entity's ID
|
||||
*
|
||||
* @return The current Entity ID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Entity ID.
|
||||
* <p>
|
||||
* Notes: entity's ID
|
||||
*
|
||||
* @return The current Entity ID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Entity ID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Entity ID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -22,46 +22,46 @@ import com.comphenix.protocol.PacketType;
|
|||
import com.comphenix.protocol.events.PacketContainer;
|
||||
|
||||
public class WrapperPlayServerEntityDestroy extends AbstractPacket {
|
||||
public static final PacketType TYPE = PacketType.Play.Server.ENTITY_DESTROY;
|
||||
public static final PacketType TYPE = PacketType.Play.Server.ENTITY_DESTROY;
|
||||
|
||||
public WrapperPlayServerEntityDestroy() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerEntityDestroy() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerEntityDestroy(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerEntityDestroy(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Count.
|
||||
* <p>
|
||||
* Notes: length of following array
|
||||
*
|
||||
* @return The current Count
|
||||
*/
|
||||
public int getCount() {
|
||||
return handle.getIntegerArrays().read(0).length;
|
||||
}
|
||||
/**
|
||||
* Retrieve Count.
|
||||
* <p>
|
||||
* Notes: length of following array
|
||||
*
|
||||
* @return The current Count
|
||||
*/
|
||||
public int getCount() {
|
||||
return handle.getIntegerArrays().read(0).length;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Entity IDs.
|
||||
* <p>
|
||||
* Notes: the list of entities of destroy
|
||||
*
|
||||
* @return The current Entity IDs
|
||||
*/
|
||||
public int[] getEntityIDs() {
|
||||
return handle.getIntegerArrays().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Entity IDs.
|
||||
* <p>
|
||||
* Notes: the list of entities of destroy
|
||||
*
|
||||
* @return The current Entity IDs
|
||||
*/
|
||||
public int[] getEntityIDs() {
|
||||
return handle.getIntegerArrays().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Entity IDs.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityIds(int[] value) {
|
||||
handle.getIntegerArrays().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Entity IDs.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityIds(int[] value) {
|
||||
handle.getIntegerArrays().write(0, value);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,109 +2,108 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.leomelki.com.comphenix.packetwrapper;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.ItemSlot;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class WrapperPlayServerEntityEquipment extends AbstractPacket {
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.ENTITY_EQUIPMENT;
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.ENTITY_EQUIPMENT;
|
||||
|
||||
public WrapperPlayServerEntityEquipment() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerEntityEquipment() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerEntityEquipment(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerEntityEquipment(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Entity ID.
|
||||
* <p>
|
||||
* Notes: entity's ID
|
||||
*
|
||||
* @return The current Entity ID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Entity ID.
|
||||
* <p>
|
||||
* Notes: entity's ID
|
||||
*
|
||||
* @return The current Entity ID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Entity ID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Entity ID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
|
||||
public ItemSlot getSlot() {
|
||||
return handle.getItemSlots().read(0);
|
||||
}
|
||||
public ItemSlot getSlot() {
|
||||
return handle.getItemSlots().read(0);
|
||||
}
|
||||
|
||||
public void setSlot(ItemSlot value) {
|
||||
handle.getItemSlots().write(0, value);
|
||||
}
|
||||
public void setSlot(ItemSlot value) {
|
||||
handle.getItemSlots().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Item.
|
||||
* <p>
|
||||
* Notes: item in slot format
|
||||
*
|
||||
* @return The current Item
|
||||
*/
|
||||
public ItemStack getItem() {
|
||||
return handle.getItemModifier().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Item.
|
||||
* <p>
|
||||
* Notes: item in slot format
|
||||
*
|
||||
* @return The current Item
|
||||
*/
|
||||
public ItemStack getItem() {
|
||||
return handle.getItemModifier().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Item.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setItem(ItemStack value) {
|
||||
handle.getItemModifier().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Item.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setItem(ItemStack value) {
|
||||
handle.getItemModifier().write(0, value);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,132 +2,131 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.leomelki.com.comphenix.packetwrapper;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
public class WrapperPlayServerEntityLook extends AbstractPacket {
|
||||
public static final PacketType TYPE = PacketType.Play.Server.ENTITY_LOOK;
|
||||
public static final PacketType TYPE = PacketType.Play.Server.ENTITY_LOOK;
|
||||
|
||||
public WrapperPlayServerEntityLook() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerEntityLook() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerEntityLook(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerEntityLook(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Entity ID.
|
||||
* <p>
|
||||
* Notes: entity's ID
|
||||
*
|
||||
* @return The current Entity ID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Entity ID.
|
||||
* <p>
|
||||
* Notes: entity's ID
|
||||
*
|
||||
* @return The current Entity ID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Entity ID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Entity ID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the yaw of the current entity.
|
||||
*
|
||||
* @return The current Yaw
|
||||
*/
|
||||
public float getYaw() {
|
||||
return (handle.getBytes().read(0) * 360.F) / 256.0F;
|
||||
}
|
||||
/**
|
||||
* Retrieve the yaw of the current entity.
|
||||
*
|
||||
* @return The current Yaw
|
||||
*/
|
||||
public float getYaw() {
|
||||
return (handle.getBytes().read(0) * 360.F) / 256.0F;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the yaw of the current entity.
|
||||
*
|
||||
* @param value - new yaw.
|
||||
*/
|
||||
public void setYaw(float value) {
|
||||
handle.getBytes().write(0, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
/**
|
||||
* Set the yaw of the current entity.
|
||||
*
|
||||
* @param value - new yaw.
|
||||
*/
|
||||
public void setYaw(float value) {
|
||||
handle.getBytes().write(0, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the pitch of the current entity.
|
||||
*
|
||||
* @return The current pitch
|
||||
*/
|
||||
public float getPitch() {
|
||||
return (handle.getBytes().read(1) * 360.F) / 256.0F;
|
||||
}
|
||||
/**
|
||||
* Retrieve the pitch of the current entity.
|
||||
*
|
||||
* @return The current pitch
|
||||
*/
|
||||
public float getPitch() {
|
||||
return (handle.getBytes().read(1) * 360.F) / 256.0F;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the pitch of the current entity.
|
||||
*
|
||||
* @param value - new pitch.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getBytes().write(1, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
/**
|
||||
* Set the pitch of the current entity.
|
||||
*
|
||||
* @param value - new pitch.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getBytes().write(1, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve On Ground.
|
||||
*
|
||||
* @return The current On Ground
|
||||
*/
|
||||
public boolean getOnGround() {
|
||||
return handle.getBooleans().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve On Ground.
|
||||
*
|
||||
* @return The current On Ground
|
||||
*/
|
||||
public boolean getOnGround() {
|
||||
return handle.getBooleans().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set On Ground.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setOnGround(boolean value) {
|
||||
handle.getBooleans().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set On Ground.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setOnGround(boolean value) {
|
||||
handle.getBooleans().write(0, value);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,100 +2,99 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.leomelki.com.comphenix.packetwrapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import com.comphenix.protocol.wrappers.WrappedWatchableObject;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class WrapperPlayServerEntityMetadata extends AbstractPacket {
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.ENTITY_METADATA;
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.ENTITY_METADATA;
|
||||
|
||||
public WrapperPlayServerEntityMetadata() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerEntityMetadata() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerEntityMetadata(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerEntityMetadata(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Entity ID.
|
||||
* <p>
|
||||
* Notes: entity's ID
|
||||
*
|
||||
* @return The current Entity ID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Entity ID.
|
||||
* <p>
|
||||
* Notes: entity's ID
|
||||
*
|
||||
* @return The current Entity ID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Entity ID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Entity ID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Metadata.
|
||||
*
|
||||
* @return The current Metadata
|
||||
*/
|
||||
public List<WrappedWatchableObject> getMetadata() {
|
||||
return handle.getWatchableCollectionModifier().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Metadata.
|
||||
*
|
||||
* @return The current Metadata
|
||||
*/
|
||||
public List<WrappedWatchableObject> getMetadata() {
|
||||
return handle.getWatchableCollectionModifier().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Metadata.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setMetadata(List<WrappedWatchableObject> value) {
|
||||
handle.getWatchableCollectionModifier().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Metadata.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setMetadata(List<WrappedWatchableObject> value) {
|
||||
handle.getWatchableCollectionModifier().write(0, value);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,145 +2,144 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.leomelki.com.comphenix.packetwrapper;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
public class WrapperPlayServerEntityTeleport extends AbstractPacket {
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.ENTITY_TELEPORT;
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.ENTITY_TELEPORT;
|
||||
|
||||
public WrapperPlayServerEntityTeleport() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerEntityTeleport() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerEntityTeleport(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerEntityTeleport(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve entity ID.
|
||||
*
|
||||
* @return The current EID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve entity ID.
|
||||
*
|
||||
* @return The current EID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set entity ID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set entity ID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
|
||||
public double getX() {
|
||||
return handle.getDoubles().read(0);
|
||||
}
|
||||
public double getX() {
|
||||
return handle.getDoubles().read(0);
|
||||
}
|
||||
|
||||
public void setX(double value) {
|
||||
handle.getDoubles().write(0, value);
|
||||
}
|
||||
public void setX(double value) {
|
||||
handle.getDoubles().write(0, value);
|
||||
}
|
||||
|
||||
public double getY() {
|
||||
return handle.getDoubles().read(1);
|
||||
}
|
||||
public double getY() {
|
||||
return handle.getDoubles().read(1);
|
||||
}
|
||||
|
||||
public void setY(double value) {
|
||||
handle.getDoubles().write(1, value);
|
||||
}
|
||||
public void setY(double value) {
|
||||
handle.getDoubles().write(1, value);
|
||||
}
|
||||
|
||||
public double getZ() {
|
||||
return handle.getDoubles().read(2);
|
||||
}
|
||||
public double getZ() {
|
||||
return handle.getDoubles().read(2);
|
||||
}
|
||||
|
||||
public void setZ(double value) {
|
||||
handle.getDoubles().write(2, value);
|
||||
}
|
||||
public void setZ(double value) {
|
||||
handle.getDoubles().write(2, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the yaw of the current entity.
|
||||
*
|
||||
* @return The current Yaw
|
||||
*/
|
||||
public float getYaw() {
|
||||
return (handle.getBytes().read(0) * 360.F) / 256.0F;
|
||||
}
|
||||
/**
|
||||
* Retrieve the yaw of the current entity.
|
||||
*
|
||||
* @return The current Yaw
|
||||
*/
|
||||
public float getYaw() {
|
||||
return (handle.getBytes().read(0) * 360.F) / 256.0F;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the yaw of the current entity.
|
||||
*
|
||||
* @param value - new yaw.
|
||||
*/
|
||||
public void setYaw(float value) {
|
||||
handle.getBytes().write(0, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
/**
|
||||
* Set the yaw of the current entity.
|
||||
*
|
||||
* @param value - new yaw.
|
||||
*/
|
||||
public void setYaw(float value) {
|
||||
handle.getBytes().write(0, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the pitch of the current entity.
|
||||
*
|
||||
* @return The current pitch
|
||||
*/
|
||||
public float getPitch() {
|
||||
return (handle.getBytes().read(1) * 360.F) / 256.0F;
|
||||
}
|
||||
/**
|
||||
* Retrieve the pitch of the current entity.
|
||||
*
|
||||
* @return The current pitch
|
||||
*/
|
||||
public float getPitch() {
|
||||
return (handle.getBytes().read(1) * 360.F) / 256.0F;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the pitch of the current entity.
|
||||
*
|
||||
* @param value - new pitch.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getBytes().write(1, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
/**
|
||||
* Set the pitch of the current entity.
|
||||
*
|
||||
* @param value - new pitch.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getBytes().write(1, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
|
||||
public boolean getOnGround() {
|
||||
return handle.getBooleans().read(0);
|
||||
}
|
||||
public boolean getOnGround() {
|
||||
return handle.getBooleans().read(0);
|
||||
}
|
||||
|
||||
public void setOnGround(boolean value) {
|
||||
handle.getBooleans().write(0, value);
|
||||
}
|
||||
public void setOnGround(boolean value) {
|
||||
handle.getBooleans().write(0, value);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -22,71 +22,71 @@ import com.comphenix.protocol.PacketType;
|
|||
import com.comphenix.protocol.events.PacketContainer;
|
||||
|
||||
public class WrapperPlayServerExperience extends AbstractPacket {
|
||||
public static final PacketType TYPE = PacketType.Play.Server.EXPERIENCE;
|
||||
public static final PacketType TYPE = PacketType.Play.Server.EXPERIENCE;
|
||||
|
||||
public WrapperPlayServerExperience() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerExperience() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerExperience(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerExperience(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Experience bar.
|
||||
* <p>
|
||||
* Notes: between 0 and 1
|
||||
*
|
||||
* @return The current Experience bar
|
||||
*/
|
||||
public float getExperienceBar() {
|
||||
return handle.getFloat().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Experience bar.
|
||||
* <p>
|
||||
* Notes: between 0 and 1
|
||||
*
|
||||
* @return The current Experience bar
|
||||
*/
|
||||
public float getExperienceBar() {
|
||||
return handle.getFloat().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Experience bar.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setExperienceBar(float value) {
|
||||
handle.getFloat().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Experience bar.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setExperienceBar(float value) {
|
||||
handle.getFloat().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Level.
|
||||
*
|
||||
* @return The current Level
|
||||
*/
|
||||
public int getLevel() {
|
||||
return handle.getIntegers().read(1);
|
||||
}
|
||||
/**
|
||||
* Retrieve Level.
|
||||
*
|
||||
* @return The current Level
|
||||
*/
|
||||
public int getLevel() {
|
||||
return handle.getIntegers().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Level.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setLevel(int value) {
|
||||
handle.getIntegers().write(1, value);
|
||||
}
|
||||
/**
|
||||
* Set Level.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setLevel(int value) {
|
||||
handle.getIntegers().write(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Total Experience.
|
||||
*
|
||||
* @return The current Total Experience
|
||||
*/
|
||||
public int getTotalExperience() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Total Experience.
|
||||
*
|
||||
* @return The current Total Experience
|
||||
*/
|
||||
public int getTotalExperience() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Total Experience.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setTotalExperience(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Total Experience.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setTotalExperience(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -22,35 +22,35 @@ import com.comphenix.protocol.PacketType;
|
|||
import com.comphenix.protocol.events.PacketContainer;
|
||||
|
||||
public class WrapperPlayServerHeldItemSlot extends AbstractPacket {
|
||||
public static final PacketType TYPE = PacketType.Play.Server.HELD_ITEM_SLOT;
|
||||
public static final PacketType TYPE = PacketType.Play.Server.HELD_ITEM_SLOT;
|
||||
|
||||
public WrapperPlayServerHeldItemSlot() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerHeldItemSlot() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerHeldItemSlot(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerHeldItemSlot(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Slot.
|
||||
* <p>
|
||||
* Notes: the slot which the player has selected (0-8)
|
||||
*
|
||||
* @return The current Slot
|
||||
*/
|
||||
public int getSlot() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Slot.
|
||||
* <p>
|
||||
* Notes: the slot which the player has selected (0-8)
|
||||
*
|
||||
* @return The current Slot
|
||||
*/
|
||||
public int getSlot() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Slot.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setSlot(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Slot.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setSlot(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,203 +2,202 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.leomelki.com.comphenix.packetwrapper;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class WrapperPlayServerNamedEntitySpawn extends AbstractPacket {
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.NAMED_ENTITY_SPAWN;
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.NAMED_ENTITY_SPAWN;
|
||||
|
||||
public WrapperPlayServerNamedEntitySpawn() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerNamedEntitySpawn() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerNamedEntitySpawn(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerNamedEntitySpawn(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Entity ID.
|
||||
* <p>
|
||||
* Notes: entity's ID
|
||||
*
|
||||
* @return The current Entity ID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Entity ID.
|
||||
* <p>
|
||||
* Notes: entity's ID
|
||||
*
|
||||
* @return The current Entity ID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Entity ID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Entity ID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity of the painting that will be spawned.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Player UUID.
|
||||
* <p>
|
||||
* Notes: player's UUID
|
||||
*
|
||||
* @return The current Player UUID
|
||||
*/
|
||||
public UUID getPlayerUUID() {
|
||||
return handle.getUUIDs().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Player UUID.
|
||||
* <p>
|
||||
* Notes: player's UUID
|
||||
*
|
||||
* @return The current Player UUID
|
||||
*/
|
||||
public UUID getPlayerUUID() {
|
||||
return handle.getUUIDs().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Player UUID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setPlayerUUID(UUID value) {
|
||||
handle.getUUIDs().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Player UUID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setPlayerUUID(UUID value) {
|
||||
handle.getUUIDs().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the position of the spawned entity as a vector.
|
||||
*
|
||||
* @return The position as a vector.
|
||||
*/
|
||||
public Vector getPosition() {
|
||||
return new Vector(getX(), getY(), getZ());
|
||||
}
|
||||
/**
|
||||
* Retrieve the position of the spawned entity as a vector.
|
||||
*
|
||||
* @return The position as a vector.
|
||||
*/
|
||||
public Vector getPosition() {
|
||||
return new Vector(getX(), getY(), getZ());
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the position of the spawned entity using a vector.
|
||||
*
|
||||
* @param position - the new position.
|
||||
*/
|
||||
public void setPosition(Vector position) {
|
||||
setX(position.getX());
|
||||
setY(position.getY());
|
||||
setZ(position.getZ());
|
||||
}
|
||||
/**
|
||||
* Set the position of the spawned entity using a vector.
|
||||
*
|
||||
* @param position - the new position.
|
||||
*/
|
||||
public void setPosition(Vector position) {
|
||||
setX(position.getX());
|
||||
setY(position.getY());
|
||||
setZ(position.getZ());
|
||||
}
|
||||
|
||||
public double getX() {
|
||||
return handle.getDoubles().read(0);
|
||||
}
|
||||
public double getX() {
|
||||
return handle.getDoubles().read(0);
|
||||
}
|
||||
|
||||
public void setX(double value) {
|
||||
handle.getDoubles().write(0, value);
|
||||
}
|
||||
public void setX(double value) {
|
||||
handle.getDoubles().write(0, value);
|
||||
}
|
||||
|
||||
public double getY() {
|
||||
return handle.getDoubles().read(1);
|
||||
}
|
||||
public double getY() {
|
||||
return handle.getDoubles().read(1);
|
||||
}
|
||||
|
||||
public void setY(double value) {
|
||||
handle.getDoubles().write(1, value);
|
||||
}
|
||||
public void setY(double value) {
|
||||
handle.getDoubles().write(1, value);
|
||||
}
|
||||
|
||||
public double getZ() {
|
||||
return handle.getDoubles().read(2);
|
||||
}
|
||||
public double getZ() {
|
||||
return handle.getDoubles().read(2);
|
||||
}
|
||||
|
||||
public void setZ(double value) {
|
||||
handle.getDoubles().write(2, value);
|
||||
}
|
||||
public void setZ(double value) {
|
||||
handle.getDoubles().write(2, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the yaw of the spawned entity.
|
||||
*
|
||||
* @return The current Yaw
|
||||
*/
|
||||
public float getYaw() {
|
||||
return (handle.getBytes().read(0) * 360.F) / 256.0F;
|
||||
}
|
||||
/**
|
||||
* Retrieve the yaw of the spawned entity.
|
||||
*
|
||||
* @return The current Yaw
|
||||
*/
|
||||
public float getYaw() {
|
||||
return (handle.getBytes().read(0) * 360.F) / 256.0F;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the yaw of the spawned entity.
|
||||
*
|
||||
* @param value - new yaw.
|
||||
*/
|
||||
public void setYaw(float value) {
|
||||
handle.getBytes().write(0, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
/**
|
||||
* Set the yaw of the spawned entity.
|
||||
*
|
||||
* @param value - new yaw.
|
||||
*/
|
||||
public void setYaw(float value) {
|
||||
handle.getBytes().write(0, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the pitch of the spawned entity.
|
||||
*
|
||||
* @return The current pitch
|
||||
*/
|
||||
public float getPitch() {
|
||||
return (handle.getBytes().read(1) * 360.F) / 256.0F;
|
||||
}
|
||||
/**
|
||||
* Retrieve the pitch of the spawned entity.
|
||||
*
|
||||
* @return The current pitch
|
||||
*/
|
||||
public float getPitch() {
|
||||
return (handle.getBytes().read(1) * 360.F) / 256.0F;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the pitch of the spawned entity.
|
||||
*
|
||||
* @param value - new pitch.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getBytes().write(1, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
/**
|
||||
* Set the pitch of the spawned entity.
|
||||
*
|
||||
* @param value - new pitch.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getBytes().write(1, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Metadata.
|
||||
* <p>
|
||||
* Notes: the client will crash if no metadata is sent
|
||||
*
|
||||
* @return The current Metadata
|
||||
*/
|
||||
public WrappedDataWatcher getMetadata() {
|
||||
return handle.getDataWatcherModifier().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Metadata.
|
||||
* <p>
|
||||
* Notes: the client will crash if no metadata is sent
|
||||
*
|
||||
* @return The current Metadata
|
||||
*/
|
||||
public WrappedDataWatcher getMetadata() {
|
||||
return handle.getDataWatcherModifier().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Metadata.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setMetadata(WrappedDataWatcher value) {
|
||||
handle.getDataWatcherModifier().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Metadata.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setMetadata(WrappedDataWatcher value) {
|
||||
handle.getDataWatcherModifier().write(0, value);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,155 +2,154 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.leomelki.com.comphenix.packetwrapper;
|
||||
|
||||
import org.bukkit.Sound;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.SoundCategory;
|
||||
import org.bukkit.Sound;
|
||||
|
||||
public class WrapperPlayServerNamedSoundEffect extends AbstractPacket {
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.NAMED_SOUND_EFFECT;
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.NAMED_SOUND_EFFECT;
|
||||
|
||||
public WrapperPlayServerNamedSoundEffect() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerNamedSoundEffect() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerNamedSoundEffect(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerNamedSoundEffect(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
public Sound getSoundEffect() {
|
||||
return handle.getSoundEffects().read(0);
|
||||
}
|
||||
public Sound getSoundEffect() {
|
||||
return handle.getSoundEffects().read(0);
|
||||
}
|
||||
|
||||
public void setSoundEffect(Sound value) {
|
||||
handle.getSoundEffects().write(0, value);
|
||||
}
|
||||
public void setSoundEffect(Sound value) {
|
||||
handle.getSoundEffects().write(0, value);
|
||||
}
|
||||
|
||||
public SoundCategory getSoundCategory() {
|
||||
return handle.getSoundCategories().read(0);
|
||||
}
|
||||
public SoundCategory getSoundCategory() {
|
||||
return handle.getSoundCategories().read(0);
|
||||
}
|
||||
|
||||
public void setSoundCategory(SoundCategory value) {
|
||||
handle.getSoundCategories().write(0, value);
|
||||
}
|
||||
public void setSoundCategory(SoundCategory value) {
|
||||
handle.getSoundCategories().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Effect position X.
|
||||
* <p>
|
||||
* Notes: effect X multiplied by 8
|
||||
*
|
||||
* @return The current Effect position X
|
||||
*/
|
||||
public int getEffectPositionX() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Effect position X.
|
||||
* <p>
|
||||
* Notes: effect X multiplied by 8
|
||||
*
|
||||
* @return The current Effect position X
|
||||
*/
|
||||
public int getEffectPositionX() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Effect position X.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEffectPositionX(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Effect position X.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEffectPositionX(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Effect position Y.
|
||||
* <p>
|
||||
* Notes: effect Y multiplied by 8
|
||||
*
|
||||
* @return The current Effect position Y
|
||||
*/
|
||||
public int getEffectPositionY() {
|
||||
return handle.getIntegers().read(1);
|
||||
}
|
||||
/**
|
||||
* Retrieve Effect position Y.
|
||||
* <p>
|
||||
* Notes: effect Y multiplied by 8
|
||||
*
|
||||
* @return The current Effect position Y
|
||||
*/
|
||||
public int getEffectPositionY() {
|
||||
return handle.getIntegers().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Effect position Y.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEffectPositionY(int value) {
|
||||
handle.getIntegers().write(1, value);
|
||||
}
|
||||
/**
|
||||
* Set Effect position Y.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEffectPositionY(int value) {
|
||||
handle.getIntegers().write(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Effect position Z.
|
||||
* <p>
|
||||
* Notes: effect Z multiplied by 8
|
||||
*
|
||||
* @return The current Effect position Z
|
||||
*/
|
||||
public int getEffectPositionZ() {
|
||||
return handle.getIntegers().read(2);
|
||||
}
|
||||
/**
|
||||
* Retrieve Effect position Z.
|
||||
* <p>
|
||||
* Notes: effect Z multiplied by 8
|
||||
*
|
||||
* @return The current Effect position Z
|
||||
*/
|
||||
public int getEffectPositionZ() {
|
||||
return handle.getIntegers().read(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Effect position Z.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEffectPositionZ(int value) {
|
||||
handle.getIntegers().write(2, value);
|
||||
}
|
||||
/**
|
||||
* Set Effect position Z.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEffectPositionZ(int value) {
|
||||
handle.getIntegers().write(2, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Volume.
|
||||
* <p>
|
||||
* Notes: 1 is 100%, can be more
|
||||
*
|
||||
* @return The current Volume
|
||||
*/
|
||||
public float getVolume() {
|
||||
return handle.getFloat().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Volume.
|
||||
* <p>
|
||||
* Notes: 1 is 100%, can be more
|
||||
*
|
||||
* @return The current Volume
|
||||
*/
|
||||
public float getVolume() {
|
||||
return handle.getFloat().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Volume.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setVolume(float value) {
|
||||
handle.getFloat().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Volume.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setVolume(float value) {
|
||||
handle.getFloat().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Pitch.
|
||||
* <p>
|
||||
* Notes: 63 is 100%, can be more
|
||||
*
|
||||
* @return The current Pitch
|
||||
*/
|
||||
public float getPitch() {
|
||||
return handle.getFloat().read(1);
|
||||
}
|
||||
/**
|
||||
* Retrieve Pitch.
|
||||
* <p>
|
||||
* Notes: 63 is 100%, can be more
|
||||
*
|
||||
* @return The current Pitch
|
||||
*/
|
||||
public float getPitch() {
|
||||
return handle.getFloat().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Pitch.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getFloat().write(1, value);
|
||||
}
|
||||
/**
|
||||
* Set Pitch.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getFloat().write(1, value);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,54 +2,54 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.leomelki.com.comphenix.packetwrapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.PlayerInfoAction;
|
||||
import com.comphenix.protocol.wrappers.PlayerInfoData;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class WrapperPlayServerPlayerInfo extends AbstractPacket {
|
||||
public static final PacketType TYPE = PacketType.Play.Server.PLAYER_INFO;
|
||||
public static final PacketType TYPE = PacketType.Play.Server.PLAYER_INFO;
|
||||
|
||||
public WrapperPlayServerPlayerInfo() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerPlayerInfo() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerPlayerInfo(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerPlayerInfo(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
public PlayerInfoAction getAction() {
|
||||
return handle.getPlayerInfoAction().read(0);
|
||||
}
|
||||
public PlayerInfoAction getAction() {
|
||||
return handle.getPlayerInfoAction().read(0);
|
||||
}
|
||||
|
||||
public void setAction(PlayerInfoAction value) {
|
||||
handle.getPlayerInfoAction().write(0, value);
|
||||
}
|
||||
public void setAction(PlayerInfoAction value) {
|
||||
handle.getPlayerInfoAction().write(0, value);
|
||||
}
|
||||
|
||||
public List<PlayerInfoData> getData() {
|
||||
return handle.getPlayerInfoDataLists().read(0);
|
||||
}
|
||||
public List<PlayerInfoData> getData() {
|
||||
return handle.getPlayerInfoDataLists().read(0);
|
||||
}
|
||||
|
||||
public void setData(List<PlayerInfoData> value) {
|
||||
handle.getPlayerInfoDataLists().write(0, value);
|
||||
}
|
||||
public void setData(List<PlayerInfoData> value) {
|
||||
handle.getPlayerInfoDataLists().write(0, value);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,160 +2,159 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.leomelki.com.comphenix.packetwrapper;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.reflect.StructureModifier;
|
||||
import com.comphenix.protocol.utility.MinecraftReflection;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class WrapperPlayServerPosition extends AbstractPacket {
|
||||
public static final PacketType TYPE = PacketType.Play.Server.POSITION;
|
||||
public static final PacketType TYPE = PacketType.Play.Server.POSITION;
|
||||
private static final Class<?> FLAGS_CLASS = MinecraftReflection
|
||||
.getMinecraftClass("EnumPlayerTeleportFlags",
|
||||
"PacketPlayOutPosition$EnumPlayerTeleportFlags");
|
||||
|
||||
public WrapperPlayServerPosition() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerPosition() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerPosition(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerPosition(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve X.
|
||||
* <p>
|
||||
* Notes: absolute/Relative position
|
||||
*
|
||||
* @return The current X
|
||||
*/
|
||||
public double getX() {
|
||||
return handle.getDoubles().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve X.
|
||||
* <p>
|
||||
* Notes: absolute/Relative position
|
||||
*
|
||||
* @return The current X
|
||||
*/
|
||||
public double getX() {
|
||||
return handle.getDoubles().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set X.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setX(double value) {
|
||||
handle.getDoubles().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set X.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setX(double value) {
|
||||
handle.getDoubles().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Y.
|
||||
* <p>
|
||||
* Notes: absolute/Relative position
|
||||
*
|
||||
* @return The current Y
|
||||
*/
|
||||
public double getY() {
|
||||
return handle.getDoubles().read(1);
|
||||
}
|
||||
/**
|
||||
* Retrieve Y.
|
||||
* <p>
|
||||
* Notes: absolute/Relative position
|
||||
*
|
||||
* @return The current Y
|
||||
*/
|
||||
public double getY() {
|
||||
return handle.getDoubles().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Y.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setY(double value) {
|
||||
handle.getDoubles().write(1, value);
|
||||
}
|
||||
/**
|
||||
* Set Y.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setY(double value) {
|
||||
handle.getDoubles().write(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Z.
|
||||
* <p>
|
||||
* Notes: absolute/Relative position
|
||||
*
|
||||
* @return The current Z
|
||||
*/
|
||||
public double getZ() {
|
||||
return handle.getDoubles().read(2);
|
||||
}
|
||||
/**
|
||||
* Retrieve Z.
|
||||
* <p>
|
||||
* Notes: absolute/Relative position
|
||||
*
|
||||
* @return The current Z
|
||||
*/
|
||||
public double getZ() {
|
||||
return handle.getDoubles().read(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Z.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setZ(double value) {
|
||||
handle.getDoubles().write(2, value);
|
||||
}
|
||||
/**
|
||||
* Set Z.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setZ(double value) {
|
||||
handle.getDoubles().write(2, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Yaw.
|
||||
* <p>
|
||||
* Notes: absolute/Relative rotation on the X Axis, in degrees
|
||||
*
|
||||
* @return The current Yaw
|
||||
*/
|
||||
public float getYaw() {
|
||||
return handle.getFloat().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Yaw.
|
||||
* <p>
|
||||
* Notes: absolute/Relative rotation on the X Axis, in degrees
|
||||
*
|
||||
* @return The current Yaw
|
||||
*/
|
||||
public float getYaw() {
|
||||
return handle.getFloat().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Yaw.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setYaw(float value) {
|
||||
handle.getFloat().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Yaw.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setYaw(float value) {
|
||||
handle.getFloat().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Pitch.
|
||||
* <p>
|
||||
* Notes: absolute/Relative rotation on the Y Axis, in degrees
|
||||
*
|
||||
* @return The current Pitch
|
||||
*/
|
||||
public float getPitch() {
|
||||
return handle.getFloat().read(1);
|
||||
}
|
||||
/**
|
||||
* Retrieve Pitch.
|
||||
* <p>
|
||||
* Notes: absolute/Relative rotation on the Y Axis, in degrees
|
||||
*
|
||||
* @return The current Pitch
|
||||
*/
|
||||
public float getPitch() {
|
||||
return handle.getFloat().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Pitch.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getFloat().write(1, value);
|
||||
}
|
||||
/**
|
||||
* Set Pitch.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getFloat().write(1, value);
|
||||
}
|
||||
|
||||
private static final Class<?> FLAGS_CLASS = MinecraftReflection
|
||||
.getMinecraftClass("EnumPlayerTeleportFlags",
|
||||
"PacketPlayOutPosition$EnumPlayerTeleportFlags");
|
||||
private StructureModifier<Set<PlayerTeleportFlag>> getFlagsModifier() {
|
||||
return handle.getSets(
|
||||
EnumWrappers.getGenericConverter(FLAGS_CLASS, PlayerTeleportFlag.class));
|
||||
}
|
||||
|
||||
public enum PlayerTeleportFlag {
|
||||
X, Y, Z, Y_ROT, X_ROT
|
||||
}
|
||||
public Set<PlayerTeleportFlag> getFlags() {
|
||||
return getFlagsModifier().read(0);
|
||||
}
|
||||
|
||||
private StructureModifier<Set<PlayerTeleportFlag>> getFlagsModifier() {
|
||||
return handle.getSets(
|
||||
EnumWrappers.getGenericConverter(FLAGS_CLASS, PlayerTeleportFlag.class));
|
||||
}
|
||||
public void setFlags(Set<PlayerTeleportFlag> value) {
|
||||
getFlagsModifier().write(0, value);
|
||||
}
|
||||
|
||||
public Set<PlayerTeleportFlag> getFlags() {
|
||||
return getFlagsModifier().read(0);
|
||||
}
|
||||
|
||||
public void setFlags(Set<PlayerTeleportFlag> value) {
|
||||
getFlagsModifier().write(0, value);
|
||||
}
|
||||
public enum PlayerTeleportFlag {
|
||||
X, Y, Z, Y_ROT, X_ROT
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,120 +2,119 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.leomelki.com.comphenix.packetwrapper;
|
||||
|
||||
import org.bukkit.WorldType;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.Difficulty;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.NativeGameMode;
|
||||
import org.bukkit.WorldType;
|
||||
|
||||
public class WrapperPlayServerRespawn extends AbstractPacket {
|
||||
public static final PacketType TYPE = PacketType.Play.Server.RESPAWN;
|
||||
public static final PacketType TYPE = PacketType.Play.Server.RESPAWN;
|
||||
|
||||
public WrapperPlayServerRespawn() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerRespawn() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerRespawn(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerRespawn(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Dimension.
|
||||
* <p>
|
||||
* Notes: -1: The Nether, 0: The Overworld, 1: The End
|
||||
*
|
||||
* @return The current Dimension
|
||||
*/
|
||||
public int getDimension() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Dimension.
|
||||
* <p>
|
||||
* Notes: -1: The Nether, 0: The Overworld, 1: The End
|
||||
*
|
||||
* @return The current Dimension
|
||||
*/
|
||||
public int getDimension() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Dimension.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setDimension(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Dimension.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setDimension(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Difficulty.
|
||||
* <p>
|
||||
* Notes: 0 thru 3 for Peaceful, Easy, Normal, Hard.
|
||||
*
|
||||
* @return The current Difficulty
|
||||
*/
|
||||
public Difficulty getDifficulty() {
|
||||
return handle.getDifficulties().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Difficulty.
|
||||
* <p>
|
||||
* Notes: 0 thru 3 for Peaceful, Easy, Normal, Hard.
|
||||
*
|
||||
* @return The current Difficulty
|
||||
*/
|
||||
public Difficulty getDifficulty() {
|
||||
return handle.getDifficulties().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Difficulty.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setDifficulty(Difficulty value) {
|
||||
handle.getDifficulties().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Difficulty.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setDifficulty(Difficulty value) {
|
||||
handle.getDifficulties().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Gamemode.
|
||||
* <p>
|
||||
* Notes: 0: survival, 1: creative, 2: adventure. The hardcore flag is not
|
||||
* included
|
||||
*
|
||||
* @return The current Gamemode
|
||||
*/
|
||||
public NativeGameMode getGamemode() {
|
||||
return handle.getGameModes().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Gamemode.
|
||||
* <p>
|
||||
* Notes: 0: survival, 1: creative, 2: adventure. The hardcore flag is not
|
||||
* included
|
||||
*
|
||||
* @return The current Gamemode
|
||||
*/
|
||||
public NativeGameMode getGamemode() {
|
||||
return handle.getGameModes().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Gamemode.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setGamemode(NativeGameMode value) {
|
||||
handle.getGameModes().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Gamemode.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setGamemode(NativeGameMode value) {
|
||||
handle.getGameModes().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Level Type.
|
||||
* <p>
|
||||
* Notes: same as Join Game
|
||||
*
|
||||
* @return The current Level Type
|
||||
*/
|
||||
public WorldType getLevelType() {
|
||||
return handle.getWorldTypeModifier().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Level Type.
|
||||
* <p>
|
||||
* Notes: same as Join Game
|
||||
*
|
||||
* @return The current Level Type
|
||||
*/
|
||||
public WorldType getLevelType() {
|
||||
return handle.getWorldTypeModifier().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Level Type.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setLevelType(WorldType value) {
|
||||
handle.getWorldTypeModifier().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Level Type.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setLevelType(WorldType value) {
|
||||
handle.getWorldTypeModifier().write(0, value);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -22,57 +22,57 @@ import com.comphenix.protocol.PacketType;
|
|||
import com.comphenix.protocol.events.PacketContainer;
|
||||
|
||||
public class WrapperPlayServerScoreboardDisplayObjective extends AbstractPacket {
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.SCOREBOARD_DISPLAY_OBJECTIVE;
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.SCOREBOARD_DISPLAY_OBJECTIVE;
|
||||
|
||||
public WrapperPlayServerScoreboardDisplayObjective() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerScoreboardDisplayObjective() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerScoreboardDisplayObjective(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerScoreboardDisplayObjective(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Position.
|
||||
* <p>
|
||||
* Notes: the position of the scoreboard. 0 = list, 1 = sidebar, 2 =
|
||||
* belowName.
|
||||
*
|
||||
* @return The current Position
|
||||
*/
|
||||
public int getPosition() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Position.
|
||||
* <p>
|
||||
* Notes: the position of the scoreboard. 0 = list, 1 = sidebar, 2 =
|
||||
* belowName.
|
||||
*
|
||||
* @return The current Position
|
||||
*/
|
||||
public int getPosition() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Position.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setPosition(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Position.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setPosition(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Score Name.
|
||||
* <p>
|
||||
* Notes: the unique name for the scoreboard to be displayed.
|
||||
*
|
||||
* @return The current Score Name
|
||||
*/
|
||||
public String getScoreName() {
|
||||
return handle.getStrings().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Score Name.
|
||||
* <p>
|
||||
* Notes: the unique name for the scoreboard to be displayed.
|
||||
*
|
||||
* @return The current Score Name
|
||||
*/
|
||||
public String getScoreName() {
|
||||
return handle.getStrings().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Score Name.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setScoreName(String value) {
|
||||
handle.getStrings().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Score Name.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setScoreName(String value) {
|
||||
handle.getStrings().write(0, value);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -24,118 +24,118 @@ import com.comphenix.protocol.reflect.IntEnum;
|
|||
import com.comphenix.protocol.wrappers.WrappedChatComponent;
|
||||
|
||||
public class WrapperPlayServerScoreboardObjective extends AbstractPacket {
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.SCOREBOARD_OBJECTIVE;
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.SCOREBOARD_OBJECTIVE;
|
||||
|
||||
public WrapperPlayServerScoreboardObjective() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerScoreboardObjective() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerScoreboardObjective(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerScoreboardObjective(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Enum containing all known packet modes.
|
||||
*
|
||||
* @author dmulloy2
|
||||
*/
|
||||
public static class Mode extends IntEnum {
|
||||
public static final int ADD_OBJECTIVE = 0;
|
||||
public static final int REMOVE_OBJECTIVE = 1;
|
||||
public static final int UPDATE_VALUE = 2;
|
||||
/**
|
||||
* Retrieve Objective name.
|
||||
* <p>
|
||||
* Notes: an unique name for the objective
|
||||
*
|
||||
* @return The current Objective name
|
||||
*/
|
||||
public String getName() {
|
||||
return handle.getStrings().read(0);
|
||||
}
|
||||
|
||||
private static final Mode INSTANCE = new Mode();
|
||||
/**
|
||||
* Set Objective name.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setName(String value) {
|
||||
handle.getStrings().write(0, value);
|
||||
}
|
||||
|
||||
public static Mode getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Retrieve Objective DisplayName.
|
||||
* <p>
|
||||
* Notes: only if mode is 0 or 2. The text to be displayed for the score.
|
||||
*
|
||||
* @return The current Objective value
|
||||
*/
|
||||
public WrappedChatComponent getDisplayName() {
|
||||
return handle.getChatComponents().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Objective name.
|
||||
* <p>
|
||||
* Notes: an unique name for the objective
|
||||
*
|
||||
* @return The current Objective name
|
||||
*/
|
||||
public String getName() {
|
||||
return handle.getStrings().read(0);
|
||||
}
|
||||
/**
|
||||
* Set Objective DisplayName.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setDisplayName(WrappedChatComponent value) {
|
||||
handle.getChatComponents().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Objective name.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setName(String value) {
|
||||
handle.getStrings().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Retrieve health display.
|
||||
* <p>
|
||||
* Notes: Can be either INTEGER or HEARTS
|
||||
*
|
||||
* @return the current health display value
|
||||
*/
|
||||
public HealthDisplay getHealthDisplay() {
|
||||
return handle.getEnumModifier(HealthDisplay.class, 2).read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Objective DisplayName.
|
||||
* <p>
|
||||
* Notes: only if mode is 0 or 2. The text to be displayed for the score.
|
||||
*
|
||||
* @return The current Objective value
|
||||
*/
|
||||
public WrappedChatComponent getDisplayName() {
|
||||
return handle.getChatComponents().read(0);
|
||||
}
|
||||
/**
|
||||
* Set health display.
|
||||
*
|
||||
* @param value - value
|
||||
* @see #getHealthDisplay()
|
||||
*/
|
||||
public void setHealthDisplay(HealthDisplay value) {
|
||||
handle.getEnumModifier(HealthDisplay.class, 2).write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Objective DisplayName.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setDisplayName(WrappedChatComponent value) {
|
||||
handle.getChatComponents().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Retrieve Mode.
|
||||
* <p>
|
||||
* Notes: 0 to create the scoreboard. 1 to remove the scoreboard. 2 to
|
||||
* update the display text.
|
||||
*
|
||||
* @return The current Mode
|
||||
*/
|
||||
public int getMode() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve health display.
|
||||
* <p>
|
||||
* Notes: Can be either INTEGER or HEARTS
|
||||
*
|
||||
* @return the current health display value
|
||||
*/
|
||||
public HealthDisplay getHealthDisplay() {
|
||||
return handle.getEnumModifier(HealthDisplay.class, 2).read(0);
|
||||
}
|
||||
/**
|
||||
* Set Mode.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setMode(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set health display.
|
||||
*
|
||||
* @param value - value
|
||||
* @see #getHealthDisplay()
|
||||
*/
|
||||
public void setHealthDisplay(HealthDisplay value) {
|
||||
handle.getEnumModifier(HealthDisplay.class, 2).write(0, value);
|
||||
}
|
||||
public enum HealthDisplay {
|
||||
INTEGER, HEARTS
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Mode.
|
||||
* <p>
|
||||
* Notes: 0 to create the scoreboard. 1 to remove the scoreboard. 2 to
|
||||
* update the display text.
|
||||
*
|
||||
* @return The current Mode
|
||||
*/
|
||||
public int getMode() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Enum containing all known packet modes.
|
||||
*
|
||||
* @author dmulloy2
|
||||
*/
|
||||
public static class Mode extends IntEnum {
|
||||
public static final int ADD_OBJECTIVE = 0;
|
||||
public static final int REMOVE_OBJECTIVE = 1;
|
||||
public static final int UPDATE_VALUE = 2;
|
||||
|
||||
/**
|
||||
* Set Mode.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setMode(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
private static final Mode INSTANCE = new Mode();
|
||||
|
||||
public enum HealthDisplay {
|
||||
INTEGER, HEARTS
|
||||
}
|
||||
public static Mode getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -23,85 +23,85 @@ import com.comphenix.protocol.events.PacketContainer;
|
|||
import com.comphenix.protocol.wrappers.EnumWrappers.ScoreboardAction;
|
||||
|
||||
public class WrapperPlayServerScoreboardScore extends AbstractPacket {
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.SCOREBOARD_SCORE;
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.SCOREBOARD_SCORE;
|
||||
|
||||
public WrapperPlayServerScoreboardScore() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerScoreboardScore() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerScoreboardScore(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerScoreboardScore(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Score name.
|
||||
* <p>
|
||||
* Notes: the name of the score to be updated or removed.
|
||||
*
|
||||
* @return The current Score name
|
||||
*/
|
||||
public String getScoreName() {
|
||||
return handle.getStrings().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Score name.
|
||||
* <p>
|
||||
* Notes: the name of the score to be updated or removed.
|
||||
*
|
||||
* @return The current Score name
|
||||
*/
|
||||
public String getScoreName() {
|
||||
return handle.getStrings().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Score name.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setScoreName(String value) {
|
||||
handle.getStrings().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Score name.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setScoreName(String value) {
|
||||
handle.getStrings().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Objective Name.
|
||||
* <p>
|
||||
* Notes: the name of the objective the score belongs to.
|
||||
*
|
||||
* @return The current Objective Name
|
||||
*/
|
||||
public String getObjectiveName() {
|
||||
return handle.getStrings().read(1);
|
||||
}
|
||||
/**
|
||||
* Retrieve Objective Name.
|
||||
* <p>
|
||||
* Notes: the name of the objective the score belongs to.
|
||||
*
|
||||
* @return The current Objective Name
|
||||
*/
|
||||
public String getObjectiveName() {
|
||||
return handle.getStrings().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Objective Name.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setObjectiveName(String value) {
|
||||
handle.getStrings().write(1, value);
|
||||
}
|
||||
/**
|
||||
* Set Objective Name.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setObjectiveName(String value) {
|
||||
handle.getStrings().write(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Value.
|
||||
* <p>
|
||||
* Notes: the score to be displayed next to the entry. Only sent when
|
||||
* Update/Remove does not equal 1.
|
||||
*
|
||||
* @return The current Value
|
||||
*/
|
||||
public int getValue() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Value.
|
||||
* <p>
|
||||
* Notes: the score to be displayed next to the entry. Only sent when
|
||||
* Update/Remove does not equal 1.
|
||||
*
|
||||
* @return The current Value
|
||||
*/
|
||||
public int getValue() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Value.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setValue(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Value.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setValue(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
public ScoreboardAction getAction() {
|
||||
return handle.getScoreboardActions().read(0);
|
||||
}
|
||||
public ScoreboardAction getAction() {
|
||||
return handle.getScoreboardActions().read(0);
|
||||
}
|
||||
|
||||
public void setScoreboardAction(ScoreboardAction value) {
|
||||
handle.getScoreboardActions().write(0, value);
|
||||
}
|
||||
public void setScoreboardAction(ScoreboardAction value) {
|
||||
handle.getScoreboardActions().write(0, value);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,278 +2,277 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.leomelki.com.comphenix.packetwrapper;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.reflect.IntEnum;
|
||||
import com.comphenix.protocol.utility.MinecraftReflection;
|
||||
import com.comphenix.protocol.wrappers.WrappedChatComponent;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public class WrapperPlayServerScoreboardTeam extends AbstractPacket {
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.SCOREBOARD_TEAM;
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.SCOREBOARD_TEAM;
|
||||
|
||||
public WrapperPlayServerScoreboardTeam() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerScoreboardTeam() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerScoreboardTeam(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerScoreboardTeam(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Enum containing all known modes.
|
||||
*
|
||||
* @author dmulloy2
|
||||
*/
|
||||
public static class Mode extends IntEnum {
|
||||
public static final int TEAM_CREATED = 0;
|
||||
public static final int TEAM_REMOVED = 1;
|
||||
public static final int TEAM_UPDATED = 2;
|
||||
public static final int PLAYERS_ADDED = 3;
|
||||
public static final int PLAYERS_REMOVED = 4;
|
||||
/**
|
||||
* Retrieve Team Name.
|
||||
* <p>
|
||||
* Notes: a unique name for the team. (Shared with scoreboard).
|
||||
*
|
||||
* @return The current Team Name
|
||||
*/
|
||||
public String getName() {
|
||||
return handle.getStrings().read(0);
|
||||
}
|
||||
|
||||
private static final Mode INSTANCE = new Mode();
|
||||
/**
|
||||
* Set Team Name.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setName(String value) {
|
||||
handle.getStrings().write(0, value);
|
||||
}
|
||||
|
||||
public static Mode getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Retrieve Team Display Name.
|
||||
* <p>
|
||||
* Notes: only if Mode = 0 or 2.
|
||||
*
|
||||
* @return The current Team Display Name
|
||||
*/
|
||||
public WrappedChatComponent getDisplayName() {
|
||||
return handle.getChatComponents().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Team Name.
|
||||
* <p>
|
||||
* Notes: a unique name for the team. (Shared with scoreboard).
|
||||
*
|
||||
* @return The current Team Name
|
||||
*/
|
||||
public String getName() {
|
||||
return handle.getStrings().read(0);
|
||||
}
|
||||
/**
|
||||
* Set Team Display Name.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setDisplayName(WrappedChatComponent value) {
|
||||
handle.getChatComponents().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Team Name.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setName(String value) {
|
||||
handle.getStrings().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Retrieve Team Prefix.
|
||||
* <p>
|
||||
* Notes: only if Mode = 0 or 2. Displayed before the players' name that are
|
||||
* part of this team.
|
||||
*
|
||||
* @return The current Team Prefix
|
||||
*/
|
||||
public WrappedChatComponent getPrefix() {
|
||||
return handle.getChatComponents().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Team Display Name.
|
||||
* <p>
|
||||
* Notes: only if Mode = 0 or 2.
|
||||
*
|
||||
* @return The current Team Display Name
|
||||
*/
|
||||
public WrappedChatComponent getDisplayName() {
|
||||
return handle.getChatComponents().read(0);
|
||||
}
|
||||
/**
|
||||
* Set Team Prefix.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setPrefix(WrappedChatComponent value) {
|
||||
handle.getChatComponents().write(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Team Display Name.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setDisplayName(WrappedChatComponent value) {
|
||||
handle.getChatComponents().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Retrieve Team Suffix.
|
||||
* <p>
|
||||
* Notes: only if Mode = 0 or 2. Displayed after the players' name that are
|
||||
* part of this team.
|
||||
*
|
||||
* @return The current Team Suffix
|
||||
*/
|
||||
public WrappedChatComponent getSuffix() {
|
||||
return handle.getChatComponents().read(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Team Prefix.
|
||||
* <p>
|
||||
* Notes: only if Mode = 0 or 2. Displayed before the players' name that are
|
||||
* part of this team.
|
||||
*
|
||||
* @return The current Team Prefix
|
||||
*/
|
||||
public WrappedChatComponent getPrefix() {
|
||||
return handle.getChatComponents().read(1);
|
||||
}
|
||||
/**
|
||||
* Set Team Suffix.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setSuffix(WrappedChatComponent value) {
|
||||
handle.getChatComponents().write(2, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Team Prefix.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setPrefix(WrappedChatComponent value) {
|
||||
handle.getChatComponents().write(1, value);
|
||||
}
|
||||
/**
|
||||
* Retrieve Name Tag Visibility.
|
||||
* <p>
|
||||
* Notes: only if Mode = 0 or 2. always, hideForOtherTeams, hideForOwnTeam,
|
||||
* never.
|
||||
*
|
||||
* @return The current Name Tag Visibility
|
||||
*/
|
||||
public String getNameTagVisibility() {
|
||||
return handle.getStrings().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Team Suffix.
|
||||
* <p>
|
||||
* Notes: only if Mode = 0 or 2. Displayed after the players' name that are
|
||||
* part of this team.
|
||||
*
|
||||
* @return The current Team Suffix
|
||||
*/
|
||||
public WrappedChatComponent getSuffix() {
|
||||
return handle.getChatComponents().read(2);
|
||||
}
|
||||
/**
|
||||
* Set Name Tag Visibility.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setNameTagVisibility(String value) {
|
||||
handle.getStrings().write(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Team Suffix.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setSuffix(WrappedChatComponent value) {
|
||||
handle.getChatComponents().write(2, value);
|
||||
}
|
||||
/**
|
||||
* Retrieve Color.
|
||||
* <p>
|
||||
* Notes: only if Mode = 0 or 2. Same as Chat colors.
|
||||
*
|
||||
* @return The current Color
|
||||
*/
|
||||
public ChatColor getColor() {
|
||||
return handle.getEnumModifier(ChatColor.class, MinecraftReflection.getMinecraftClass("EnumChatFormat")).read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Name Tag Visibility.
|
||||
* <p>
|
||||
* Notes: only if Mode = 0 or 2. always, hideForOtherTeams, hideForOwnTeam,
|
||||
* never.
|
||||
*
|
||||
* @return The current Name Tag Visibility
|
||||
*/
|
||||
public String getNameTagVisibility() {
|
||||
return handle.getStrings().read(1);
|
||||
}
|
||||
/**
|
||||
* Set Color.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setColor(ChatColor value) {
|
||||
handle.getEnumModifier(ChatColor.class, MinecraftReflection.getMinecraftClass("EnumChatFormat")).write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Name Tag Visibility.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setNameTagVisibility(String value) {
|
||||
handle.getStrings().write(1, value);
|
||||
}
|
||||
/**
|
||||
* Get the collision rule.
|
||||
* Notes: only if Mode = 0 or 2. always, pushOtherTeams, pushOwnTeam, never.
|
||||
* @return The current collision rule
|
||||
*/
|
||||
public String getCollisionRule() {
|
||||
return handle.getStrings().read(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Color.
|
||||
* <p>
|
||||
* Notes: only if Mode = 0 or 2. Same as Chat colors.
|
||||
*
|
||||
* @return The current Color
|
||||
*/
|
||||
public ChatColor getColor() {
|
||||
return handle.getEnumModifier(ChatColor.class, MinecraftReflection.getMinecraftClass("EnumChatFormat")).read(0);
|
||||
}
|
||||
/**
|
||||
* Sets the collision rule.
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setCollisionRule(String value) {
|
||||
handle.getStrings().write(2, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Color.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setColor(ChatColor value) {
|
||||
handle.getEnumModifier(ChatColor.class, MinecraftReflection.getMinecraftClass("EnumChatFormat")).write(0, value);
|
||||
}
|
||||
/**
|
||||
* Retrieve Players.
|
||||
* <p>
|
||||
* Notes: only if Mode = 0 or 3 or 4. Players to be added/remove from the
|
||||
* team. Max 40 characters so may be uuid's later
|
||||
*
|
||||
* @return The current Players
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<String> getPlayers() {
|
||||
return (List<String>) handle.getSpecificModifier(Collection.class)
|
||||
.read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the collision rule.
|
||||
* Notes: only if Mode = 0 or 2. always, pushOtherTeams, pushOwnTeam, never.
|
||||
* @return The current collision rule
|
||||
*/
|
||||
public String getCollisionRule() {
|
||||
return handle.getStrings().read(2);
|
||||
}
|
||||
/**
|
||||
* Set Players.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setPlayers(List<String> value) {
|
||||
handle.getSpecificModifier(Collection.class).write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the collision rule.
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setCollisionRule(String value) {
|
||||
handle.getStrings().write(2, value);
|
||||
}
|
||||
/**
|
||||
* Retrieve Mode.
|
||||
* <p>
|
||||
* Notes: if 0 then the team is created. If 1 then the team is removed. If 2
|
||||
* the team team information is updated. If 3 then new players are added to
|
||||
* the team. If 4 then players are removed from the team.
|
||||
*
|
||||
* @return The current Mode
|
||||
*/
|
||||
public int getMode() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Players.
|
||||
* <p>
|
||||
* Notes: only if Mode = 0 or 3 or 4. Players to be added/remove from the
|
||||
* team. Max 40 characters so may be uuid's later
|
||||
*
|
||||
* @return The current Players
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<String> getPlayers() {
|
||||
return (List<String>) handle.getSpecificModifier(Collection.class)
|
||||
.read(0);
|
||||
}
|
||||
/**
|
||||
* Set Mode.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setMode(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Players.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setPlayers(List<String> value) {
|
||||
handle.getSpecificModifier(Collection.class).write(0, value);
|
||||
}
|
||||
/**
|
||||
* Retrieve pack option data. Pack data is calculated as follows:
|
||||
*
|
||||
* <pre>
|
||||
* <code>
|
||||
* int data = 0;
|
||||
* if (team.allowFriendlyFire()) {
|
||||
* data |= 1;
|
||||
* }
|
||||
* if (team.canSeeFriendlyInvisibles()) {
|
||||
* data |= 2;
|
||||
* }
|
||||
* </code>
|
||||
* </pre>
|
||||
*
|
||||
* @return The current pack option data
|
||||
*/
|
||||
public int getPackOptionData() {
|
||||
return handle.getIntegers().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Mode.
|
||||
* <p>
|
||||
* Notes: if 0 then the team is created. If 1 then the team is removed. If 2
|
||||
* the team team information is updated. If 3 then new players are added to
|
||||
* the team. If 4 then players are removed from the team.
|
||||
*
|
||||
* @return The current Mode
|
||||
*/
|
||||
public int getMode() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Set pack option data.
|
||||
*
|
||||
* @param value - new value
|
||||
* @see #getPackOptionData()
|
||||
*/
|
||||
public void setPackOptionData(int value) {
|
||||
handle.getIntegers().write(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Mode.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setMode(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Enum containing all known modes.
|
||||
*
|
||||
* @author dmulloy2
|
||||
*/
|
||||
public static class Mode extends IntEnum {
|
||||
public static final int TEAM_CREATED = 0;
|
||||
public static final int TEAM_REMOVED = 1;
|
||||
public static final int TEAM_UPDATED = 2;
|
||||
public static final int PLAYERS_ADDED = 3;
|
||||
public static final int PLAYERS_REMOVED = 4;
|
||||
|
||||
/**
|
||||
* Retrieve pack option data. Pack data is calculated as follows:
|
||||
*
|
||||
* <pre>
|
||||
* <code>
|
||||
* int data = 0;
|
||||
* if (team.allowFriendlyFire()) {
|
||||
* data |= 1;
|
||||
* }
|
||||
* if (team.canSeeFriendlyInvisibles()) {
|
||||
* data |= 2;
|
||||
* }
|
||||
* </code>
|
||||
* </pre>
|
||||
*
|
||||
* @return The current pack option data
|
||||
*/
|
||||
public int getPackOptionData() {
|
||||
return handle.getIntegers().read(1);
|
||||
}
|
||||
private static final Mode INSTANCE = new Mode();
|
||||
|
||||
/**
|
||||
* Set pack option data.
|
||||
*
|
||||
* @param value - new value
|
||||
* @see #getPackOptionData()
|
||||
*/
|
||||
public void setPackOptionData(int value) {
|
||||
handle.getIntegers().write(1, value);
|
||||
}
|
||||
public static Mode getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,377 +2,376 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.leomelki.com.comphenix.packetwrapper;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.ProtocolLibrary;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import com.comphenix.protocol.injector.PacketConstructor;
|
||||
import com.comphenix.protocol.reflect.IntEnum;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class WrapperPlayServerSpawnEntity extends AbstractPacket {
|
||||
public static final PacketType TYPE = PacketType.Play.Server.SPAWN_ENTITY;
|
||||
public static final PacketType TYPE = PacketType.Play.Server.SPAWN_ENTITY;
|
||||
|
||||
private static PacketConstructor entityConstructor;
|
||||
private static PacketConstructor entityConstructor;
|
||||
|
||||
/**
|
||||
* Represents the different object types.
|
||||
*
|
||||
* @author Kristian
|
||||
*/
|
||||
public static class ObjectTypes extends IntEnum {
|
||||
public static final int BOAT = 1;
|
||||
public static final int ITEM_STACK = 2;
|
||||
public static final int AREA_EFFECT_CLOUD = 3;
|
||||
public static final int MINECART = 10;
|
||||
public static final int ACTIVATED_TNT = 50;
|
||||
public static final int ENDER_CRYSTAL = 51;
|
||||
public static final int TIPPED_ARROW_PROJECTILE = 60;
|
||||
public static final int SNOWBALL_PROJECTILE = 61;
|
||||
public static final int EGG_PROJECTILE = 62;
|
||||
public static final int GHAST_FIREBALL = 63;
|
||||
public static final int BLAZE_FIREBALL = 64;
|
||||
public static final int THROWN_ENDERPEARL = 65;
|
||||
public static final int WITHER_SKULL_PROJECTILE = 66;
|
||||
public static final int SHULKER_BULLET = 67;
|
||||
public static final int FALLING_BLOCK = 70;
|
||||
public static final int ITEM_FRAME = 71;
|
||||
public static final int EYE_OF_ENDER = 72;
|
||||
public static final int THROWN_POTION = 73;
|
||||
public static final int THROWN_EXP_BOTTLE = 75;
|
||||
public static final int FIREWORK_ROCKET = 76;
|
||||
public static final int LEASH_KNOT = 77;
|
||||
public static final int ARMORSTAND = 78;
|
||||
public static final int FISHING_FLOAT = 90;
|
||||
public static final int SPECTRAL_ARROW = 91;
|
||||
public static final int DRAGON_FIREBALL = 93;
|
||||
public WrapperPlayServerSpawnEntity() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
/**
|
||||
* The singleton instance. Can also be retrieved from the parent class.
|
||||
*/
|
||||
private static final ObjectTypes INSTANCE = new ObjectTypes();
|
||||
public WrapperPlayServerSpawnEntity(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve an instance of the object types enum.
|
||||
*
|
||||
* @return Object type enum.
|
||||
*/
|
||||
public static ObjectTypes getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
}
|
||||
public WrapperPlayServerSpawnEntity(Entity entity, int type, int objectData) {
|
||||
super(fromEntity(entity, type, objectData), TYPE);
|
||||
}
|
||||
|
||||
public WrapperPlayServerSpawnEntity() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
// Useful constructor
|
||||
private static PacketContainer fromEntity(Entity entity, int type,
|
||||
int objectData) {
|
||||
if (entityConstructor == null)
|
||||
entityConstructor =
|
||||
ProtocolLibrary.getProtocolManager()
|
||||
.createPacketConstructor(TYPE, entity, type,
|
||||
objectData);
|
||||
return entityConstructor.createPacket(entity, type, objectData);
|
||||
}
|
||||
|
||||
public WrapperPlayServerSpawnEntity(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
/**
|
||||
* Retrieve entity ID of the Object.
|
||||
*
|
||||
* @return The current EID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
public WrapperPlayServerSpawnEntity(Entity entity, int type, int objectData) {
|
||||
super(fromEntity(entity, type, objectData), TYPE);
|
||||
}
|
||||
/**
|
||||
* Set entity ID of the Object.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
// Useful constructor
|
||||
private static PacketContainer fromEntity(Entity entity, int type,
|
||||
int objectData) {
|
||||
if (entityConstructor == null)
|
||||
entityConstructor =
|
||||
ProtocolLibrary.getProtocolManager()
|
||||
.createPacketConstructor(TYPE, entity, type,
|
||||
objectData);
|
||||
return entityConstructor.createPacket(entity, type, objectData);
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity that will be spawned.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve entity ID of the Object.
|
||||
*
|
||||
* @return The current EID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity that will be spawned.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity that will be spawned.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
public UUID getUniqueId() {
|
||||
return handle.getUUIDs().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity that will be spawned.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
public void setUniqueId(UUID value) {
|
||||
handle.getUUIDs().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set entity ID of the Object.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Retrieve the x position of the object.
|
||||
* <p>
|
||||
* Note that the coordinate is rounded off to the nearest 1/32 of a meter.
|
||||
*
|
||||
* @return The current X
|
||||
*/
|
||||
public double getX() {
|
||||
return handle.getDoubles().read(0);
|
||||
}
|
||||
|
||||
public UUID getUniqueId() {
|
||||
return handle.getUUIDs().read(0);
|
||||
}
|
||||
/**
|
||||
* Set the x position of the object.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setX(double value) {
|
||||
handle.getDoubles().write(0, value);
|
||||
}
|
||||
|
||||
public void setUniqueId(UUID value) {
|
||||
handle.getUUIDs().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Retrieve the y position of the object.
|
||||
* <p>
|
||||
* Note that the coordinate is rounded off to the nearest 1/32 of a meter.
|
||||
*
|
||||
* @return The current y
|
||||
*/
|
||||
public double getY() {
|
||||
return handle.getDoubles().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the x position of the object.
|
||||
* <p>
|
||||
* Note that the coordinate is rounded off to the nearest 1/32 of a meter.
|
||||
*
|
||||
* @return The current X
|
||||
*/
|
||||
public double getX() {
|
||||
return handle.getDoubles().read(0);
|
||||
}
|
||||
/**
|
||||
* Set the y position of the object.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setY(double value) {
|
||||
handle.getDoubles().write(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the x position of the object.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setX(double value) {
|
||||
handle.getDoubles().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Retrieve the z position of the object.
|
||||
* <p>
|
||||
* Note that the coordinate is rounded off to the nearest 1/32 of a meter.
|
||||
*
|
||||
* @return The current z
|
||||
*/
|
||||
public double getZ() {
|
||||
return handle.getDoubles().read(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the y position of the object.
|
||||
* <p>
|
||||
* Note that the coordinate is rounded off to the nearest 1/32 of a meter.
|
||||
*
|
||||
* @return The current y
|
||||
*/
|
||||
public double getY() {
|
||||
return handle.getDoubles().read(1);
|
||||
}
|
||||
/**
|
||||
* Set the z position of the object.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setZ(double value) {
|
||||
handle.getDoubles().write(2, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the y position of the object.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setY(double value) {
|
||||
handle.getDoubles().write(1, value);
|
||||
}
|
||||
/**
|
||||
* Retrieve the optional speed x.
|
||||
* <p>
|
||||
* This is ignored if {@link #getObjectData()} is zero.
|
||||
*
|
||||
* @return The optional speed x.
|
||||
*/
|
||||
public double getOptionalSpeedX() {
|
||||
return handle.getIntegers().read(1) / 8000.0D;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the z position of the object.
|
||||
* <p>
|
||||
* Note that the coordinate is rounded off to the nearest 1/32 of a meter.
|
||||
*
|
||||
* @return The current z
|
||||
*/
|
||||
public double getZ() {
|
||||
return handle.getDoubles().read(2);
|
||||
}
|
||||
/**
|
||||
* Set the optional speed x.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setOptionalSpeedX(double value) {
|
||||
handle.getIntegers().write(1, (int) (value * 8000.0D));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the z position of the object.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setZ(double value) {
|
||||
handle.getDoubles().write(2, value);
|
||||
}
|
||||
/**
|
||||
* Retrieve the optional speed y.
|
||||
* <p>
|
||||
* This is ignored if {@link #getObjectData()} is zero.
|
||||
*
|
||||
* @return The optional speed y.
|
||||
*/
|
||||
public double getOptionalSpeedY() {
|
||||
return handle.getIntegers().read(2) / 8000.0D;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the optional speed x.
|
||||
* <p>
|
||||
* This is ignored if {@link #getObjectData()} is zero.
|
||||
*
|
||||
* @return The optional speed x.
|
||||
*/
|
||||
public double getOptionalSpeedX() {
|
||||
return handle.getIntegers().read(1) / 8000.0D;
|
||||
}
|
||||
/**
|
||||
* Set the optional speed y.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setOptionalSpeedY(double value) {
|
||||
handle.getIntegers().write(2, (int) (value * 8000.0D));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the optional speed x.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setOptionalSpeedX(double value) {
|
||||
handle.getIntegers().write(1, (int) (value * 8000.0D));
|
||||
}
|
||||
/**
|
||||
* Retrieve the optional speed z.
|
||||
* <p>
|
||||
* This is ignored if {@link #getObjectData()} is zero.
|
||||
*
|
||||
* @return The optional speed z.
|
||||
*/
|
||||
public double getOptionalSpeedZ() {
|
||||
return handle.getIntegers().read(3) / 8000.0D;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the optional speed y.
|
||||
* <p>
|
||||
* This is ignored if {@link #getObjectData()} is zero.
|
||||
*
|
||||
* @return The optional speed y.
|
||||
*/
|
||||
public double getOptionalSpeedY() {
|
||||
return handle.getIntegers().read(2) / 8000.0D;
|
||||
}
|
||||
/**
|
||||
* Set the optional speed z.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setOptionalSpeedZ(double value) {
|
||||
handle.getIntegers().write(3, (int) (value * 8000.0D));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the optional speed y.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setOptionalSpeedY(double value) {
|
||||
handle.getIntegers().write(2, (int) (value * 8000.0D));
|
||||
}
|
||||
/**
|
||||
* Retrieve the pitch.
|
||||
*
|
||||
* @return The current pitch.
|
||||
*/
|
||||
public float getPitch() {
|
||||
return (handle.getIntegers().read(4) * 360.F) / 256.0F;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the optional speed z.
|
||||
* <p>
|
||||
* This is ignored if {@link #getObjectData()} is zero.
|
||||
*
|
||||
* @return The optional speed z.
|
||||
*/
|
||||
public double getOptionalSpeedZ() {
|
||||
return handle.getIntegers().read(3) / 8000.0D;
|
||||
}
|
||||
/**
|
||||
* Set the pitch.
|
||||
*
|
||||
* @param value - new pitch.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getIntegers().write(4, (int) (value * 256.0F / 360.0F));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the optional speed z.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setOptionalSpeedZ(double value) {
|
||||
handle.getIntegers().write(3, (int) (value * 8000.0D));
|
||||
}
|
||||
/**
|
||||
* Retrieve the yaw.
|
||||
*
|
||||
* @return The current Yaw
|
||||
*/
|
||||
public float getYaw() {
|
||||
return (handle.getIntegers().read(5) * 360.F) / 256.0F;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the pitch.
|
||||
*
|
||||
* @return The current pitch.
|
||||
*/
|
||||
public float getPitch() {
|
||||
return (handle.getIntegers().read(4) * 360.F) / 256.0F;
|
||||
}
|
||||
/**
|
||||
* Set the yaw of the object spawned.
|
||||
*
|
||||
* @param value - new yaw.
|
||||
*/
|
||||
public void setYaw(float value) {
|
||||
handle.getIntegers().write(5, (int) (value * 256.0F / 360.0F));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the pitch.
|
||||
*
|
||||
* @param value - new pitch.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getIntegers().write(4, (int) (value * 256.0F / 360.0F));
|
||||
}
|
||||
/**
|
||||
* Retrieve the type of object. See {@link ObjectTypes}
|
||||
*
|
||||
* @return The current Type
|
||||
*/
|
||||
public int getType() {
|
||||
return handle.getIntegers().read(6);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the yaw.
|
||||
*
|
||||
* @return The current Yaw
|
||||
*/
|
||||
public float getYaw() {
|
||||
return (handle.getIntegers().read(5) * 360.F) / 256.0F;
|
||||
}
|
||||
/**
|
||||
* Set the type of object. See {@link ObjectTypes}.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setType(int value) {
|
||||
handle.getIntegers().write(6, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the yaw of the object spawned.
|
||||
*
|
||||
* @param value - new yaw.
|
||||
*/
|
||||
public void setYaw(float value) {
|
||||
handle.getIntegers().write(5, (int) (value * 256.0F / 360.0F));
|
||||
}
|
||||
/**
|
||||
* Retrieve object data.
|
||||
* <p>
|
||||
* The content depends on the object type:
|
||||
* <table border="1" cellpadding="4">
|
||||
* <tr>
|
||||
* <th>Object Type:</th>
|
||||
* <th>Name:</th>
|
||||
* <th>Description</th>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>ITEM_FRAME</td>
|
||||
* <td>Orientation</td>
|
||||
* <td>0-3: South, West, North, East</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>FALLING_BLOCK</td>
|
||||
* <td>Block Type</td>
|
||||
* <td>BlockID | (Metadata << 0xC)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>Projectiles</td>
|
||||
* <td>Entity ID</td>
|
||||
* <td>The entity ID of the thrower</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>Splash Potions</td>
|
||||
* <td>Data Value</td>
|
||||
* <td>Potion data value.</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
* @return The current object Data
|
||||
*/
|
||||
public int getObjectData() {
|
||||
return handle.getIntegers().read(7);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the type of object. See {@link ObjectTypes}
|
||||
*
|
||||
* @return The current Type
|
||||
*/
|
||||
public int getType() {
|
||||
return handle.getIntegers().read(6);
|
||||
}
|
||||
/**
|
||||
* Set object Data.
|
||||
* <p>
|
||||
* The content depends on the object type. See {@link #getObjectData()} for
|
||||
* more information.
|
||||
*
|
||||
* @param value - new object data.
|
||||
*/
|
||||
public void setObjectData(int value) {
|
||||
handle.getIntegers().write(7, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the type of object. See {@link ObjectTypes}.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setType(int value) {
|
||||
handle.getIntegers().write(6, value);
|
||||
}
|
||||
/**
|
||||
* Represents the different object types.
|
||||
*
|
||||
* @author Kristian
|
||||
*/
|
||||
public static class ObjectTypes extends IntEnum {
|
||||
public static final int BOAT = 1;
|
||||
public static final int ITEM_STACK = 2;
|
||||
public static final int AREA_EFFECT_CLOUD = 3;
|
||||
public static final int MINECART = 10;
|
||||
public static final int ACTIVATED_TNT = 50;
|
||||
public static final int ENDER_CRYSTAL = 51;
|
||||
public static final int TIPPED_ARROW_PROJECTILE = 60;
|
||||
public static final int SNOWBALL_PROJECTILE = 61;
|
||||
public static final int EGG_PROJECTILE = 62;
|
||||
public static final int GHAST_FIREBALL = 63;
|
||||
public static final int BLAZE_FIREBALL = 64;
|
||||
public static final int THROWN_ENDERPEARL = 65;
|
||||
public static final int WITHER_SKULL_PROJECTILE = 66;
|
||||
public static final int SHULKER_BULLET = 67;
|
||||
public static final int FALLING_BLOCK = 70;
|
||||
public static final int ITEM_FRAME = 71;
|
||||
public static final int EYE_OF_ENDER = 72;
|
||||
public static final int THROWN_POTION = 73;
|
||||
public static final int THROWN_EXP_BOTTLE = 75;
|
||||
public static final int FIREWORK_ROCKET = 76;
|
||||
public static final int LEASH_KNOT = 77;
|
||||
public static final int ARMORSTAND = 78;
|
||||
public static final int FISHING_FLOAT = 90;
|
||||
public static final int SPECTRAL_ARROW = 91;
|
||||
public static final int DRAGON_FIREBALL = 93;
|
||||
|
||||
/**
|
||||
* Retrieve object data.
|
||||
* <p>
|
||||
* The content depends on the object type:
|
||||
* <table border="1" cellpadding="4">
|
||||
* <tr>
|
||||
* <th>Object Type:</th>
|
||||
* <th>Name:</th>
|
||||
* <th>Description</th>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>ITEM_FRAME</td>
|
||||
* <td>Orientation</td>
|
||||
* <td>0-3: South, West, North, East</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>FALLING_BLOCK</td>
|
||||
* <td>Block Type</td>
|
||||
* <td>BlockID | (Metadata << 0xC)</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>Projectiles</td>
|
||||
* <td>Entity ID</td>
|
||||
* <td>The entity ID of the thrower</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td>Splash Potions</td>
|
||||
* <td>Data Value</td>
|
||||
* <td>Potion data value.</td>
|
||||
* </tr>
|
||||
* </table>
|
||||
*
|
||||
* @return The current object Data
|
||||
*/
|
||||
public int getObjectData() {
|
||||
return handle.getIntegers().read(7);
|
||||
}
|
||||
/**
|
||||
* The singleton instance. Can also be retrieved from the parent class.
|
||||
*/
|
||||
private static final ObjectTypes INSTANCE = new ObjectTypes();
|
||||
|
||||
/**
|
||||
* Set object Data.
|
||||
* <p>
|
||||
* The content depends on the object type. See {@link #getObjectData()} for
|
||||
* more information.
|
||||
*
|
||||
* @param value - new object data.
|
||||
*/
|
||||
public void setObjectData(int value) {
|
||||
handle.getIntegers().write(7, value);
|
||||
}
|
||||
/**
|
||||
* Retrieve an instance of the object types enum.
|
||||
*
|
||||
* @return Object type enum.
|
||||
*/
|
||||
public static ObjectTypes getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,312 +2,311 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package fr.leomelki.com.comphenix.packetwrapper;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.ProtocolLibrary;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import com.comphenix.protocol.injector.PacketConstructor;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class WrapperPlayServerSpawnEntityLiving extends AbstractPacket {
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.SPAWN_ENTITY_LIVING;
|
||||
public static final PacketType TYPE =
|
||||
PacketType.Play.Server.SPAWN_ENTITY_LIVING;
|
||||
|
||||
private static PacketConstructor entityConstructor;
|
||||
private static PacketConstructor entityConstructor;
|
||||
|
||||
public WrapperPlayServerSpawnEntityLiving() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerSpawnEntityLiving() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerSpawnEntityLiving(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerSpawnEntityLiving(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
public WrapperPlayServerSpawnEntityLiving(Entity entity) {
|
||||
super(fromEntity(entity), TYPE);
|
||||
}
|
||||
public WrapperPlayServerSpawnEntityLiving(Entity entity) {
|
||||
super(fromEntity(entity), TYPE);
|
||||
}
|
||||
|
||||
// Useful constructor
|
||||
private static PacketContainer fromEntity(Entity entity) {
|
||||
if (entityConstructor == null)
|
||||
entityConstructor =
|
||||
ProtocolLibrary.getProtocolManager()
|
||||
.createPacketConstructor(TYPE, entity);
|
||||
return entityConstructor.createPacket(entity);
|
||||
}
|
||||
// Useful constructor
|
||||
private static PacketContainer fromEntity(Entity entity) {
|
||||
if (entityConstructor == null)
|
||||
entityConstructor =
|
||||
ProtocolLibrary.getProtocolManager()
|
||||
.createPacketConstructor(TYPE, entity);
|
||||
return entityConstructor.createPacket(entity);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve entity ID.
|
||||
*
|
||||
* @return The current EID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve entity ID.
|
||||
*
|
||||
* @return The current EID
|
||||
*/
|
||||
public int getEntityID() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity that will be spawned.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
/**
|
||||
* Set entity ID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the entity that will be spawned.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity that will be spawned.
|
||||
*
|
||||
* @param world - the current world of the entity.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(World world) {
|
||||
return handle.getEntityModifier(world).read(0);
|
||||
}
|
||||
|
||||
public UUID getUniqueId() {
|
||||
return handle.getUUIDs().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve the entity that will be spawned.
|
||||
*
|
||||
* @param event - the packet event.
|
||||
* @return The spawned entity.
|
||||
*/
|
||||
public Entity getEntity(PacketEvent event) {
|
||||
return getEntity(event.getPlayer().getWorld());
|
||||
}
|
||||
|
||||
public void setUniqueId(UUID value) {
|
||||
handle.getUUIDs().write(0, value);
|
||||
}
|
||||
public UUID getUniqueId() {
|
||||
return handle.getUUIDs().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set entity ID.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setEntityID(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
public void setUniqueId(UUID value) {
|
||||
handle.getUUIDs().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the type of mob.
|
||||
*
|
||||
* @return The current Type
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public EntityType getType() {
|
||||
return EntityType.fromId(handle.getIntegers().read(1));
|
||||
}
|
||||
/**
|
||||
* Retrieve the type of mob.
|
||||
*
|
||||
* @return The current Type
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public EntityType getType() {
|
||||
return EntityType.fromId(handle.getIntegers().read(1));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the type of mob.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public void setType(EntityType value) {
|
||||
handle.getIntegers().write(1, (int) value.getTypeId());
|
||||
}
|
||||
/**
|
||||
* Set the type of mob.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public void setType(EntityType value) {
|
||||
handle.getIntegers().write(1, (int) value.getTypeId());
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the x position of the object.
|
||||
* <p>
|
||||
* Note that the coordinate is rounded off to the nearest 1/32 of a meter.
|
||||
*
|
||||
* @return The current X
|
||||
*/
|
||||
public double getX() {
|
||||
return handle.getDoubles().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve the x position of the object.
|
||||
* <p>
|
||||
* Note that the coordinate is rounded off to the nearest 1/32 of a meter.
|
||||
*
|
||||
* @return The current X
|
||||
*/
|
||||
public double getX() {
|
||||
return handle.getDoubles().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the x position of the object.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setX(double value) {
|
||||
handle.getDoubles().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set the x position of the object.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setX(double value) {
|
||||
handle.getDoubles().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the y position of the object.
|
||||
* <p>
|
||||
* Note that the coordinate is rounded off to the nearest 1/32 of a meter.
|
||||
*
|
||||
* @return The current y
|
||||
*/
|
||||
public double getY() {
|
||||
return handle.getDoubles().read(1);
|
||||
}
|
||||
/**
|
||||
* Retrieve the y position of the object.
|
||||
* <p>
|
||||
* Note that the coordinate is rounded off to the nearest 1/32 of a meter.
|
||||
*
|
||||
* @return The current y
|
||||
*/
|
||||
public double getY() {
|
||||
return handle.getDoubles().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the y position of the object.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setY(double value) {
|
||||
handle.getDoubles().write(1, value);
|
||||
}
|
||||
/**
|
||||
* Set the y position of the object.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setY(double value) {
|
||||
handle.getDoubles().write(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the z position of the object.
|
||||
* <p>
|
||||
* Note that the coordinate is rounded off to the nearest 1/32 of a meter.
|
||||
*
|
||||
* @return The current z
|
||||
*/
|
||||
public double getZ() {
|
||||
return handle.getDoubles().read(2);
|
||||
}
|
||||
/**
|
||||
* Retrieve the z position of the object.
|
||||
* <p>
|
||||
* Note that the coordinate is rounded off to the nearest 1/32 of a meter.
|
||||
*
|
||||
* @return The current z
|
||||
*/
|
||||
public double getZ() {
|
||||
return handle.getDoubles().read(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the z position of the object.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setZ(double value) {
|
||||
handle.getDoubles().write(2, value);
|
||||
}
|
||||
/**
|
||||
* Set the z position of the object.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setZ(double value) {
|
||||
handle.getDoubles().write(2, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the yaw.
|
||||
*
|
||||
* @return The current Yaw
|
||||
*/
|
||||
public float getYaw() {
|
||||
return (handle.getBytes().read(0) * 360.F) / 256.0F;
|
||||
}
|
||||
/**
|
||||
* Retrieve the yaw.
|
||||
*
|
||||
* @return The current Yaw
|
||||
*/
|
||||
public float getYaw() {
|
||||
return (handle.getBytes().read(0) * 360.F) / 256.0F;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the yaw of the spawned mob.
|
||||
*
|
||||
* @param value - new yaw.
|
||||
*/
|
||||
public void setYaw(float value) {
|
||||
handle.getBytes().write(0, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
/**
|
||||
* Set the yaw of the spawned mob.
|
||||
*
|
||||
* @param value - new yaw.
|
||||
*/
|
||||
public void setYaw(float value) {
|
||||
handle.getBytes().write(0, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the pitch.
|
||||
*
|
||||
* @return The current pitch
|
||||
*/
|
||||
public float getPitch() {
|
||||
return (handle.getBytes().read(1) * 360.F) / 256.0F;
|
||||
}
|
||||
/**
|
||||
* Retrieve the pitch.
|
||||
*
|
||||
* @return The current pitch
|
||||
*/
|
||||
public float getPitch() {
|
||||
return (handle.getBytes().read(1) * 360.F) / 256.0F;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the pitch of the spawned mob.
|
||||
*
|
||||
* @param value - new pitch.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getBytes().write(1, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
/**
|
||||
* Set the pitch of the spawned mob.
|
||||
*
|
||||
* @param value - new pitch.
|
||||
*/
|
||||
public void setPitch(float value) {
|
||||
handle.getBytes().write(1, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the yaw of the mob's head.
|
||||
*
|
||||
* @return The current yaw.
|
||||
*/
|
||||
public float getHeadPitch() {
|
||||
return (handle.getBytes().read(2) * 360.F) / 256.0F;
|
||||
}
|
||||
/**
|
||||
* Retrieve the yaw of the mob's head.
|
||||
*
|
||||
* @return The current yaw.
|
||||
*/
|
||||
public float getHeadPitch() {
|
||||
return (handle.getBytes().read(2) * 360.F) / 256.0F;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the yaw of the mob's head.
|
||||
*
|
||||
* @param value - new yaw.
|
||||
*/
|
||||
public void setHeadPitch(float value) {
|
||||
handle.getBytes().write(2, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
/**
|
||||
* Set the yaw of the mob's head.
|
||||
*
|
||||
* @param value - new yaw.
|
||||
*/
|
||||
public void setHeadPitch(float value) {
|
||||
handle.getBytes().write(2, (byte) (value * 256.0F / 360.0F));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the velocity in the x axis.
|
||||
*
|
||||
* @return The current velocity X
|
||||
*/
|
||||
public double getVelocityX() {
|
||||
return handle.getIntegers().read(2) / 8000.0D;
|
||||
}
|
||||
/**
|
||||
* Retrieve the velocity in the x axis.
|
||||
*
|
||||
* @return The current velocity X
|
||||
*/
|
||||
public double getVelocityX() {
|
||||
return handle.getIntegers().read(2) / 8000.0D;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the velocity in the x axis.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setVelocityX(double value) {
|
||||
handle.getIntegers().write(2, (int) (value * 8000.0D));
|
||||
}
|
||||
/**
|
||||
* Set the velocity in the x axis.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setVelocityX(double value) {
|
||||
handle.getIntegers().write(2, (int) (value * 8000.0D));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the velocity in the y axis.
|
||||
*
|
||||
* @return The current velocity y
|
||||
*/
|
||||
public double getVelocityY() {
|
||||
return handle.getIntegers().read(3) / 8000.0D;
|
||||
}
|
||||
/**
|
||||
* Retrieve the velocity in the y axis.
|
||||
*
|
||||
* @return The current velocity y
|
||||
*/
|
||||
public double getVelocityY() {
|
||||
return handle.getIntegers().read(3) / 8000.0D;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the velocity in the y axis.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setVelocityY(double value) {
|
||||
handle.getIntegers().write(3, (int) (value * 8000.0D));
|
||||
}
|
||||
/**
|
||||
* Set the velocity in the y axis.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setVelocityY(double value) {
|
||||
handle.getIntegers().write(3, (int) (value * 8000.0D));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the velocity in the z axis.
|
||||
*
|
||||
* @return The current velocity z
|
||||
*/
|
||||
public double getVelocityZ() {
|
||||
return handle.getIntegers().read(4) / 8000.0D;
|
||||
}
|
||||
/**
|
||||
* Retrieve the velocity in the z axis.
|
||||
*
|
||||
* @return The current velocity z
|
||||
*/
|
||||
public double getVelocityZ() {
|
||||
return handle.getIntegers().read(4) / 8000.0D;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the velocity in the z axis.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setVelocityZ(double value) {
|
||||
handle.getIntegers().write(4, (int) (value * 8000.0D));
|
||||
}
|
||||
/**
|
||||
* Set the velocity in the z axis.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setVelocityZ(double value) {
|
||||
handle.getIntegers().write(4, (int) (value * 8000.0D));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the data watcher.
|
||||
* <p>
|
||||
* Content varies by mob, see Entities.
|
||||
*
|
||||
* @return The current Metadata
|
||||
*/
|
||||
/**
|
||||
* Retrieve the data watcher.
|
||||
* <p>
|
||||
* Content varies by mob, see Entities.
|
||||
*
|
||||
* @return The current Metadata
|
||||
*/
|
||||
/* public WrappedDataWatcher getMetadata() {
|
||||
return handle.getDataWatcherModifier().read(0);
|
||||
}*/
|
||||
|
||||
/**
|
||||
* Set the data watcher.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
/**
|
||||
* Set the data watcher.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
/*public void setMetadata(WrappedDataWatcher value) {
|
||||
handle.getDataWatcherModifier().write(0, value);
|
||||
}*/
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
* This file is part of PacketWrapper.
|
||||
* Copyright (C) 2012-2015 Kristian S. Strangeland
|
||||
* Copyright (C) 2015 dmulloy2
|
||||
*
|
||||
* <p>
|
||||
* PacketWrapper is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* PacketWrapper is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with PacketWrapper. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -45,10 +45,10 @@ public class WrapperPlayServerStopSound extends AbstractPacket {
|
|||
}
|
||||
|
||||
public EnumWrappers.SoundCategory getCategory() {
|
||||
return handle.getSoundCategories().readSafely(0);
|
||||
return handle.getSoundCategories().readSafely(0);
|
||||
}
|
||||
|
||||
public void setCategory(EnumWrappers.SoundCategory value) {
|
||||
handle.getSoundCategories().writeSafely(0, value);
|
||||
handle.getSoundCategories().writeSafely(0, value);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -24,108 +24,108 @@ import com.comphenix.protocol.wrappers.EnumWrappers.TitleAction;
|
|||
import com.comphenix.protocol.wrappers.WrappedChatComponent;
|
||||
|
||||
public class WrapperPlayServerTitle extends AbstractPacket {
|
||||
public static final PacketType TYPE = PacketType.Play.Server.TITLE;
|
||||
public static final PacketType TYPE = PacketType.Play.Server.TITLE;
|
||||
|
||||
public WrapperPlayServerTitle() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerTitle() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerTitle(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerTitle(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Action.
|
||||
*
|
||||
* @return The current Action
|
||||
*/
|
||||
public TitleAction getAction() {
|
||||
return handle.getTitleActions().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Action.
|
||||
*
|
||||
* @return The current Action
|
||||
*/
|
||||
public TitleAction getAction() {
|
||||
return handle.getTitleActions().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Action.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setAction(TitleAction value) {
|
||||
handle.getTitleActions().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Action.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setAction(TitleAction value) {
|
||||
handle.getTitleActions().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve 0 (TITLE).
|
||||
* <p>
|
||||
* Notes: chat
|
||||
*
|
||||
* @return The current 0 (TITLE)
|
||||
*/
|
||||
public WrappedChatComponent getTitle() {
|
||||
return handle.getChatComponents().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve 0 (TITLE).
|
||||
* <p>
|
||||
* Notes: chat
|
||||
*
|
||||
* @return The current 0 (TITLE)
|
||||
*/
|
||||
public WrappedChatComponent getTitle() {
|
||||
return handle.getChatComponents().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set 0 (TITLE).
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setTitle(WrappedChatComponent value) {
|
||||
handle.getChatComponents().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set 0 (TITLE).
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setTitle(WrappedChatComponent value) {
|
||||
handle.getChatComponents().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve 2 (TIMES).
|
||||
* <p>
|
||||
* Notes: int
|
||||
*
|
||||
* @return The current 2 (TIMES)
|
||||
*/
|
||||
public int getFadeIn() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve 2 (TIMES).
|
||||
* <p>
|
||||
* Notes: int
|
||||
*
|
||||
* @return The current 2 (TIMES)
|
||||
*/
|
||||
public int getFadeIn() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set 2 (TIMES).
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setFadeIn(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set 2 (TIMES).
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setFadeIn(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Stay.
|
||||
*
|
||||
* @return The current Stay
|
||||
*/
|
||||
public int getStay() {
|
||||
return handle.getIntegers().read(1);
|
||||
}
|
||||
/**
|
||||
* Retrieve Stay.
|
||||
*
|
||||
* @return The current Stay
|
||||
*/
|
||||
public int getStay() {
|
||||
return handle.getIntegers().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Stay.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setStay(int value) {
|
||||
handle.getIntegers().write(1, value);
|
||||
}
|
||||
/**
|
||||
* Set Stay.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setStay(int value) {
|
||||
handle.getIntegers().write(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Fade Out.
|
||||
*
|
||||
* @return The current Fade Out
|
||||
*/
|
||||
public int getFadeOut() {
|
||||
return handle.getIntegers().read(2);
|
||||
}
|
||||
/**
|
||||
* Retrieve Fade Out.
|
||||
*
|
||||
* @return The current Fade Out
|
||||
*/
|
||||
public int getFadeOut() {
|
||||
return handle.getIntegers().read(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Fade Out.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setFadeOut(int value) {
|
||||
handle.getIntegers().write(2, value);
|
||||
}
|
||||
/**
|
||||
* Set Fade Out.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setFadeOut(int value) {
|
||||
handle.getIntegers().write(2, value);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -22,75 +22,75 @@ import com.comphenix.protocol.PacketType;
|
|||
import com.comphenix.protocol.events.PacketContainer;
|
||||
|
||||
public class WrapperPlayServerUpdateHealth extends AbstractPacket {
|
||||
public static final PacketType TYPE = PacketType.Play.Server.UPDATE_HEALTH;
|
||||
public static final PacketType TYPE = PacketType.Play.Server.UPDATE_HEALTH;
|
||||
|
||||
public WrapperPlayServerUpdateHealth() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerUpdateHealth() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerUpdateHealth(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerUpdateHealth(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Health.
|
||||
* <p>
|
||||
* Notes: 0 or less = dead, 20 = full HP
|
||||
*
|
||||
* @return The current Health
|
||||
*/
|
||||
public float getHealth() {
|
||||
return handle.getFloat().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Health.
|
||||
* <p>
|
||||
* Notes: 0 or less = dead, 20 = full HP
|
||||
*
|
||||
* @return The current Health
|
||||
*/
|
||||
public float getHealth() {
|
||||
return handle.getFloat().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Health.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setHealth(float value) {
|
||||
handle.getFloat().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Health.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setHealth(float value) {
|
||||
handle.getFloat().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Food.
|
||||
* <p>
|
||||
* Notes: 0 - 20
|
||||
*
|
||||
* @return The current Food
|
||||
*/
|
||||
public int getFood() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Food.
|
||||
* <p>
|
||||
* Notes: 0 - 20
|
||||
*
|
||||
* @return The current Food
|
||||
*/
|
||||
public int getFood() {
|
||||
return handle.getIntegers().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Food.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setFood(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Food.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setFood(int value) {
|
||||
handle.getIntegers().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Food Saturation.
|
||||
* <p>
|
||||
* Notes: seems to vary from 0.0 to 5.0 in integer increments
|
||||
*
|
||||
* @return The current Food Saturation
|
||||
*/
|
||||
public float getFoodSaturation() {
|
||||
return handle.getFloat().read(1);
|
||||
}
|
||||
/**
|
||||
* Retrieve Food Saturation.
|
||||
* <p>
|
||||
* Notes: seems to vary from 0.0 to 5.0 in integer increments
|
||||
*
|
||||
* @return The current Food Saturation
|
||||
*/
|
||||
public float getFoodSaturation() {
|
||||
return handle.getFloat().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Food Saturation.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setFoodSaturation(float value) {
|
||||
handle.getFloat().write(1, value);
|
||||
}
|
||||
/**
|
||||
* Set Food Saturation.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setFoodSaturation(float value) {
|
||||
handle.getFloat().write(1, value);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
* PacketWrapper - ProtocolLib wrappers for Minecraft packets
|
||||
* Copyright (C) dmulloy2 <http://dmulloy2.net>
|
||||
* Copyright (C) Kristian S. Strangeland
|
||||
*
|
||||
* <p>
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* <p>
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* <p>
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -22,56 +22,56 @@ import com.comphenix.protocol.PacketType;
|
|||
import com.comphenix.protocol.events.PacketContainer;
|
||||
|
||||
public class WrapperPlayServerUpdateTime extends AbstractPacket {
|
||||
public static final PacketType TYPE = PacketType.Play.Server.UPDATE_TIME;
|
||||
public static final PacketType TYPE = PacketType.Play.Server.UPDATE_TIME;
|
||||
|
||||
public WrapperPlayServerUpdateTime() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
public WrapperPlayServerUpdateTime() {
|
||||
super(new PacketContainer(TYPE), TYPE);
|
||||
handle.getModifier().writeDefaults();
|
||||
}
|
||||
|
||||
public WrapperPlayServerUpdateTime(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
public WrapperPlayServerUpdateTime(PacketContainer packet) {
|
||||
super(packet, TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Age of the world.
|
||||
* <p>
|
||||
* Notes: in ticks; not changed by server commands
|
||||
*
|
||||
* @return The current Age of the world
|
||||
*/
|
||||
public long getAgeOfTheWorld() {
|
||||
return handle.getLongs().read(0);
|
||||
}
|
||||
/**
|
||||
* Retrieve Age of the world.
|
||||
* <p>
|
||||
* Notes: in ticks; not changed by server commands
|
||||
*
|
||||
* @return The current Age of the world
|
||||
*/
|
||||
public long getAgeOfTheWorld() {
|
||||
return handle.getLongs().read(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Age of the world.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setAgeOfTheWorld(long value) {
|
||||
handle.getLongs().write(0, value);
|
||||
}
|
||||
/**
|
||||
* Set Age of the world.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setAgeOfTheWorld(long value) {
|
||||
handle.getLongs().write(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Time of day.
|
||||
* <p>
|
||||
* Notes: the world (or region) time, in ticks. If negative the sun will
|
||||
* stop moving at the Math.abs of the time
|
||||
*
|
||||
* @return The current Time of day
|
||||
*/
|
||||
public long getTimeOfDay() {
|
||||
return handle.getLongs().read(1);
|
||||
}
|
||||
/**
|
||||
* Retrieve Time of day.
|
||||
* <p>
|
||||
* Notes: the world (or region) time, in ticks. If negative the sun will
|
||||
* stop moving at the Math.abs of the time
|
||||
*
|
||||
* @return The current Time of day
|
||||
*/
|
||||
public long getTimeOfDay() {
|
||||
return handle.getLongs().read(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Time of day.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setTimeOfDay(long value) {
|
||||
handle.getLongs().write(1, value);
|
||||
}
|
||||
/**
|
||||
* Set Time of day.
|
||||
*
|
||||
* @param value - new value.
|
||||
*/
|
||||
public void setTimeOfDay(long value) {
|
||||
handle.getLongs().write(1, value);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,18 +1,26 @@
|
|||
package fr.leomelki.loupgarou;
|
||||
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.ProtocolLibrary;
|
||||
import com.comphenix.protocol.ProtocolManager;
|
||||
import com.comphenix.protocol.events.ListenerPriority;
|
||||
import com.comphenix.protocol.events.PacketAdapter;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.ItemSlot;
|
||||
import com.comphenix.protocol.wrappers.PlayerInfoData;
|
||||
import com.comphenix.protocol.wrappers.WrappedChatComponent;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.*;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGWinType;
|
||||
import fr.leomelki.loupgarou.events.LGSkinLoadEvent;
|
||||
import fr.leomelki.loupgarou.events.LGUpdatePrefixEvent;
|
||||
import fr.leomelki.loupgarou.listeners.*;
|
||||
import fr.leomelki.loupgarou.roles.*;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
|
@ -25,419 +33,378 @@ import org.json.simple.JSONObject;
|
|||
import org.json.simple.parser.JSONParser;
|
||||
import org.json.simple.parser.ParseException;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.ProtocolLibrary;
|
||||
import com.comphenix.protocol.ProtocolManager;
|
||||
import com.comphenix.protocol.events.ListenerPriority;
|
||||
import com.comphenix.protocol.events.PacketAdapter;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.ItemSlot;
|
||||
import com.comphenix.protocol.wrappers.PlayerInfoData;
|
||||
import com.comphenix.protocol.wrappers.WrappedChatComponent;
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerEntityEquipment;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerNamedSoundEffect;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerPlayerInfo;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerScoreboardTeam;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerUpdateHealth;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerUpdateTime;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGWinType;
|
||||
import fr.leomelki.loupgarou.events.LGSkinLoadEvent;
|
||||
import fr.leomelki.loupgarou.events.LGUpdatePrefixEvent;
|
||||
import fr.leomelki.loupgarou.listeners.CancelListener;
|
||||
import fr.leomelki.loupgarou.listeners.ChatListener;
|
||||
import fr.leomelki.loupgarou.listeners.JoinListener;
|
||||
import fr.leomelki.loupgarou.listeners.LoupGarouListener;
|
||||
import fr.leomelki.loupgarou.listeners.VoteListener;
|
||||
import fr.leomelki.loupgarou.roles.RAnge;
|
||||
import fr.leomelki.loupgarou.roles.RAssassin;
|
||||
import fr.leomelki.loupgarou.roles.RBouffon;
|
||||
import fr.leomelki.loupgarou.roles.RChaperonRouge;
|
||||
import fr.leomelki.loupgarou.roles.RChasseur;
|
||||
import fr.leomelki.loupgarou.roles.RChasseurDeVampire;
|
||||
import fr.leomelki.loupgarou.roles.RChienLoup;
|
||||
import fr.leomelki.loupgarou.roles.RCorbeau;
|
||||
import fr.leomelki.loupgarou.roles.RCupidon;
|
||||
import fr.leomelki.loupgarou.roles.RDetective;
|
||||
import fr.leomelki.loupgarou.roles.RDictateur;
|
||||
import fr.leomelki.loupgarou.roles.REnfantSauvage;
|
||||
import fr.leomelki.loupgarou.roles.RFaucheur;
|
||||
import fr.leomelki.loupgarou.roles.RGarde;
|
||||
import fr.leomelki.loupgarou.roles.RGrandMechantLoup;
|
||||
import fr.leomelki.loupgarou.roles.RLoupGarou;
|
||||
import fr.leomelki.loupgarou.roles.RLoupGarouBlanc;
|
||||
import fr.leomelki.loupgarou.roles.RLoupGarouNoir;
|
||||
import fr.leomelki.loupgarou.roles.RMedium;
|
||||
import fr.leomelki.loupgarou.roles.RMontreurDOurs;
|
||||
import fr.leomelki.loupgarou.roles.RPetiteFille;
|
||||
import fr.leomelki.loupgarou.roles.RPirate;
|
||||
import fr.leomelki.loupgarou.roles.RPretre;
|
||||
import fr.leomelki.loupgarou.roles.RPyromane;
|
||||
import fr.leomelki.loupgarou.roles.RSorciere;
|
||||
import fr.leomelki.loupgarou.roles.RSurvivant;
|
||||
import fr.leomelki.loupgarou.roles.RVampire;
|
||||
import fr.leomelki.loupgarou.roles.RVillageois;
|
||||
import fr.leomelki.loupgarou.roles.RVoyante;
|
||||
import fr.leomelki.loupgarou.roles.Role;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
public class MainLg extends JavaPlugin {
|
||||
@Getter
|
||||
private static final String prefix = ""/*"§7[§9Loup-Garou§7] "*/;
|
||||
private static MainLg instance;
|
||||
@Getter
|
||||
private final HashMap<String, Constructor<? extends Role>> roles = new HashMap<>();
|
||||
@Getter
|
||||
@Setter
|
||||
private LGGame currentGame;//Because for now, only one game will be playable on one server (flemme)
|
||||
|
||||
public class MainLg extends JavaPlugin{
|
||||
private static MainLg instance;
|
||||
@Getter private final HashMap<String, Constructor<? extends Role>> roles = new HashMap<>();
|
||||
@Getter private static final String prefix = ""/*"§7[§9Loup-Garou§7] "*/;
|
||||
public static MainLg getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Getter @Setter private LGGame currentGame;//Because for now, only one game will be playable on one server (flemme)
|
||||
@Override
|
||||
public void onEnable() {
|
||||
instance = this;
|
||||
loadRoles();
|
||||
if (!new File(getDataFolder(), "config.yml").exists()) {//Créer la config
|
||||
FileConfiguration config = getConfig();
|
||||
config.set("spawns", new ArrayList<List<Double>>());
|
||||
for (String role : roles.keySet())//Nombre de participant pour chaque rôle
|
||||
config.set("role." + role, 1);
|
||||
saveConfig();
|
||||
}
|
||||
loadConfig();
|
||||
Bukkit.getPluginManager().registerEvents(new JoinListener(this), this);
|
||||
Bukkit.getPluginManager().registerEvents(new CancelListener(this), this);
|
||||
Bukkit.getPluginManager().registerEvents(new VoteListener(this), this);
|
||||
Bukkit.getPluginManager().registerEvents(new ChatListener(this), this);
|
||||
Bukkit.getPluginManager().registerEvents(new LoupGarouListener(), this);
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
instance = this;
|
||||
loadRoles();
|
||||
if(!new File(getDataFolder(), "config.yml").exists()) {//Créer la config
|
||||
FileConfiguration config = getConfig();
|
||||
config.set("spawns", new ArrayList<List<Double>>());
|
||||
for(String role : roles.keySet())//Nombre de participant pour chaque rôle
|
||||
config.set("role."+role, 1);
|
||||
saveConfig();
|
||||
}
|
||||
loadConfig();
|
||||
Bukkit.getPluginManager().registerEvents(new JoinListener(this), this);
|
||||
Bukkit.getPluginManager().registerEvents(new CancelListener(this), this);
|
||||
Bukkit.getPluginManager().registerEvents(new VoteListener(this), this);
|
||||
Bukkit.getPluginManager().registerEvents(new ChatListener(this), this);
|
||||
Bukkit.getPluginManager().registerEvents(new LoupGarouListener(), this);
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
Bukkit.getPluginManager().callEvent(new PlayerJoinEvent(player, "is connected"));
|
||||
|
||||
for(Player player : Bukkit.getOnlinePlayers())
|
||||
Bukkit.getPluginManager().callEvent(new PlayerJoinEvent(player, "is connected"));
|
||||
ProtocolManager protocolManager = ProtocolLibrary.getProtocolManager();
|
||||
protocolManager.addPacketListener(new PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Server.UPDATE_TIME) {
|
||||
@Override
|
||||
public void onPacketSending(PacketEvent event) {
|
||||
WrapperPlayServerUpdateTime time = new WrapperPlayServerUpdateTime(event.getPacket());
|
||||
LGPlayer lgp = LGPlayer.thePlayer(instance, event.getPlayer());
|
||||
if (lgp.getGame() != null && lgp.getGame().getTime() != time.getTimeOfDay())
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
);
|
||||
//Éviter que les gens s'entendent quand ils se sélectionnent et qu'ils sont trop proche
|
||||
protocolManager.addPacketListener(new PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Server.NAMED_SOUND_EFFECT) {
|
||||
@Override
|
||||
public void onPacketSending(PacketEvent event) {
|
||||
WrapperPlayServerNamedSoundEffect sound = new WrapperPlayServerNamedSoundEffect(event.getPacket());
|
||||
if (sound.getSoundEffect() == Sound.ENTITY_PLAYER_ATTACK_NODAMAGE)
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
);
|
||||
protocolManager.addPacketListener(new PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Server.PLAYER_INFO) {
|
||||
@Override
|
||||
public void onPacketSending(PacketEvent event) {
|
||||
LGPlayer player = LGPlayer.thePlayer(instance, event.getPlayer());
|
||||
WrapperPlayServerPlayerInfo info = new WrapperPlayServerPlayerInfo(event.getPacket());
|
||||
ArrayList<PlayerInfoData> datas = new ArrayList<>();
|
||||
for (PlayerInfoData data : info.getData()) {
|
||||
LGPlayer lgp = LGPlayer.thePlayer(instance, Bukkit.getPlayer(data.getProfile().getUUID()));
|
||||
if (player.getGame() != null && player.getGame() == lgp.getGame()) {
|
||||
LGUpdatePrefixEvent evt2 = new LGUpdatePrefixEvent(player.getGame(), lgp, player, "");
|
||||
WrappedChatComponent displayName = data.getDisplayName();
|
||||
Bukkit.getPluginManager().callEvent(evt2);
|
||||
if (evt2.getPrefix().length() > 0) {
|
||||
try {
|
||||
if (displayName != null) {
|
||||
JSONObject obj = (JSONObject) new JSONParser().parse(displayName.getJson());
|
||||
displayName = WrappedChatComponent.fromText(evt2.getPrefix() + obj.get("text"));
|
||||
} else
|
||||
displayName = WrappedChatComponent.fromText(evt2.getPrefix() + data.getProfile().getName());
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
LGSkinLoadEvent evt = new LGSkinLoadEvent(lgp.getGame(), lgp, player, data.getProfile());
|
||||
Bukkit.getPluginManager().callEvent(evt);
|
||||
datas.add(new PlayerInfoData(evt.getProfile(), data.getLatency(), data.getGameMode(), displayName));
|
||||
} else
|
||||
datas.add(data);
|
||||
}
|
||||
info.setData(datas);
|
||||
}
|
||||
});
|
||||
protocolManager.addPacketListener(new PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Server.UPDATE_HEALTH) {
|
||||
@Override
|
||||
public void onPacketSending(PacketEvent event) {
|
||||
LGPlayer player = LGPlayer.thePlayer(instance, event.getPlayer());
|
||||
if (player.getGame() != null && player.getGame().isStarted()) {
|
||||
WrapperPlayServerUpdateHealth health = new WrapperPlayServerUpdateHealth(event.getPacket());
|
||||
health.setFood(6);
|
||||
}
|
||||
}
|
||||
});
|
||||
protocolManager.addPacketListener(new PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Server.SCOREBOARD_TEAM) {
|
||||
@Override
|
||||
public void onPacketSending(PacketEvent event) {
|
||||
LGPlayer player = LGPlayer.thePlayer(instance, event.getPlayer());
|
||||
WrapperPlayServerScoreboardTeam team = new WrapperPlayServerScoreboardTeam(event.getPacket());
|
||||
team.setColor(ChatColor.WHITE);
|
||||
Player other = Bukkit.getPlayer(team.getName());
|
||||
if (other == null) return;
|
||||
LGPlayer lgp = LGPlayer.thePlayer(instance, other);
|
||||
if (player.getGame() != null && player.getGame() == lgp.getGame()) {
|
||||
LGUpdatePrefixEvent evt2 = new LGUpdatePrefixEvent(player.getGame(), lgp, player, "");
|
||||
Bukkit.getPluginManager().callEvent(evt2);
|
||||
if (evt2.getPrefix().length() > 0)
|
||||
team.setPrefix(WrappedChatComponent.fromText(evt2.getPrefix()));
|
||||
else
|
||||
team.setPrefix(WrappedChatComponent.fromText("§f"));
|
||||
}
|
||||
}
|
||||
});
|
||||
protocolManager.addPacketListener(new PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Server.ENTITY_EQUIPMENT) {
|
||||
@Override
|
||||
public void onPacketSending(PacketEvent event) {
|
||||
LGPlayer player = LGPlayer.thePlayer(instance, event.getPlayer());
|
||||
if (player.getGame() != null) {
|
||||
WrapperPlayServerEntityEquipment equip = new WrapperPlayServerEntityEquipment(event.getPacket());
|
||||
if (equip.getSlot() == ItemSlot.OFFHAND && equip.getEntityID() != player.getPlayer().getEntityId())
|
||||
equip.setItem(new ItemStack(Material.AIR));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
ProtocolManager protocolManager = ProtocolLibrary.getProtocolManager();
|
||||
protocolManager.addPacketListener(new PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Server.UPDATE_TIME) {
|
||||
@Override
|
||||
public void onPacketSending(PacketEvent event) {
|
||||
WrapperPlayServerUpdateTime time = new WrapperPlayServerUpdateTime(event.getPacket());
|
||||
LGPlayer lgp = LGPlayer.thePlayer(instance, event.getPlayer());
|
||||
if(lgp.getGame() != null && lgp.getGame().getTime() != time.getTimeOfDay())
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
);
|
||||
//Éviter que les gens s'entendent quand ils se sélectionnent et qu'ils sont trop proche
|
||||
protocolManager.addPacketListener(new PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Server.NAMED_SOUND_EFFECT) {
|
||||
@Override
|
||||
public void onPacketSending(PacketEvent event) {
|
||||
WrapperPlayServerNamedSoundEffect sound = new WrapperPlayServerNamedSoundEffect(event.getPacket());
|
||||
if(sound.getSoundEffect() == Sound.ENTITY_PLAYER_ATTACK_NODAMAGE)
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
);
|
||||
protocolManager.addPacketListener(new PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Server.PLAYER_INFO) {
|
||||
@Override
|
||||
public void onPacketSending(PacketEvent event) {
|
||||
LGPlayer player = LGPlayer.thePlayer(instance, event.getPlayer());
|
||||
WrapperPlayServerPlayerInfo info = new WrapperPlayServerPlayerInfo(event.getPacket());
|
||||
ArrayList<PlayerInfoData> datas = new ArrayList<>();
|
||||
for(PlayerInfoData data : info.getData()) {
|
||||
LGPlayer lgp = LGPlayer.thePlayer(instance, Bukkit.getPlayer(data.getProfile().getUUID()));
|
||||
if(player.getGame() != null && player.getGame() == lgp.getGame()) {
|
||||
LGUpdatePrefixEvent evt2 = new LGUpdatePrefixEvent(player.getGame(), lgp, player, "");
|
||||
WrappedChatComponent displayName = data.getDisplayName();
|
||||
Bukkit.getPluginManager().callEvent(evt2);
|
||||
if(evt2.getPrefix().length() > 0) {
|
||||
try {
|
||||
if(displayName != null) {
|
||||
JSONObject obj = (JSONObject) new JSONParser().parse(displayName.getJson());
|
||||
displayName = WrappedChatComponent.fromText(evt2.getPrefix()+obj.get("text"));
|
||||
} else
|
||||
displayName = WrappedChatComponent.fromText(evt2.getPrefix()+data.getProfile().getName());
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
LGSkinLoadEvent evt = new LGSkinLoadEvent(lgp.getGame(), lgp, player, data.getProfile());
|
||||
Bukkit.getPluginManager().callEvent(evt);
|
||||
datas.add(new PlayerInfoData(evt.getProfile(), data.getLatency(), data.getGameMode(), displayName));
|
||||
}else
|
||||
datas.add(data);
|
||||
}
|
||||
info.setData(datas);
|
||||
}
|
||||
});
|
||||
protocolManager.addPacketListener(new PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Server.UPDATE_HEALTH) {
|
||||
@Override
|
||||
public void onPacketSending(PacketEvent event) {
|
||||
LGPlayer player = LGPlayer.thePlayer(instance, event.getPlayer());
|
||||
if(player.getGame() != null && player.getGame().isStarted()) {
|
||||
WrapperPlayServerUpdateHealth health = new WrapperPlayServerUpdateHealth(event.getPacket());
|
||||
health.setFood(6);
|
||||
}
|
||||
}
|
||||
});
|
||||
protocolManager.addPacketListener(new PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Server.SCOREBOARD_TEAM) {
|
||||
@Override
|
||||
public void onPacketSending(PacketEvent event) {
|
||||
LGPlayer player = LGPlayer.thePlayer(instance, event.getPlayer());
|
||||
WrapperPlayServerScoreboardTeam team = new WrapperPlayServerScoreboardTeam(event.getPacket());
|
||||
team.setColor(ChatColor.WHITE);
|
||||
Player other = Bukkit.getPlayer(team.getName());
|
||||
if(other == null)return;
|
||||
LGPlayer lgp = LGPlayer.thePlayer(instance, other);
|
||||
if(player.getGame() != null && player.getGame() == lgp.getGame()) {
|
||||
LGUpdatePrefixEvent evt2 = new LGUpdatePrefixEvent(player.getGame(), lgp, player, "");
|
||||
Bukkit.getPluginManager().callEvent(evt2);
|
||||
if(evt2.getPrefix().length() > 0)
|
||||
team.setPrefix(WrappedChatComponent.fromText(evt2.getPrefix()));
|
||||
else
|
||||
team.setPrefix(WrappedChatComponent.fromText("§f"));
|
||||
}
|
||||
}
|
||||
});
|
||||
protocolManager.addPacketListener(new PacketAdapter(this, ListenerPriority.NORMAL, PacketType.Play.Server.ENTITY_EQUIPMENT) {
|
||||
@Override
|
||||
public void onPacketSending(PacketEvent event) {
|
||||
LGPlayer player = LGPlayer.thePlayer(instance, event.getPlayer());
|
||||
if(player.getGame() != null) {
|
||||
WrapperPlayServerEntityEquipment equip = new WrapperPlayServerEntityEquipment(event.getPacket());
|
||||
if(equip.getSlot() == ItemSlot.OFFHAND && equip.getEntityID() != player.getPlayer().getEntityId())
|
||||
equip.setItem(new ItemStack(Material.AIR));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if (label.equalsIgnoreCase("ww")) {
|
||||
if (!sender.hasPermission("loupgarou.admin")) {
|
||||
sender.sendMessage(prefix + "§4Erreur: Vous n'avez pas la permission...");
|
||||
return true;
|
||||
}
|
||||
if (args.length >= 1) {
|
||||
if (args[0].equalsIgnoreCase("addspawn")) {
|
||||
Player player = (Player) sender;
|
||||
Location loc = player.getLocation();
|
||||
List<Object> list = (List<Object>) getConfig().getList("spawns");
|
||||
list.add(Arrays.asList((double) loc.getBlockX(), loc.getY(), (double) loc.getBlockZ(), (double) loc.getYaw(), (double) loc.getPitch()));
|
||||
saveConfig();
|
||||
loadConfig();
|
||||
sender.sendMessage(prefix + "§aLa position a bien été ajoutée !");
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("end")) {
|
||||
if (args.length != 2) {
|
||||
sender.sendMessage("§4Utilisation : §c/lg end <pseudo>");
|
||||
return true;
|
||||
}
|
||||
Player selected = Bukkit.getPlayer(args[1]);
|
||||
if (selected == null) {
|
||||
sender.sendMessage("§4Erreur : §cLe joueur §4" + args[1] + "§c n'est pas connecté.");
|
||||
return true;
|
||||
}
|
||||
LGGame game = LGPlayer.thePlayer(instance, selected).getGame();
|
||||
if (game == null) {
|
||||
sender.sendMessage("§4Erreur : §cLe joueur §4" + selected.getName() + "§c n'est pas dans une partie.");
|
||||
return true;
|
||||
}
|
||||
game.cancelWait();
|
||||
game.endGame(LGWinType.EQUAL);
|
||||
game.broadcastMessage("§cLa partie a été arrêtée de force !");
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("start")) {
|
||||
if (args.length < 2) {
|
||||
sender.sendMessage("§4Utilisation : §c/lg start <pseudo>");
|
||||
return true;
|
||||
}
|
||||
Player player = Bukkit.getPlayer(args[1]);
|
||||
if (player == null) {
|
||||
sender.sendMessage("§4Erreur : §cLe joueur §4" + args[1] + "§c n'existe pas !");
|
||||
return true;
|
||||
}
|
||||
LGPlayer lgp = LGPlayer.thePlayer(instance, player);
|
||||
if (lgp.getGame() == null) {
|
||||
sender.sendMessage("§4Erreur : §cLe joueur §4" + lgp.getName() + "§c n'est pas dans une partie.");
|
||||
return true;
|
||||
}
|
||||
if (MainLg.getInstance().getConfig().getList("spawns").size() < lgp.getGame().getMaxPlayers()) {
|
||||
sender.sendMessage("§4Erreur : §cIl n'y a pas assez de points de spawn !");
|
||||
sender.sendMessage("§8§oPour les définir, merci de faire §7/lg addSpawn");
|
||||
return true;
|
||||
}
|
||||
sender.sendMessage("§aVous avez bien démarré une nouvelle partie !");
|
||||
lgp.getGame().updateStart();
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("reloadconfig")) {
|
||||
sender.sendMessage("§aVous avez bien reload la config !");
|
||||
sender.sendMessage("§7§oSi vous avez changé les rôles, écriver §8§o/lg joinall§7§o !");
|
||||
loadConfig();
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("joinall")) {
|
||||
for (Player p : Bukkit.getOnlinePlayers())
|
||||
Bukkit.getPluginManager().callEvent(new PlayerQuitEvent(p, "joinall"));
|
||||
for (Player p : Bukkit.getOnlinePlayers())
|
||||
Bukkit.getPluginManager().callEvent(new PlayerJoinEvent(p, "joinall"));
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("reloadPacks")) {
|
||||
for (Player p : Bukkit.getOnlinePlayers())
|
||||
Bukkit.getPluginManager().callEvent(new PlayerQuitEvent(p, "reloadPacks"));
|
||||
for (Player p : Bukkit.getOnlinePlayers())
|
||||
Bukkit.getPluginManager().callEvent(new PlayerJoinEvent(p, "reloadPacks"));
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("nextNight")) {
|
||||
sender.sendMessage("§aVous êtes passé à la prochaine nuit");
|
||||
if (getCurrentGame() != null) {
|
||||
getCurrentGame().broadcastMessage("§2§lLe passage à la prochaine nuit a été forcé !");
|
||||
for (LGPlayer lgp : getCurrentGame().getInGame())
|
||||
lgp.stopChoosing();
|
||||
getCurrentGame().cancelWait();
|
||||
getCurrentGame().nextNight();
|
||||
}
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("nextDay")) {
|
||||
sender.sendMessage("§aVous êtes passé à la prochaine journée");
|
||||
if (getCurrentGame() != null) {
|
||||
getCurrentGame().broadcastMessage("§2§lLe passage à la prochaine journée a été forcé !");
|
||||
getCurrentGame().cancelWait();
|
||||
for (LGPlayer lgp : getCurrentGame().getInGame())
|
||||
lgp.stopChoosing();
|
||||
getCurrentGame().endNight();
|
||||
}
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("roles")) {
|
||||
if (args.length == 1 || args[1].equalsIgnoreCase("list")) {
|
||||
sender.sendMessage(prefix + "§6Voici la liste des rôles:");
|
||||
int index = 0;
|
||||
for (String role : getRoles().keySet())
|
||||
sender.sendMessage(prefix + " §e- " + index++ + " - §6" + role + " §e> " + MainLg.getInstance().getConfig().getInt("role." + role));
|
||||
sender.sendMessage("\n" + prefix + " §7Écrivez §8§o/lg roles set <role_id/role_name> <nombre>§7 pour définir le nombre de joueurs qui devrons avoir ce rôle.");
|
||||
} else {
|
||||
if (args[1].equalsIgnoreCase("set") && args.length == 4) {
|
||||
String role = null;
|
||||
if (args[2].length() <= 2)
|
||||
try {
|
||||
int i = Integer.parseInt(args[2]);
|
||||
Object[] array = getRoles().keySet().toArray();
|
||||
if (array.length <= i) {
|
||||
sender.sendMessage(prefix + "§4Erreur: §cCe rôle n'existe pas.");
|
||||
return true;
|
||||
} else
|
||||
role = (String) array[i];
|
||||
} catch (Exception err) {
|
||||
sender.sendMessage(prefix + "§4Erreur: §cCeci n'est pas un nombre");
|
||||
}
|
||||
else
|
||||
role = args[2];
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||
if(label.equalsIgnoreCase("ww")) {
|
||||
if(!sender.hasPermission("loupgarou.admin")) {
|
||||
sender.sendMessage(prefix+"§4Erreur: Vous n'avez pas la permission...");
|
||||
return true;
|
||||
}
|
||||
if(args.length >= 1) {
|
||||
if(args[0].equalsIgnoreCase("addspawn")) {
|
||||
Player player = (Player)sender;
|
||||
Location loc = player.getLocation();
|
||||
List<Object> list = (List<Object>) getConfig().getList("spawns");
|
||||
list.add(Arrays.asList((double)loc.getBlockX(), loc.getY(), (double)loc.getBlockZ(), (double)loc.getYaw(), (double)loc.getPitch()));
|
||||
saveConfig();
|
||||
loadConfig();
|
||||
sender.sendMessage(prefix+"§aLa position a bien été ajoutée !");
|
||||
return true;
|
||||
}else if(args[0].equalsIgnoreCase("end")) {
|
||||
if(args.length != 2) {
|
||||
sender.sendMessage("§4Utilisation : §c/lg end <pseudo>");
|
||||
return true;
|
||||
}
|
||||
Player selected = Bukkit.getPlayer(args[1]);
|
||||
if(selected == null) {
|
||||
sender.sendMessage("§4Erreur : §cLe joueur §4"+args[1]+"§c n'est pas connecté.");
|
||||
return true;
|
||||
}
|
||||
LGGame game = LGPlayer.thePlayer(instance, selected).getGame();
|
||||
if(game == null) {
|
||||
sender.sendMessage("§4Erreur : §cLe joueur §4"+selected.getName()+"§c n'est pas dans une partie.");
|
||||
return true;
|
||||
}
|
||||
game.cancelWait();
|
||||
game.endGame(LGWinType.EQUAL);
|
||||
game.broadcastMessage("§cLa partie a été arrêtée de force !");
|
||||
return true;
|
||||
}else if(args[0].equalsIgnoreCase("start")) {
|
||||
if(args.length < 2) {
|
||||
sender.sendMessage("§4Utilisation : §c/lg start <pseudo>");
|
||||
return true;
|
||||
}
|
||||
Player player = Bukkit.getPlayer(args[1]);
|
||||
if(player == null) {
|
||||
sender.sendMessage("§4Erreur : §cLe joueur §4"+args[1]+"§c n'existe pas !");
|
||||
return true;
|
||||
}
|
||||
LGPlayer lgp = LGPlayer.thePlayer(instance, player);
|
||||
if(lgp.getGame() == null) {
|
||||
sender.sendMessage("§4Erreur : §cLe joueur §4"+lgp.getName()+"§c n'est pas dans une partie.");
|
||||
return true;
|
||||
}
|
||||
if(MainLg.getInstance().getConfig().getList("spawns").size() < lgp.getGame().getMaxPlayers()) {
|
||||
sender.sendMessage("§4Erreur : §cIl n'y a pas assez de points de spawn !");
|
||||
sender.sendMessage("§8§oPour les définir, merci de faire §7/lg addSpawn");
|
||||
return true;
|
||||
}
|
||||
sender.sendMessage("§aVous avez bien démarré une nouvelle partie !");
|
||||
lgp.getGame().updateStart();
|
||||
return true;
|
||||
}else if(args[0].equalsIgnoreCase("reloadconfig")) {
|
||||
sender.sendMessage("§aVous avez bien reload la config !");
|
||||
sender.sendMessage("§7§oSi vous avez changé les rôles, écriver §8§o/lg joinall§7§o !");
|
||||
loadConfig();
|
||||
return true;
|
||||
}else if(args[0].equalsIgnoreCase("joinall")) {
|
||||
for(Player p : Bukkit.getOnlinePlayers())
|
||||
Bukkit.getPluginManager().callEvent(new PlayerQuitEvent(p, "joinall"));
|
||||
for(Player p : Bukkit.getOnlinePlayers())
|
||||
Bukkit.getPluginManager().callEvent(new PlayerJoinEvent(p, "joinall"));
|
||||
return true;
|
||||
}else if(args[0].equalsIgnoreCase("reloadPacks")) {
|
||||
for(Player p : Bukkit.getOnlinePlayers())
|
||||
Bukkit.getPluginManager().callEvent(new PlayerQuitEvent(p, "reloadPacks"));
|
||||
for(Player p : Bukkit.getOnlinePlayers())
|
||||
Bukkit.getPluginManager().callEvent(new PlayerJoinEvent(p, "reloadPacks"));
|
||||
return true;
|
||||
}else if(args[0].equalsIgnoreCase("nextNight")) {
|
||||
sender.sendMessage("§aVous êtes passé à la prochaine nuit");
|
||||
if(getCurrentGame() != null) {
|
||||
getCurrentGame().broadcastMessage("§2§lLe passage à la prochaine nuit a été forcé !");
|
||||
for(LGPlayer lgp : getCurrentGame().getInGame())
|
||||
lgp.stopChoosing();
|
||||
getCurrentGame().cancelWait();
|
||||
getCurrentGame().nextNight();
|
||||
}
|
||||
return true;
|
||||
}else if(args[0].equalsIgnoreCase("nextDay")) {
|
||||
sender.sendMessage("§aVous êtes passé à la prochaine journée");
|
||||
if(getCurrentGame() != null) {
|
||||
getCurrentGame().broadcastMessage("§2§lLe passage à la prochaine journée a été forcé !");
|
||||
getCurrentGame().cancelWait();
|
||||
for(LGPlayer lgp : getCurrentGame().getInGame())
|
||||
lgp.stopChoosing();
|
||||
getCurrentGame().endNight();
|
||||
}
|
||||
return true;
|
||||
}else if(args[0].equalsIgnoreCase("roles")) {
|
||||
if(args.length == 1 || args[1].equalsIgnoreCase("list")) {
|
||||
sender.sendMessage(prefix+"§6Voici la liste des rôles:");
|
||||
int index = 0;
|
||||
for(String role : getRoles().keySet())
|
||||
sender.sendMessage(prefix+" §e- "+index+++" - §6"+role+" §e> "+MainLg.getInstance().getConfig().getInt("role."+role));
|
||||
sender.sendMessage("\n"+prefix+" §7Écrivez §8§o/lg roles set <role_id/role_name> <nombre>§7 pour définir le nombre de joueurs qui devrons avoir ce rôle.");
|
||||
} else {
|
||||
if(args[1].equalsIgnoreCase("set") && args.length == 4) {
|
||||
String role = null;
|
||||
if(args[2].length() <= 2)
|
||||
try {
|
||||
int i = Integer.parseInt(args[2]);
|
||||
Object[] array = getRoles().keySet().toArray();
|
||||
if(array.length <= i) {
|
||||
sender.sendMessage(prefix+"§4Erreur: §cCe rôle n'existe pas.");
|
||||
return true;
|
||||
}else
|
||||
role = (String)array[i];
|
||||
}catch(Exception err) {sender.sendMessage(prefix+"§4Erreur: §cCeci n'est pas un nombre");}
|
||||
else
|
||||
role = args[2];
|
||||
if (role != null) {
|
||||
String real_role = null;
|
||||
for (String real : getRoles().keySet())
|
||||
if (real.equalsIgnoreCase(role)) {
|
||||
real_role = real;
|
||||
break;
|
||||
}
|
||||
|
||||
if(role != null) {
|
||||
String real_role = null;
|
||||
for(String real : getRoles().keySet())
|
||||
if(real.equalsIgnoreCase(role)) {
|
||||
real_role = real;
|
||||
break;
|
||||
}
|
||||
if (real_role != null) {
|
||||
try {
|
||||
MainLg.getInstance().getConfig().set("role." + real_role, Integer.valueOf(args[3]));
|
||||
sender.sendMessage(prefix + "§6Il y aura §e" + args[3] + " §6" + real_role);
|
||||
saveConfig();
|
||||
loadConfig();
|
||||
sender.sendMessage("§7§oSi vous avez fini de changer les rôles, écriver §8§o/lg joinall§7§o !");
|
||||
} catch (Exception err) {
|
||||
sender.sendMessage(prefix + "§4Erreur: §c" + args[3] + " n'est pas un nombre");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
sender.sendMessage(prefix + "§4Erreur: §cLe rôle que vous avez entré est incorrect");
|
||||
|
||||
if(real_role != null) {
|
||||
try {
|
||||
MainLg.getInstance().getConfig().set("role."+real_role, Integer.valueOf(args[3]));
|
||||
sender.sendMessage(prefix+"§6Il y aura §e"+args[3]+" §6"+real_role);
|
||||
saveConfig();
|
||||
loadConfig();
|
||||
sender.sendMessage("§7§oSi vous avez fini de changer les rôles, écriver §8§o/lg joinall§7§o !");
|
||||
}catch(Exception err) {
|
||||
sender.sendMessage(prefix+"§4Erreur: §c"+args[3]+" n'est pas un nombre");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
sender.sendMessage(prefix+"§4Erreur: §cLe rôle que vous avez entré est incorrect");
|
||||
} else {
|
||||
sender.sendMessage(prefix + "§4Erreur: §cCommande incorrecte.");
|
||||
sender.sendMessage(prefix + "§4Essayez §c/lg roles set <role_id/role_name> <nombre>§4 ou §c/lg roles list");
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
sender.sendMessage(prefix + "§4Erreur: §cCommande incorrecte.");
|
||||
sender.sendMessage(prefix + "§4Essayez /lg §caddSpawn/end/start/nextNight/nextDay/reloadConfig/roles/reloadPacks/joinAll");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
} else {
|
||||
sender.sendMessage(prefix+"§4Erreur: §cCommande incorrecte.");
|
||||
sender.sendMessage(prefix+"§4Essayez §c/lg roles set <role_id/role_name> <nombre>§4 ou §c/lg roles list");
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
sender.sendMessage(prefix+"§4Erreur: §cCommande incorrecte.");
|
||||
sender.sendMessage(prefix+"§4Essayez /lg §caddSpawn/end/start/nextNight/nextDay/reloadConfig/roles/reloadPacks/joinAll");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||
if(!sender.hasPermission("loupgarou.admin"))
|
||||
return new ArrayList<>(0);
|
||||
@Override
|
||||
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||
if (!sender.hasPermission("loupgarou.admin"))
|
||||
return new ArrayList<>(0);
|
||||
|
||||
if(args.length > 1) {
|
||||
if(args[0].equalsIgnoreCase("roles"))
|
||||
if(args.length == 2)
|
||||
return getStartingList(args[1], "list", "set");
|
||||
else if(args.length == 3 && args[1].equalsIgnoreCase("set"))
|
||||
return getStartingList(args[2], getRoles().keySet().toArray(new String[getRoles().size()]));
|
||||
else if(args.length == 4)
|
||||
return Arrays.asList("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
|
||||
}else if(args.length == 1)
|
||||
return getStartingList(args[0], "addSpawn", "end", "start", "nextNight", "nextDay", "reloadConfig", "roles", "joinAll", "reloadPacks");
|
||||
return new ArrayList<>(0);
|
||||
}
|
||||
private List<String> getStartingList(String startsWith, String... list){
|
||||
startsWith = startsWith.toLowerCase();
|
||||
ArrayList<String> returnlist = new ArrayList<>();
|
||||
if(startsWith.length() == 0)
|
||||
return Arrays.asList(list);
|
||||
for(String s : list)
|
||||
if(s.toLowerCase().startsWith(startsWith))
|
||||
returnlist.add(s);
|
||||
return returnlist;
|
||||
}
|
||||
public void loadConfig() {
|
||||
int players = 0;
|
||||
for(String role : roles.keySet())
|
||||
players += getConfig().getInt("role."+role);
|
||||
currentGame = new LGGame(this, players);
|
||||
}
|
||||
@Override
|
||||
public void onDisable() {
|
||||
ProtocolLibrary.getProtocolManager().removePacketListeners(this);
|
||||
}
|
||||
public static MainLg getInstance() {
|
||||
return instance;
|
||||
}
|
||||
private void loadRoles() {
|
||||
try {
|
||||
roles.put("LoupGarou", RLoupGarou.class.getConstructor(LGGame.class));
|
||||
roles.put("LoupGarouNoir", RLoupGarouNoir.class.getConstructor(LGGame.class));
|
||||
roles.put("Garde", RGarde.class.getConstructor(LGGame.class));
|
||||
roles.put("Sorciere", RSorciere.class.getConstructor(LGGame.class));
|
||||
roles.put("Voyante", RVoyante.class.getConstructor(LGGame.class));
|
||||
roles.put("Chasseur", RChasseur.class.getConstructor(LGGame.class));
|
||||
roles.put("Villageois", RVillageois.class.getConstructor(LGGame.class));
|
||||
roles.put("Medium", RMedium.class.getConstructor(LGGame.class));
|
||||
roles.put("Dictateur", RDictateur.class.getConstructor(LGGame.class));
|
||||
roles.put("Cupidon", RCupidon.class.getConstructor(LGGame.class));
|
||||
roles.put("PetiteFille", RPetiteFille.class.getConstructor(LGGame.class));
|
||||
roles.put("ChaperonRouge", RChaperonRouge.class.getConstructor(LGGame.class));
|
||||
roles.put("LoupGarouBlanc", RLoupGarouBlanc.class.getConstructor(LGGame.class));
|
||||
roles.put("Bouffon", RBouffon.class.getConstructor(LGGame.class));
|
||||
roles.put("Ange", RAnge.class.getConstructor(LGGame.class));
|
||||
roles.put("Survivant", RSurvivant.class.getConstructor(LGGame.class));
|
||||
roles.put("Assassin", RAssassin.class.getConstructor(LGGame.class));
|
||||
roles.put("GrandMechantLoup", RGrandMechantLoup.class.getConstructor(LGGame.class));
|
||||
roles.put("Corbeau", RCorbeau.class.getConstructor(LGGame.class));
|
||||
roles.put("Detective", RDetective.class.getConstructor(LGGame.class));
|
||||
roles.put("ChienLoup", RChienLoup.class.getConstructor(LGGame.class));
|
||||
roles.put("Pirate", RPirate.class.getConstructor(LGGame.class));
|
||||
roles.put("Pyromane", RPyromane.class.getConstructor(LGGame.class));
|
||||
roles.put("Pretre", RPretre.class.getConstructor(LGGame.class));
|
||||
roles.put("Faucheur", RFaucheur.class.getConstructor(LGGame.class));
|
||||
roles.put("EnfantSauvage", REnfantSauvage.class.getConstructor(LGGame.class));
|
||||
roles.put("MontreurDOurs", RMontreurDOurs.class.getConstructor(LGGame.class));
|
||||
roles.put("Vampire", RVampire.class.getConstructor(LGGame.class));
|
||||
roles.put("ChasseurDeVampire", RChasseurDeVampire.class.getConstructor(LGGame.class));
|
||||
} catch (NoSuchMethodException | SecurityException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (args.length > 1) {
|
||||
if (args[0].equalsIgnoreCase("roles"))
|
||||
if (args.length == 2)
|
||||
return getStartingList(args[1], "list", "set");
|
||||
else if (args.length == 3 && args[1].equalsIgnoreCase("set"))
|
||||
return getStartingList(args[2], getRoles().keySet().toArray(new String[getRoles().size()]));
|
||||
else if (args.length == 4)
|
||||
return Arrays.asList("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
|
||||
} else if (args.length == 1)
|
||||
return getStartingList(args[0], "addSpawn", "end", "start", "nextNight", "nextDay", "reloadConfig", "roles", "joinAll", "reloadPacks");
|
||||
return new ArrayList<>(0);
|
||||
}
|
||||
|
||||
private List<String> getStartingList(String startsWith, String... list) {
|
||||
startsWith = startsWith.toLowerCase();
|
||||
ArrayList<String> returnlist = new ArrayList<>();
|
||||
if (startsWith.length() == 0)
|
||||
return Arrays.asList(list);
|
||||
for (String s : list)
|
||||
if (s.toLowerCase().startsWith(startsWith))
|
||||
returnlist.add(s);
|
||||
return returnlist;
|
||||
}
|
||||
|
||||
public void loadConfig() {
|
||||
int players = 0;
|
||||
for (String role : roles.keySet())
|
||||
players += getConfig().getInt("role." + role);
|
||||
currentGame = new LGGame(this, players);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
ProtocolLibrary.getProtocolManager().removePacketListeners(this);
|
||||
}
|
||||
|
||||
private void loadRoles() {
|
||||
try {
|
||||
roles.put("LoupGarou", RLoupGarou.class.getConstructor(LGGame.class));
|
||||
roles.put("LoupGarouNoir", RLoupGarouNoir.class.getConstructor(LGGame.class));
|
||||
roles.put("Garde", RGarde.class.getConstructor(LGGame.class));
|
||||
roles.put("Sorciere", RSorciere.class.getConstructor(LGGame.class));
|
||||
roles.put("Voyante", RVoyante.class.getConstructor(LGGame.class));
|
||||
roles.put("Chasseur", RChasseur.class.getConstructor(LGGame.class));
|
||||
roles.put("Villageois", RVillageois.class.getConstructor(LGGame.class));
|
||||
roles.put("Medium", RMedium.class.getConstructor(LGGame.class));
|
||||
roles.put("Dictateur", RDictateur.class.getConstructor(LGGame.class));
|
||||
roles.put("Cupidon", RCupidon.class.getConstructor(LGGame.class));
|
||||
roles.put("PetiteFille", RPetiteFille.class.getConstructor(LGGame.class));
|
||||
roles.put("ChaperonRouge", RChaperonRouge.class.getConstructor(LGGame.class));
|
||||
roles.put("LoupGarouBlanc", RLoupGarouBlanc.class.getConstructor(LGGame.class));
|
||||
roles.put("Bouffon", RBouffon.class.getConstructor(LGGame.class));
|
||||
roles.put("Ange", RAnge.class.getConstructor(LGGame.class));
|
||||
roles.put("Survivant", RSurvivant.class.getConstructor(LGGame.class));
|
||||
roles.put("Assassin", RAssassin.class.getConstructor(LGGame.class));
|
||||
roles.put("GrandMechantLoup", RGrandMechantLoup.class.getConstructor(LGGame.class));
|
||||
roles.put("Corbeau", RCorbeau.class.getConstructor(LGGame.class));
|
||||
roles.put("Detective", RDetective.class.getConstructor(LGGame.class));
|
||||
roles.put("ChienLoup", RChienLoup.class.getConstructor(LGGame.class));
|
||||
roles.put("Pirate", RPirate.class.getConstructor(LGGame.class));
|
||||
roles.put("Pyromane", RPyromane.class.getConstructor(LGGame.class));
|
||||
roles.put("Pretre", RPretre.class.getConstructor(LGGame.class));
|
||||
roles.put("Faucheur", RFaucheur.class.getConstructor(LGGame.class));
|
||||
roles.put("EnfantSauvage", REnfantSauvage.class.getConstructor(LGGame.class));
|
||||
roles.put("MontreurDOurs", RMontreurDOurs.class.getConstructor(LGGame.class));
|
||||
roles.put("Vampire", RVampire.class.getConstructor(LGGame.class));
|
||||
roles.put("ChasseurDeVampire", RChasseurDeVampire.class.getConstructor(LGGame.class));
|
||||
} catch (NoSuchMethodException | SecurityException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,9 +6,12 @@ import lombok.RequiredArgsConstructor;
|
|||
|
||||
@RequiredArgsConstructor
|
||||
public class IndexedRole {
|
||||
@Getter private final Role role;
|
||||
@Getter private int number = 1;
|
||||
public void increase() {
|
||||
number++;
|
||||
}
|
||||
@Getter
|
||||
private final Role role;
|
||||
@Getter
|
||||
private int number = 1;
|
||||
|
||||
public void increase() {
|
||||
number++;
|
||||
}
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,14 +1,14 @@
|
|||
package fr.leomelki.loupgarou.classes;
|
||||
|
||||
import com.comphenix.protocol.wrappers.WrappedSignedProperty;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public enum LGCustomSkin {
|
||||
VILLAGER(new WrappedSignedProperty("textures", "eyJ0aW1lc3RhbXAiOjE1NzcwNTE5MDIyNDgsInByb2ZpbGVJZCI6Ijc4YWQzMjI2YmJkYTQwMGZiNTExMjAzMDY4MGNjN2I0IiwicHJvZmlsZU5hbWUiOiJTaHl0b29zIiwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzYxZmE3Y2UyYmQxMmJmMzBjOTcxZjUwZjJiMGIyYTZkZWUyOWU4MWM5MmJkZmFhZjFkMDJlNjM5YzJiZjMzNWEiLCJtZXRhZGF0YSI6eyJtb2RlbCI6InNsaW0ifX19fQ==", "Qk3Gh9IbVwqIvzv0t3vNrGhzW1ejvKls/7n1vqC7UozJYFotECsBla3DFrxrLvTVsCMAQ3cXGq9QjfFF1U/q0NYvWNXVPbrIxX6LH2t2SI9F1+WLQ7LGYwwABzMGDClJXkuUr0yEOPtCwoTgvinVkCZmNRrN0VDAwd+ie3LCnuBjo3iabjA4dxXLE59mnvCGKo5pGdqThn/KikUldvYGBjpQa+X5F+jQhj7TucZ8t0VJ2t05TkKHS+bcIcmCD+UorGG1N5uiNkQe89BMXZKQEebydtnH5RT8efqHfYT5aZY/6IJKTMqIeclcWy2f6LIfRb97AeifOPPHTfjl2Q6wjvOdnvGuNa+Xk6biNM7cLz1KQzdMM0CvkiZZ9XtFul5+PXEobx2IjIEcrStZX0fl/NZid+kf+2RXbPKx4Z+07q5PbeCzr1UD3DMWlrEMQQppIB26uhPLS9mh3IvM9bhx+vIbByr1Z5p3aT4J2mbhwwmf/LUpNUyMn6oHt19zX6cEcSbncGBLgEHOrUXgxdK/Sm4lJKA1Mr3M0o8CSt7ldLc6mA4oBPMK/OV/c0rwb1W2GWOUyw99dNT/jFSFXyyjCHW0+5FkAW+H+8Y0dZ3U4UWaAmX4JNfdxiih97eTBKEvIC8V48hiFS/UV9A9LBVPNkca/4lanh/jNZ7VRQ+/vU8=")),
|
||||
MAYOR(new WrappedSignedProperty("textures", "eyJ0aW1lc3RhbXAiOjE1NzcwNTE4NjcxMDcsInByb2ZpbGVJZCI6Ijc4YWQzMjI2YmJkYTQwMGZiNTExMjAzMDY4MGNjN2I0IiwicHJvZmlsZU5hbWUiOiJTaHl0b29zIiwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzUzYTk5NjljMjU0YWRkYmZkNjdmNDJlZmMxODNkZDg5ZWE3ZTliOGE4NDY2YWNkOWZhMWZmMTYzMTQ0MTczMDMifX19", "fq/bN78Y70k2clbfg6sLRuj4mhvDTz58fKI3/0XvzJH/bQF5Mf+jcFwpXJN+ZiupMaHFHI1bBQ20lrzlGvtrCoYu9+Bx4otin0NQVxc3pOEewikzYub64niMPq8irGJrS2pB1B2Uym5F+/wX8TXOkySyAo1r3lzh6qmfe1bpNG7gcc9+ulYdAbnyhxTko3d8poBsjLnadpo0/rBNMkNIua9ryIE3WHW+DOxLwpLpd3TAB15RnA3/qvyBlqQBny1M24ccjmzxjiUbzF66EtTC+BRs3eS8or/vxvdmi70e295gMoERZJ5pFukxe9LB0IEg9cLHwuEl7OC8FcuLUQFnm1EVPjfSlSF36Sd+iVwjFE/x1zINKYsDHwF/TM+yAWOv+PwgGxgQj1C97VaWEkrHXDMEzgxi8DAcPbDBwcyBZXRgOJTHRSH2ATvGDqeT7iQbPrP+y0YNFUDXyBrKYgscgA7bMtBgWvW75SdvcIhqQEVe/jMivMWDuvwhQF4lUGonHc0B5wi1216fqTypEcOeaa5ab+siNssFXpEsaFP9l+1o6uYjNbBpptEAsIlKbnjDaVSkCTvsW7ICaPAZcZCavpyST5MYTv6C7n/bwl3nfzzI7U1LYvYi/gMEHKWfNwLs4T+4VQ3xZD0DpkEQgDrax+Wt182K6OvrAcOcCAfWySo=\",\"name")),
|
||||
WEREWOLF(new WrappedSignedProperty("textures", "eyJ0aW1lc3RhbXAiOjE1NzcwNTE3NTU1NDgsInByb2ZpbGVJZCI6Ijc4YWQzMjI2YmJkYTQwMGZiNTExMjAzMDY4MGNjN2I0IiwicHJvZmlsZU5hbWUiOiJTaHl0b29zIiwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2U1NGE2MmRhNGMzZTI5YjdiZWM4ZTI0YzhiNTAyZGZjNWNmMTNmYjc0NjFhN2I5YWY2NGY2Yjc1ZGFhNmE2MDUifX19", "k0cT/rDkBW3QMqSavKc0Nbu39ft3i0TLLhxLht7LKKuA+Q+amCmzw/NZjZRtJc/R87uyl2B+JHLTWTOcbDQX2bE7fIzEvYFhvbb2dasxeYA03wBwZ+OuJlhhxWSSX2NoAI6gEGcWQ3k4xcf+xhtD+5eddjL5k+Dv/kVW6qCWprfPSmd4+KQ0aVwyBkbheyTBSaamtpPj24UYM1EL9POF/PrbmiipfSthp7DkwL4PprW+0Z3pzFMgY46Ay2VJYxa+Q6q3IlYqSXMkjJccf3msyOTGe3JSiQc1Du/djffvLIoyjybolNb5rQ/OrnYIEtnqCuXstJJd3J+a6F8w4DkS2ZMVY4lvidb4coVeFmm9Nk/afqqyG99TDmvZNFWFSeaaxGSWeZPkneAEFuFQXn76sl1xdtXkgXmP8H0yvs9SwA9UnGoldIay6D1HzAOGo3n3stV6188K0ucey1KsH6nNlZfT2hnqvI1lfKD67oQNFfl4kDLRwArfZJUmcQOJh9/fk6/bJvgYuElEkGy++0FkuKKkRJHPIW5+kPZguNo96cAAGxhSH3IIscLoxDdn53iSnngpKttWfG6ccI/XMGTWp4wCq6IC2IBZcmKEqK+fN5dVbR4tn79pXlQ2Yyk7kvXaZjdVHrKC1Buw1gjjC1EvmiJjTRZVHPYlCTkfy+hdqzE="));
|
||||
@Getter private final WrappedSignedProperty property;
|
||||
VILLAGER(new WrappedSignedProperty("textures", "eyJ0aW1lc3RhbXAiOjE1NzcwNTE5MDIyNDgsInByb2ZpbGVJZCI6Ijc4YWQzMjI2YmJkYTQwMGZiNTExMjAzMDY4MGNjN2I0IiwicHJvZmlsZU5hbWUiOiJTaHl0b29zIiwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzYxZmE3Y2UyYmQxMmJmMzBjOTcxZjUwZjJiMGIyYTZkZWUyOWU4MWM5MmJkZmFhZjFkMDJlNjM5YzJiZjMzNWEiLCJtZXRhZGF0YSI6eyJtb2RlbCI6InNsaW0ifX19fQ==", "Qk3Gh9IbVwqIvzv0t3vNrGhzW1ejvKls/7n1vqC7UozJYFotECsBla3DFrxrLvTVsCMAQ3cXGq9QjfFF1U/q0NYvWNXVPbrIxX6LH2t2SI9F1+WLQ7LGYwwABzMGDClJXkuUr0yEOPtCwoTgvinVkCZmNRrN0VDAwd+ie3LCnuBjo3iabjA4dxXLE59mnvCGKo5pGdqThn/KikUldvYGBjpQa+X5F+jQhj7TucZ8t0VJ2t05TkKHS+bcIcmCD+UorGG1N5uiNkQe89BMXZKQEebydtnH5RT8efqHfYT5aZY/6IJKTMqIeclcWy2f6LIfRb97AeifOPPHTfjl2Q6wjvOdnvGuNa+Xk6biNM7cLz1KQzdMM0CvkiZZ9XtFul5+PXEobx2IjIEcrStZX0fl/NZid+kf+2RXbPKx4Z+07q5PbeCzr1UD3DMWlrEMQQppIB26uhPLS9mh3IvM9bhx+vIbByr1Z5p3aT4J2mbhwwmf/LUpNUyMn6oHt19zX6cEcSbncGBLgEHOrUXgxdK/Sm4lJKA1Mr3M0o8CSt7ldLc6mA4oBPMK/OV/c0rwb1W2GWOUyw99dNT/jFSFXyyjCHW0+5FkAW+H+8Y0dZ3U4UWaAmX4JNfdxiih97eTBKEvIC8V48hiFS/UV9A9LBVPNkca/4lanh/jNZ7VRQ+/vU8=")),
|
||||
MAYOR(new WrappedSignedProperty("textures", "eyJ0aW1lc3RhbXAiOjE1NzcwNTE4NjcxMDcsInByb2ZpbGVJZCI6Ijc4YWQzMjI2YmJkYTQwMGZiNTExMjAzMDY4MGNjN2I0IiwicHJvZmlsZU5hbWUiOiJTaHl0b29zIiwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzUzYTk5NjljMjU0YWRkYmZkNjdmNDJlZmMxODNkZDg5ZWE3ZTliOGE4NDY2YWNkOWZhMWZmMTYzMTQ0MTczMDMifX19", "fq/bN78Y70k2clbfg6sLRuj4mhvDTz58fKI3/0XvzJH/bQF5Mf+jcFwpXJN+ZiupMaHFHI1bBQ20lrzlGvtrCoYu9+Bx4otin0NQVxc3pOEewikzYub64niMPq8irGJrS2pB1B2Uym5F+/wX8TXOkySyAo1r3lzh6qmfe1bpNG7gcc9+ulYdAbnyhxTko3d8poBsjLnadpo0/rBNMkNIua9ryIE3WHW+DOxLwpLpd3TAB15RnA3/qvyBlqQBny1M24ccjmzxjiUbzF66EtTC+BRs3eS8or/vxvdmi70e295gMoERZJ5pFukxe9LB0IEg9cLHwuEl7OC8FcuLUQFnm1EVPjfSlSF36Sd+iVwjFE/x1zINKYsDHwF/TM+yAWOv+PwgGxgQj1C97VaWEkrHXDMEzgxi8DAcPbDBwcyBZXRgOJTHRSH2ATvGDqeT7iQbPrP+y0YNFUDXyBrKYgscgA7bMtBgWvW75SdvcIhqQEVe/jMivMWDuvwhQF4lUGonHc0B5wi1216fqTypEcOeaa5ab+siNssFXpEsaFP9l+1o6uYjNbBpptEAsIlKbnjDaVSkCTvsW7ICaPAZcZCavpyST5MYTv6C7n/bwl3nfzzI7U1LYvYi/gMEHKWfNwLs4T+4VQ3xZD0DpkEQgDrax+Wt182K6OvrAcOcCAfWySo=\",\"name")),
|
||||
WEREWOLF(new WrappedSignedProperty("textures", "eyJ0aW1lc3RhbXAiOjE1NzcwNTE3NTU1NDgsInByb2ZpbGVJZCI6Ijc4YWQzMjI2YmJkYTQwMGZiNTExMjAzMDY4MGNjN2I0IiwicHJvZmlsZU5hbWUiOiJTaHl0b29zIiwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2U1NGE2MmRhNGMzZTI5YjdiZWM4ZTI0YzhiNTAyZGZjNWNmMTNmYjc0NjFhN2I5YWY2NGY2Yjc1ZGFhNmE2MDUifX19", "k0cT/rDkBW3QMqSavKc0Nbu39ft3i0TLLhxLht7LKKuA+Q+amCmzw/NZjZRtJc/R87uyl2B+JHLTWTOcbDQX2bE7fIzEvYFhvbb2dasxeYA03wBwZ+OuJlhhxWSSX2NoAI6gEGcWQ3k4xcf+xhtD+5eddjL5k+Dv/kVW6qCWprfPSmd4+KQ0aVwyBkbheyTBSaamtpPj24UYM1EL9POF/PrbmiipfSthp7DkwL4PprW+0Z3pzFMgY46Ay2VJYxa+Q6q3IlYqSXMkjJccf3msyOTGe3JSiQc1Du/djffvLIoyjybolNb5rQ/OrnYIEtnqCuXstJJd3J+a6F8w4DkS2ZMVY4lvidb4coVeFmm9Nk/afqqyG99TDmvZNFWFSeaaxGSWeZPkneAEFuFQXn76sl1xdtXkgXmP8H0yvs9SwA9UnGoldIay6D1HzAOGo3n3stV6188K0ucey1KsH6nNlZfT2hnqvI1lfKD67oQNFfl4kDLRwArfZJUmcQOJh9/fk6/bJvgYuElEkGy++0FkuKKkRJHPIW5+kPZguNo96cAAGxhSH3IIscLoxDdn53iSnngpKttWfG6ccI/XMGTWp4wCq6IC2IBZcmKEqK+fN5dVbR4tn79pXlQ2Yyk7kvXaZjdVHrKC1Buw1gjjC1EvmiJjTRZVHPYlCTkfy+hdqzE="));
|
||||
@Getter
|
||||
private final WrappedSignedProperty property;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,22 +1,11 @@
|
|||
package fr.leomelki.loupgarou.classes;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.NativeGameMode;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.PlayerInfoAction;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.TitleAction;
|
||||
import com.comphenix.protocol.wrappers.PlayerInfoData;
|
||||
import com.comphenix.protocol.wrappers.WrappedChatComponent;
|
||||
import com.comphenix.protocol.wrappers.WrappedGameProfile;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerChat;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerPlayerInfo;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerScoreboardTeam;
|
||||
|
@ -37,336 +26,373 @@ import net.minecraft.server.v1_15_R1.DimensionManager;
|
|||
import net.minecraft.server.v1_15_R1.EnumGamemode;
|
||||
import net.minecraft.server.v1_15_R1.PacketPlayOutRespawn;
|
||||
import net.minecraft.server.v1_15_R1.WorldType;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class LGPlayer {
|
||||
private static final HashMap<Player, LGPlayer> cachedPlayers = new HashMap<>();
|
||||
private final MainLg plugin;
|
||||
private static final HashMap<Player, LGPlayer> cachedPlayers = new HashMap<>();
|
||||
private final MainLg plugin;
|
||||
@Getter
|
||||
private final VariableCache cache = new VariableCache();
|
||||
public boolean canSelectDead;
|
||||
@Getter
|
||||
boolean muted;
|
||||
long lastChoose;
|
||||
@Getter
|
||||
@Setter
|
||||
private int place;
|
||||
@Getter
|
||||
private Player player;
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean dead;
|
||||
@Setter
|
||||
@Getter
|
||||
private Role role;
|
||||
private LGChooseCallback chooseCallback;
|
||||
private List<LGPlayer> blacklistedChoice = new ArrayList<>(0);
|
||||
@Getter
|
||||
@Setter
|
||||
private LGGame game;
|
||||
@Getter
|
||||
@Setter
|
||||
private String latestObjective;
|
||||
@Getter
|
||||
private CustomScoreboard scoreboard;
|
||||
private String name;
|
||||
@Getter
|
||||
private LGChat chat;
|
||||
|
||||
public static LGPlayer thePlayer(MainLg plugin, Player player) {
|
||||
LGPlayer lgp = cachedPlayers.get(player);
|
||||
if(lgp == null) {
|
||||
lgp = new LGPlayer(plugin, player);
|
||||
cachedPlayers.put(player, lgp);
|
||||
}
|
||||
return lgp;
|
||||
}
|
||||
public static LGPlayer removePlayer(Player player) {
|
||||
return cachedPlayers.remove(player);//.remove();
|
||||
}
|
||||
@Getter @Setter private int place;
|
||||
@Getter private Player player;
|
||||
@Getter @Setter private boolean dead;
|
||||
@Setter @Getter private Role role;
|
||||
private LGChooseCallback chooseCallback;
|
||||
private List<LGPlayer> blacklistedChoice = new ArrayList<>(0);
|
||||
@Getter private final VariableCache cache = new VariableCache();
|
||||
@Getter @Setter private LGGame game;
|
||||
@Getter @Setter private String latestObjective;
|
||||
@Getter private CustomScoreboard scoreboard;
|
||||
public LGPlayer(MainLg mainLg, Player player) {
|
||||
this.plugin = mainLg;
|
||||
this.player = player;
|
||||
}
|
||||
public LGPlayer(MainLg mainLg, String name) {
|
||||
this.plugin = mainLg;
|
||||
this.name = name;
|
||||
}
|
||||
public LGPlayer(MainLg mainLg, Player player) {
|
||||
this.plugin = mainLg;
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
public void setScoreboard(CustomScoreboard scoreboard) {
|
||||
if(player != null) {
|
||||
if(this.scoreboard != null)
|
||||
this.scoreboard.hide();
|
||||
public LGPlayer(MainLg mainLg, String name) {
|
||||
this.plugin = mainLg;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
this.scoreboard = scoreboard;
|
||||
public static LGPlayer thePlayer(MainLg plugin, Player player) {
|
||||
LGPlayer lgp = cachedPlayers.get(player);
|
||||
if (lgp == null) {
|
||||
lgp = new LGPlayer(plugin, player);
|
||||
cachedPlayers.put(player, lgp);
|
||||
}
|
||||
return lgp;
|
||||
}
|
||||
|
||||
if(scoreboard != null)
|
||||
scoreboard.show();
|
||||
}
|
||||
}
|
||||
public static LGPlayer removePlayer(Player player) {
|
||||
return cachedPlayers.remove(player);//.remove();
|
||||
}
|
||||
|
||||
public void sendActionBarMessage(String msg) {
|
||||
if(this.player != null) {
|
||||
WrapperPlayServerChat chat = new WrapperPlayServerChat();
|
||||
chat.setPosition((byte)2);
|
||||
chat.setMessage(WrappedChatComponent.fromText(msg));
|
||||
chat.sendPacket(getPlayer());
|
||||
}
|
||||
}
|
||||
public void sendMessage(String msg) {
|
||||
if(this.player != null)
|
||||
getPlayer().sendMessage(MainLg.getPrefix()+msg);
|
||||
}
|
||||
public void sendTitle(String title, String subTitle, int stay) {
|
||||
if(this.player != null) {
|
||||
WrapperPlayServerTitle titlePacket = new WrapperPlayServerTitle();
|
||||
titlePacket.setAction(TitleAction.TIMES);
|
||||
titlePacket.setFadeIn(10);
|
||||
titlePacket.setStay(stay);
|
||||
titlePacket.setFadeOut(10);
|
||||
titlePacket.sendPacket(player);
|
||||
public void setScoreboard(CustomScoreboard scoreboard) {
|
||||
if (player != null) {
|
||||
if (this.scoreboard != null)
|
||||
this.scoreboard.hide();
|
||||
|
||||
titlePacket = new WrapperPlayServerTitle();
|
||||
titlePacket.setAction(TitleAction.TITLE);
|
||||
titlePacket.setTitle(WrappedChatComponent.fromText(title));
|
||||
titlePacket.sendPacket(player);
|
||||
this.scoreboard = scoreboard;
|
||||
|
||||
titlePacket = new WrapperPlayServerTitle();
|
||||
titlePacket.setAction(TitleAction.SUBTITLE);
|
||||
titlePacket.setTitle(WrappedChatComponent.fromText(subTitle));
|
||||
titlePacket.sendPacket(player);
|
||||
}
|
||||
}
|
||||
public void remove() {
|
||||
this.player = null;
|
||||
}
|
||||
private String name;
|
||||
public String getName() {
|
||||
return player != null ? getPlayer().getName() : name;
|
||||
}
|
||||
if (scoreboard != null)
|
||||
scoreboard.show();
|
||||
}
|
||||
}
|
||||
|
||||
public void sendActionBarMessage(String msg) {
|
||||
if (this.player != null) {
|
||||
WrapperPlayServerChat chat = new WrapperPlayServerChat();
|
||||
chat.setPosition((byte) 2);
|
||||
chat.setMessage(WrappedChatComponent.fromText(msg));
|
||||
chat.sendPacket(getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
public void sendMessage(String msg) {
|
||||
if (this.player != null)
|
||||
getPlayer().sendMessage(MainLg.getPrefix() + msg);
|
||||
}
|
||||
|
||||
public void sendTitle(String title, String subTitle, int stay) {
|
||||
if (this.player != null) {
|
||||
WrapperPlayServerTitle titlePacket = new WrapperPlayServerTitle();
|
||||
titlePacket.setAction(TitleAction.TIMES);
|
||||
titlePacket.setFadeIn(10);
|
||||
titlePacket.setStay(stay);
|
||||
titlePacket.setFadeOut(10);
|
||||
titlePacket.sendPacket(player);
|
||||
|
||||
titlePacket = new WrapperPlayServerTitle();
|
||||
titlePacket.setAction(TitleAction.TITLE);
|
||||
titlePacket.setTitle(WrappedChatComponent.fromText(title));
|
||||
titlePacket.sendPacket(player);
|
||||
|
||||
titlePacket = new WrapperPlayServerTitle();
|
||||
titlePacket.setAction(TitleAction.SUBTITLE);
|
||||
titlePacket.setTitle(WrappedChatComponent.fromText(subTitle));
|
||||
titlePacket.sendPacket(player);
|
||||
}
|
||||
}
|
||||
|
||||
public void remove() {
|
||||
this.player = null;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return player != null ? getPlayer().getName() : name;
|
||||
}
|
||||
|
||||
public boolean join(LGGame game) {
|
||||
if (getPlayer().getGameMode() == GameMode.SPECTATOR) {
|
||||
sendMessage("§cÉtant en mode spectateur, vous ne rejoignez pas la partie !");
|
||||
return false;
|
||||
}
|
||||
if (game.tryToJoin(this)) {
|
||||
//To update the skin
|
||||
updateOwnSkin();
|
||||
getPlayer().setWalkSpeed(0.2f);
|
||||
// sendMessage("§2Vous venez de rejoindre une partie de Loup-Garou. §aBon jeu!");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void choose(LGChooseCallback callback, LGPlayer... blacklisted) {
|
||||
this.blacklistedChoice = blacklisted == null ? new ArrayList<>(0) : Arrays.asList(blacklisted);
|
||||
this.chooseCallback = callback;
|
||||
//sendMessage("§7§oTIP: Regardez un joueur et tapez le afin de le sélectionner.");
|
||||
}
|
||||
|
||||
public void stopChoosing() {
|
||||
this.blacklistedChoice = null;
|
||||
this.chooseCallback = null;
|
||||
}
|
||||
|
||||
public void showView() {
|
||||
if (getGame() != null && player != null)
|
||||
for (LGPlayer lgp : getGame().getAlive())
|
||||
if (!lgp.isDead()) {
|
||||
if (lgp != this && lgp.getPlayer() != null)
|
||||
getPlayer().showPlayer(plugin, lgp.getPlayer());
|
||||
else {
|
||||
WrapperPlayServerScoreboardTeam team = new WrapperPlayServerScoreboardTeam();
|
||||
team.setMode(2);
|
||||
team.setName(lgp.getName());
|
||||
team.setPrefix(WrappedChatComponent.fromText(""));
|
||||
team.setPlayers(Collections.singletonList(lgp.getName()));
|
||||
team.sendPacket(getPlayer());
|
||||
|
||||
WrapperPlayServerPlayerInfo info = new WrapperPlayServerPlayerInfo();
|
||||
ArrayList<PlayerInfoData> infos = new ArrayList<>();
|
||||
info.setAction(PlayerInfoAction.ADD_PLAYER);
|
||||
infos.add(new PlayerInfoData(new WrappedGameProfile(getPlayer().getUniqueId(), getName()), 0, NativeGameMode.ADVENTURE, WrappedChatComponent.fromText(getName())));
|
||||
info.setData(infos);
|
||||
info.sendPacket(getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
getPlayer().removePotionEffect(PotionEffectType.BLINDNESS);
|
||||
getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 20, 2, false, false));
|
||||
}
|
||||
|
||||
//TODO Update prefix for only one guy
|
||||
public void updatePrefix() {
|
||||
if (getGame() != null && !isDead() && player != null) {
|
||||
List<String> meList = Collections.singletonList(getName());
|
||||
for (LGPlayer lgp : getGame().getInGame()) {
|
||||
WrapperPlayServerPlayerInfo info = new WrapperPlayServerPlayerInfo();
|
||||
ArrayList<PlayerInfoData> infos = new ArrayList<>();
|
||||
info.setAction(PlayerInfoAction.ADD_PLAYER);
|
||||
infos.add(new PlayerInfoData(new WrappedGameProfile(getPlayer().getUniqueId(), getName()), 0, NativeGameMode.ADVENTURE, WrappedChatComponent.fromText(getName())));
|
||||
info.setData(infos);
|
||||
info.sendPacket(lgp.getPlayer());
|
||||
|
||||
WrapperPlayServerScoreboardTeam team = new WrapperPlayServerScoreboardTeam();
|
||||
team.setMode(2);
|
||||
team.setName(getName());
|
||||
team.setPrefix(WrappedChatComponent.fromText(""));
|
||||
team.setPlayers(meList);
|
||||
team.sendPacket(lgp.getPlayer());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void hideView() {
|
||||
if (getGame() != null && player != null) {
|
||||
WrapperPlayServerPlayerInfo info = new WrapperPlayServerPlayerInfo();
|
||||
ArrayList<PlayerInfoData> infos = new ArrayList<>();
|
||||
info.setAction(PlayerInfoAction.ADD_PLAYER);
|
||||
for (LGPlayer lgp : getGame().getAlive())
|
||||
if (lgp != this && lgp.getPlayer() != null) {
|
||||
if (!lgp.isDead())
|
||||
infos.add(new PlayerInfoData(new WrappedGameProfile(lgp.getPlayer().getUniqueId(), lgp.getName()), 0, NativeGameMode.ADVENTURE, WrappedChatComponent.fromText(lgp.getName())));
|
||||
getPlayer().hidePlayer(plugin, lgp.getPlayer());
|
||||
}
|
||||
info.setData(infos);
|
||||
info.sendPacket(getPlayer());
|
||||
}
|
||||
|
||||
getPlayer().removePotionEffect(PotionEffectType.BLINDNESS);
|
||||
getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 999999, 1, false, false));
|
||||
}
|
||||
|
||||
public void updateSkin() {
|
||||
if (getGame() != null && player != null) {
|
||||
for (LGPlayer lgp : getGame().getInGame()) {
|
||||
if (lgp == this) {
|
||||
WrapperPlayServerPlayerInfo info = new WrapperPlayServerPlayerInfo();
|
||||
ArrayList<PlayerInfoData> infos = new ArrayList<>();
|
||||
info.setAction(PlayerInfoAction.ADD_PLAYER);
|
||||
infos.add(new PlayerInfoData(new WrappedGameProfile(getPlayer().getUniqueId(), getName()), 0, NativeGameMode.ADVENTURE, WrappedChatComponent.fromText(getName())));
|
||||
info.setData(infos);
|
||||
info.sendPacket(getPlayer());
|
||||
} else if (!isDead() && lgp.getPlayer() != null) {
|
||||
lgp.getPlayer().hidePlayer(plugin, getPlayer());
|
||||
lgp.getPlayer().showPlayer(plugin, getPlayer());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void updateOwnSkin() {
|
||||
if (player != null) {
|
||||
//On change son skin avec un packet de PlayerInfo (dans le tab)
|
||||
WrapperPlayServerPlayerInfo infos = new WrapperPlayServerPlayerInfo();
|
||||
infos.setAction(PlayerInfoAction.ADD_PLAYER);
|
||||
WrappedGameProfile gameProfile = new WrappedGameProfile(getPlayer().getUniqueId(), getPlayer().getName());
|
||||
infos.setData(Collections.singletonList(new PlayerInfoData(gameProfile, 10, NativeGameMode.SURVIVAL, WrappedChatComponent.fromText(getPlayer().getName()))));
|
||||
infos.sendPacket(getPlayer());
|
||||
//Pour qu'il voit son skin changer (sa main et en f5), on lui dit qu'il respawn (alors qu'il n'est pas mort mais ça marche quand même mdr)
|
||||
PacketPlayOutRespawn respawn = new PacketPlayOutRespawn(DimensionManager.OVERWORLD, 0, WorldType.NORMAL, EnumGamemode.ADVENTURE);
|
||||
((CraftPlayer) getPlayer()).getHandle().playerConnection.sendPacket(respawn);
|
||||
//Enfin, on le téléporte à sa potion actuelle car sinon il se verra dans le vide
|
||||
getPlayer().teleport(getPlayer().getLocation());
|
||||
float speed = getPlayer().getWalkSpeed();
|
||||
getPlayer().setWalkSpeed(0.2f);
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
getPlayer().updateInventory();
|
||||
getPlayer().setWalkSpeed(speed);
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 5);
|
||||
//Et c'est bon, le joueur se voit avec un nouveau skin avec quasiment aucun problème visible à l'écran :D
|
||||
}
|
||||
}
|
||||
|
||||
public LGPlayer getPlayerOnCursor(List<LGPlayer> list) {
|
||||
Location loc = getPlayer().getLocation();
|
||||
if (loc.getPitch() > 60)
|
||||
if (blacklistedChoice.contains(this))
|
||||
return null;
|
||||
else
|
||||
return this;
|
||||
for (int i = 0; i < 50; i++) {
|
||||
loc.add(loc.getDirection());
|
||||
for (LGPlayer player : list) {
|
||||
if (player != this && !blacklistedChoice.contains(player) && (!player.isDead() || canSelectDead) && VariousUtils.distanceSquaredXZ(loc, player.getPlayer().getLocation()) < 0.35 && Math.abs(loc.getY() - player.getPlayer().getLocation().getY()) < 2) {
|
||||
return player;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public RoleType getRoleType() {
|
||||
return this.getCache().getBoolean("vampire") ? RoleType.VAMPIRE : this.getCache().getBoolean("infected") ? RoleType.LOUP_GAROU : getRole().getType(this);
|
||||
}
|
||||
|
||||
public RoleWinType getRoleWinType() {
|
||||
return this.getCache().getBoolean("vampire") ? RoleWinType.VAMPIRE : this.getCache().getBoolean("infected") ? RoleWinType.LOUP_GAROU : getRole().getWinType(this);
|
||||
}
|
||||
|
||||
public boolean isRoleActive() {
|
||||
return !this.getCache().getBoolean("vampire");
|
||||
}
|
||||
|
||||
public void die() {
|
||||
setMuted();
|
||||
}
|
||||
|
||||
private void setMuted() {
|
||||
if (player != null)
|
||||
for (LGPlayer lgp : getGame().getInGame())
|
||||
if (lgp != this && lgp.getPlayer() != null)
|
||||
lgp.getPlayer().hidePlayer(plugin, getPlayer());
|
||||
muted = true;
|
||||
}
|
||||
|
||||
public void resetMuted() {
|
||||
muted = false;
|
||||
}
|
||||
|
||||
public void joinChat(LGChat chat, LGChatCallback callback) {
|
||||
joinChat(chat, callback, false);
|
||||
}
|
||||
|
||||
public void joinChat(LGChat chat) {
|
||||
joinChat(chat, null, false);
|
||||
}
|
||||
|
||||
public void joinChat(LGChat chat, boolean muted) {
|
||||
joinChat(chat, null, muted);
|
||||
}
|
||||
|
||||
public void joinChat(LGChat chat, LGChatCallback callback, boolean muted) {
|
||||
if (this.chat != null && !muted)
|
||||
this.chat.leave(this);
|
||||
|
||||
if (!muted)
|
||||
this.chat = chat;
|
||||
|
||||
if (chat != null && player != null)
|
||||
chat.join(this, callback == null ? chat.getDefaultCallback() : callback);
|
||||
}
|
||||
|
||||
|
||||
public boolean join(LGGame game) {
|
||||
if(getPlayer().getGameMode() == GameMode.SPECTATOR) {
|
||||
sendMessage("§cÉtant en mode spectateur, vous ne rejoignez pas la partie !");
|
||||
return false;
|
||||
}
|
||||
if(game.tryToJoin(this)) {
|
||||
//To update the skin
|
||||
updateOwnSkin();
|
||||
getPlayer().setWalkSpeed(0.2f);
|
||||
// sendMessage("§2Vous venez de rejoindre une partie de Loup-Garou. §aBon jeu!");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public void choose(LGChooseCallback callback, LGPlayer... blacklisted) {
|
||||
this.blacklistedChoice = blacklisted == null ? new ArrayList<>(0) : Arrays.asList(blacklisted);
|
||||
this.chooseCallback = callback;
|
||||
//sendMessage("§7§oTIP: Regardez un joueur et tapez le afin de le sélectionner.");
|
||||
}
|
||||
public void stopChoosing() {
|
||||
this.blacklistedChoice = null;
|
||||
this.chooseCallback = null;
|
||||
}
|
||||
public void leaveChat() {
|
||||
joinChat(new LGNoChat(), null);
|
||||
}
|
||||
|
||||
public interface LGChooseCallback{
|
||||
void callback(LGPlayer choosen);
|
||||
}
|
||||
|
||||
public void showView() {
|
||||
if(getGame() != null && player != null)
|
||||
for(LGPlayer lgp : getGame().getAlive())
|
||||
if(!lgp.isDead()) {
|
||||
if(lgp != this && lgp.getPlayer() != null)
|
||||
getPlayer().showPlayer(plugin, lgp.getPlayer());
|
||||
else{
|
||||
WrapperPlayServerScoreboardTeam team = new WrapperPlayServerScoreboardTeam();
|
||||
team.setMode(2);
|
||||
team.setName(lgp.getName());
|
||||
team.setPrefix(WrappedChatComponent.fromText(""));
|
||||
team.setPlayers(Collections.singletonList(lgp.getName()));
|
||||
team.sendPacket(getPlayer());
|
||||
|
||||
WrapperPlayServerPlayerInfo info = new WrapperPlayServerPlayerInfo();
|
||||
ArrayList<PlayerInfoData> infos = new ArrayList<>();
|
||||
info.setAction(PlayerInfoAction.ADD_PLAYER);
|
||||
infos.add(new PlayerInfoData(new WrappedGameProfile(getPlayer().getUniqueId(), getName()), 0, NativeGameMode.ADVENTURE, WrappedChatComponent.fromText(getName())));
|
||||
info.setData(infos);
|
||||
info.sendPacket(getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
getPlayer().removePotionEffect(PotionEffectType.BLINDNESS);
|
||||
getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 20, 2, false, false));
|
||||
}
|
||||
|
||||
//TODO Update prefix for only one guy
|
||||
public void updatePrefix() {
|
||||
if(getGame() != null && !isDead() && player != null) {
|
||||
List<String> meList = Collections.singletonList(getName());
|
||||
for(LGPlayer lgp : getGame().getInGame()) {
|
||||
WrapperPlayServerPlayerInfo info = new WrapperPlayServerPlayerInfo();
|
||||
ArrayList<PlayerInfoData> infos = new ArrayList<>();
|
||||
info.setAction(PlayerInfoAction.ADD_PLAYER);
|
||||
infos.add(new PlayerInfoData(new WrappedGameProfile(getPlayer().getUniqueId(), getName()), 0, NativeGameMode.ADVENTURE, WrappedChatComponent.fromText(getName())));
|
||||
info.setData(infos);
|
||||
info.sendPacket(lgp.getPlayer());
|
||||
|
||||
WrapperPlayServerScoreboardTeam team = new WrapperPlayServerScoreboardTeam();
|
||||
team.setMode(2);
|
||||
team.setName(getName());
|
||||
team.setPrefix(WrappedChatComponent.fromText(""));
|
||||
team.setPlayers(meList);
|
||||
team.sendPacket(lgp.getPlayer());
|
||||
}
|
||||
}
|
||||
}
|
||||
public void hideView() {
|
||||
if(getGame() != null && player != null) {
|
||||
WrapperPlayServerPlayerInfo info = new WrapperPlayServerPlayerInfo();
|
||||
ArrayList<PlayerInfoData> infos = new ArrayList<>();
|
||||
info.setAction(PlayerInfoAction.ADD_PLAYER);
|
||||
for(LGPlayer lgp : getGame().getAlive())
|
||||
if(lgp != this && lgp.getPlayer() != null) {
|
||||
if(!lgp.isDead())
|
||||
infos.add(new PlayerInfoData(new WrappedGameProfile(lgp.getPlayer().getUniqueId(), lgp.getName()), 0, NativeGameMode.ADVENTURE, WrappedChatComponent.fromText(lgp.getName())));
|
||||
getPlayer().hidePlayer(plugin, lgp.getPlayer());
|
||||
}
|
||||
info.setData(infos);
|
||||
info.sendPacket(getPlayer());
|
||||
}
|
||||
|
||||
getPlayer().removePotionEffect(PotionEffectType.BLINDNESS);
|
||||
getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 999999, 1, false, false));
|
||||
}
|
||||
|
||||
public void updateSkin() {
|
||||
if(getGame() != null && player != null) {
|
||||
for(LGPlayer lgp : getGame().getInGame()) {
|
||||
if(lgp == this) {
|
||||
WrapperPlayServerPlayerInfo info = new WrapperPlayServerPlayerInfo();
|
||||
ArrayList<PlayerInfoData> infos = new ArrayList<>();
|
||||
info.setAction(PlayerInfoAction.ADD_PLAYER);
|
||||
infos.add(new PlayerInfoData(new WrappedGameProfile(getPlayer().getUniqueId(), getName()), 0, NativeGameMode.ADVENTURE, WrappedChatComponent.fromText(getName())));
|
||||
info.setData(infos);
|
||||
info.sendPacket(getPlayer());
|
||||
}else if(!isDead() && lgp.getPlayer() != null){
|
||||
lgp.getPlayer().hidePlayer(plugin, getPlayer());
|
||||
lgp.getPlayer().showPlayer(plugin, getPlayer());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public void updateOwnSkin() {
|
||||
if(player != null) {
|
||||
//On change son skin avec un packet de PlayerInfo (dans le tab)
|
||||
WrapperPlayServerPlayerInfo infos = new WrapperPlayServerPlayerInfo();
|
||||
infos.setAction(PlayerInfoAction.ADD_PLAYER);
|
||||
WrappedGameProfile gameProfile = new WrappedGameProfile(getPlayer().getUniqueId(), getPlayer().getName());
|
||||
infos.setData(Collections.singletonList(new PlayerInfoData(gameProfile, 10, NativeGameMode.SURVIVAL, WrappedChatComponent.fromText(getPlayer().getName()))));
|
||||
infos.sendPacket(getPlayer());
|
||||
//Pour qu'il voit son skin changer (sa main et en f5), on lui dit qu'il respawn (alors qu'il n'est pas mort mais ça marche quand même mdr)
|
||||
PacketPlayOutRespawn respawn = new PacketPlayOutRespawn(DimensionManager.OVERWORLD, 0, WorldType.NORMAL, EnumGamemode.ADVENTURE);
|
||||
((CraftPlayer)getPlayer()).getHandle().playerConnection.sendPacket(respawn);
|
||||
//Enfin, on le téléporte à sa potion actuelle car sinon il se verra dans le vide
|
||||
getPlayer().teleport(getPlayer().getLocation());
|
||||
float speed = getPlayer().getWalkSpeed();
|
||||
getPlayer().setWalkSpeed(0.2f);
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
getPlayer().updateInventory();
|
||||
getPlayer().setWalkSpeed(speed);
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 5);
|
||||
//Et c'est bon, le joueur se voit avec un nouveau skin avec quasiment aucun problème visible à l'écran :D
|
||||
}
|
||||
}
|
||||
public boolean canSelectDead;
|
||||
public LGPlayer getPlayerOnCursor(List<LGPlayer> list) {
|
||||
Location loc = getPlayer().getLocation();
|
||||
if(loc.getPitch() > 60)
|
||||
if(blacklistedChoice.contains(this))
|
||||
return null;
|
||||
else
|
||||
return this;
|
||||
for(int i = 0;i<50;i++) {
|
||||
loc.add(loc.getDirection());
|
||||
for(LGPlayer player : list) {
|
||||
if(player != this && !blacklistedChoice.contains(player) && (!player.isDead() || canSelectDead) && VariousUtils.distanceSquaredXZ(loc, player.getPlayer().getLocation()) < 0.35 && Math.abs(loc.getY()-player.getPlayer().getLocation().getY()) < 2) {
|
||||
return player;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public RoleType getRoleType() {
|
||||
return this.getCache().getBoolean("vampire") ? RoleType.VAMPIRE : this.getCache().getBoolean("infected") ? RoleType.LOUP_GAROU : getRole().getType(this);
|
||||
}
|
||||
public RoleWinType getRoleWinType() {
|
||||
return this.getCache().getBoolean("vampire") ? RoleWinType.VAMPIRE : this.getCache().getBoolean("infected") ? RoleWinType.LOUP_GAROU : getRole().getWinType(this);
|
||||
}
|
||||
|
||||
public boolean isRoleActive() {
|
||||
return !this.getCache().getBoolean("vampire");
|
||||
}
|
||||
|
||||
@Getter
|
||||
boolean muted;
|
||||
|
||||
public void die() {
|
||||
setMuted();
|
||||
}
|
||||
public void onChat(String message) {
|
||||
if (chat != null) {
|
||||
chat.sendMessage(this, message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void setMuted() {
|
||||
if(player != null)
|
||||
for(LGPlayer lgp : getGame().getInGame())
|
||||
if(lgp != this && lgp.getPlayer() != null)
|
||||
lgp.getPlayer().hidePlayer(plugin, getPlayer());
|
||||
muted = true;
|
||||
}
|
||||
public void resetMuted() {
|
||||
muted = false;
|
||||
}
|
||||
public void playAudio(LGSound sound, double volume) {
|
||||
if (player != null)
|
||||
getPlayer().playSound(getPlayer().getLocation(), sound.getSound(), (float) volume, 1);
|
||||
}
|
||||
|
||||
@Getter private LGChat chat;
|
||||
public void stopAudio(LGSound sound) {
|
||||
if (player != null)
|
||||
getPlayer().stopSound(sound.getSound());
|
||||
}
|
||||
|
||||
public void joinChat(LGChat chat, LGChatCallback callback) {
|
||||
joinChat(chat, callback, false);
|
||||
}
|
||||
public void joinChat(LGChat chat) {
|
||||
joinChat(chat, null, false);
|
||||
}
|
||||
public void joinChat(LGChat chat, boolean muted) {
|
||||
joinChat(chat, null, muted);
|
||||
}
|
||||
public void joinChat(LGChat chat, LGChatCallback callback, boolean muted) {
|
||||
if(this.chat != null && !muted)
|
||||
this.chat.leave(this);
|
||||
public void chooseAction() {
|
||||
long now = System.currentTimeMillis();
|
||||
if (lastChoose + 200 < now) {
|
||||
if (chooseCallback != null)
|
||||
chooseCallback.callback(getPlayerOnCursor(getGame().getInGame()));
|
||||
lastChoose = now;
|
||||
}
|
||||
}
|
||||
|
||||
if(!muted)
|
||||
this.chat = chat;
|
||||
@Override
|
||||
public String toString() {
|
||||
return super.toString() + " (" + getName() + ")";
|
||||
}
|
||||
|
||||
if(chat != null && player != null)
|
||||
chat.join(this, callback == null ? chat.getDefaultCallback() : callback);
|
||||
}
|
||||
|
||||
|
||||
public void leaveChat() {
|
||||
joinChat(new LGNoChat(), null);
|
||||
}
|
||||
|
||||
public void onChat(String message) {
|
||||
if(chat != null) {
|
||||
chat.sendMessage(this, message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void playAudio(LGSound sound, double volume) {
|
||||
if(player != null)
|
||||
getPlayer().playSound(getPlayer().getLocation(), sound.getSound(), (float)volume, 1);
|
||||
}
|
||||
public void stopAudio(LGSound sound) {
|
||||
if(player != null)
|
||||
getPlayer().stopSound(sound.getSound());
|
||||
}
|
||||
|
||||
long lastChoose;
|
||||
public void chooseAction() {
|
||||
long now = System.currentTimeMillis();
|
||||
if(lastChoose+200 < now) {
|
||||
if(chooseCallback != null)
|
||||
chooseCallback.callback(getPlayerOnCursor(getGame().getInGame()));
|
||||
lastChoose = now;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return super.toString()+" ("+getName()+")";
|
||||
}
|
||||
public interface LGChooseCallback {
|
||||
void callback(LGPlayer choosen);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
package fr.leomelki.loupgarou.classes;
|
||||
|
||||
import lombok.Getter;
|
||||
import org.bukkit.Sound;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
public enum LGSound {
|
||||
KILL(Sound.ENTITY_BLAZE_DEATH),
|
||||
START_NIGHT(Sound.ENTITY_SKELETON_DEATH),
|
||||
START_DAY(Sound.ENTITY_ZOMBIE_DEATH),
|
||||
AMBIANT_NIGHT(Sound.MUSIC_DISC_MALL),
|
||||
AMBIANT_DAY(Sound.MUSIC_DISC_MELLOHI);
|
||||
KILL(Sound.ENTITY_BLAZE_DEATH),
|
||||
START_NIGHT(Sound.ENTITY_SKELETON_DEATH),
|
||||
START_DAY(Sound.ENTITY_ZOMBIE_DEATH),
|
||||
AMBIANT_NIGHT(Sound.MUSIC_DISC_MALL),
|
||||
AMBIANT_DAY(Sound.MUSIC_DISC_MELLOHI);
|
||||
|
||||
@Getter
|
||||
@Getter
|
||||
final Sound sound;
|
||||
LGSound(Sound sound){
|
||||
this.sound = sound;
|
||||
}
|
||||
|
||||
LGSound(Sound sound) {
|
||||
this.sound = sound;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,17 @@
|
|||
package fr.leomelki.loupgarou.classes;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.ItemSlot;
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher.WrappedDataWatcherObject;
|
||||
import com.comphenix.protocol.wrappers.WrappedWatchableObject;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.*;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame.TextGenerator;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer.LGChooseCallback;
|
||||
import fr.leomelki.loupgarou.events.LGVoteLeaderChange;
|
||||
import fr.leomelki.loupgarou.utils.VariousUtils;
|
||||
import lombok.Getter;
|
||||
import net.minecraft.server.v1_15_R1.*;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
|
@ -13,327 +21,327 @@ import org.bukkit.entity.EntityType;
|
|||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.ItemSlot;
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher.WrappedDataWatcherObject;
|
||||
import com.comphenix.protocol.wrappers.WrappedWatchableObject;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerEntityDestroy;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerEntityEquipment;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerEntityLook;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerEntityMetadata;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerSpawnEntityLiving;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame.TextGenerator;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer.LGChooseCallback;
|
||||
import fr.leomelki.loupgarou.events.LGVoteLeaderChange;
|
||||
import fr.leomelki.loupgarou.utils.VariousUtils;
|
||||
import lombok.Getter;
|
||||
import net.minecraft.server.v1_15_R1.DataWatcher;
|
||||
import net.minecraft.server.v1_15_R1.DataWatcherObject;
|
||||
import net.minecraft.server.v1_15_R1.Entity;
|
||||
import net.minecraft.server.v1_15_R1.EntityArmorStand;
|
||||
import net.minecraft.server.v1_15_R1.IChatBaseComponent;
|
||||
import net.minecraft.server.v1_15_R1.PacketPlayOutEntityMetadata;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
public class LGVote {
|
||||
@Getter LGPlayer choosen;
|
||||
private int timeout;
|
||||
private final int initialTimeout;
|
||||
private final int littleTimeout;
|
||||
private Runnable callback;
|
||||
private final LGGame game;
|
||||
@Getter private List<LGPlayer> participants, viewers;
|
||||
private final TextGenerator generator;
|
||||
@Getter private final HashMap<LGPlayer, List<LGPlayer>> votes = new HashMap<>();
|
||||
private int votesSize = 0;
|
||||
private LGPlayer mayor;
|
||||
private ArrayList<LGPlayer> latestTop = new ArrayList<>(), blacklisted = new ArrayList<>();
|
||||
private final boolean randomIfEqual;
|
||||
@Getter private boolean mayorVote;
|
||||
private boolean ended;
|
||||
public LGVote(int timeout, int littleTimeout, LGGame game, boolean positiveVote, boolean randomIfEqual, TextGenerator generator) {
|
||||
this.littleTimeout = littleTimeout;
|
||||
this.initialTimeout = timeout;
|
||||
this.timeout = timeout;
|
||||
this.game = game;
|
||||
this.generator = generator;
|
||||
this.randomIfEqual = randomIfEqual;
|
||||
}
|
||||
public void start(List<LGPlayer> participants, List<LGPlayer> viewers, Runnable callback) {
|
||||
this.callback = callback;
|
||||
this.participants = participants;
|
||||
this.viewers = viewers;
|
||||
game.wait(timeout, this::end, generator);
|
||||
for(LGPlayer player : participants)
|
||||
player.choose(getChooseCallback(player));
|
||||
}
|
||||
public void start(List<LGPlayer> participants, List<LGPlayer> viewers, Runnable callback, ArrayList<LGPlayer> blacklisted) {
|
||||
this.callback = callback;
|
||||
this.participants = participants;
|
||||
this.viewers = viewers;
|
||||
game.wait(timeout, this::end, generator);
|
||||
for(LGPlayer player : participants)
|
||||
player.choose(getChooseCallback(player));
|
||||
this.blacklisted = blacklisted;
|
||||
}
|
||||
public void start(List<LGPlayer> participants, List<LGPlayer> viewers, Runnable callback, LGPlayer mayor) {
|
||||
this.callback = callback;
|
||||
this.participants = participants;
|
||||
this.viewers = viewers;
|
||||
this.mayor = mayor;
|
||||
game.wait(timeout, this::end, generator);
|
||||
for(LGPlayer player : participants)
|
||||
player.choose(getChooseCallback(player));
|
||||
}
|
||||
private static final EntityArmorStand eas = new EntityArmorStand(((CraftWorld) Bukkit.getWorlds().get(0)).getHandle(), 0, 0, 0);
|
||||
private static DataWatcherObject<Optional<IChatBaseComponent>> az;
|
||||
private static DataWatcherObject<Boolean> aA;
|
||||
private static DataWatcherObject<Byte> T;
|
||||
private static final EntityArmorStand eas = new EntityArmorStand(((CraftWorld)Bukkit.getWorlds().get(0)).getHandle(), 0, 0, 0);
|
||||
|
||||
static {
|
||||
try {
|
||||
Field f = Entity.class.getDeclaredField("az");
|
||||
f.setAccessible(true);
|
||||
az = (DataWatcherObject<Optional<IChatBaseComponent>>) f.get(null);
|
||||
f = Entity.class.getDeclaredField("aA");
|
||||
f.setAccessible(true);
|
||||
aA = (DataWatcherObject<Boolean>) f.get(null);
|
||||
f = Entity.class.getDeclaredField("T");
|
||||
f.setAccessible(true);
|
||||
T = (DataWatcherObject<Byte>) f.get(null);
|
||||
}catch(Exception err) {
|
||||
err.printStackTrace();
|
||||
}
|
||||
try {
|
||||
Field f = Entity.class.getDeclaredField("az");
|
||||
f.setAccessible(true);
|
||||
az = (DataWatcherObject<Optional<IChatBaseComponent>>) f.get(null);
|
||||
f = Entity.class.getDeclaredField("aA");
|
||||
f.setAccessible(true);
|
||||
aA = (DataWatcherObject<Boolean>) f.get(null);
|
||||
f = Entity.class.getDeclaredField("T");
|
||||
f.setAccessible(true);
|
||||
T = (DataWatcherObject<Byte>) f.get(null);
|
||||
} catch (Exception err) {
|
||||
err.printStackTrace();
|
||||
}
|
||||
}
|
||||
private void end() {
|
||||
ended = true;
|
||||
for(LGPlayer lgp : viewers)
|
||||
showVoting(lgp, null);
|
||||
for(LGPlayer lgp : votes.keySet())
|
||||
updateVotes(lgp, true);
|
||||
int max = 0;
|
||||
boolean equal = false;
|
||||
for(Entry<LGPlayer, List<LGPlayer>> entry : votes.entrySet())
|
||||
if(entry.getValue().size() > max) {
|
||||
equal = false;
|
||||
max = entry.getValue().size();
|
||||
choosen = entry.getKey();
|
||||
}else if(entry.getValue().size() == max)
|
||||
equal = true;
|
||||
for(LGPlayer player : participants) {
|
||||
player.getCache().remove("vote");
|
||||
player.stopChoosing();
|
||||
}
|
||||
if(equal)
|
||||
choosen = null;
|
||||
if(equal && mayor == null && randomIfEqual) {
|
||||
ArrayList<LGPlayer> choosable = new ArrayList<>();
|
||||
for(Entry<LGPlayer, List<LGPlayer>> entry : votes.entrySet())
|
||||
if(entry.getValue().size() == max)
|
||||
choosable.add(entry.getKey());
|
||||
choosen = choosable.get(game.getRandom().nextInt(choosable.size()));
|
||||
}
|
||||
|
||||
if(equal && mayor != null && max != 0) {
|
||||
for(LGPlayer player : viewers)
|
||||
player.sendMessage("§9Égalité, le §5§lCapitaine§9 va départager les votes.");
|
||||
mayor.sendMessage("§6Tu dois choisir qui va mourir.");
|
||||
final WrappedDataWatcherObject invisible = new WrappedDataWatcherObject(0, WrappedDataWatcher.Registry.get(Byte.class));
|
||||
final WrappedDataWatcherObject noGravity = new WrappedDataWatcherObject(5, WrappedDataWatcher.Registry.get(Boolean.class));
|
||||
private final int initialTimeout;
|
||||
private final int littleTimeout;
|
||||
private final LGGame game;
|
||||
private final TextGenerator generator;
|
||||
@Getter
|
||||
private final HashMap<LGPlayer, List<LGPlayer>> votes = new HashMap<>();
|
||||
private final boolean randomIfEqual;
|
||||
@Getter
|
||||
LGPlayer choosen;
|
||||
WrappedDataWatcherObject customNameVisible = new WrappedDataWatcherObject(3, WrappedDataWatcher.Registry.get(Boolean.class));
|
||||
WrappedDataWatcherObject customName = new WrappedDataWatcherObject(2, WrappedDataWatcher.Registry.get(IChatBaseComponent.class));
|
||||
WrappedDataWatcherObject item = new WrappedDataWatcherObject(7, WrappedDataWatcher.Registry.get(net.minecraft.server.v1_15_R1.ItemStack.class));
|
||||
private int timeout;
|
||||
private Runnable callback;
|
||||
@Getter
|
||||
private List<LGPlayer> participants, viewers;
|
||||
private int votesSize = 0;
|
||||
private LGPlayer mayor;
|
||||
private ArrayList<LGPlayer> latestTop = new ArrayList<>(), blacklisted = new ArrayList<>();
|
||||
@Getter
|
||||
private boolean mayorVote;
|
||||
private boolean ended;
|
||||
|
||||
ArrayList<LGPlayer> choosable = new ArrayList<>();
|
||||
for(Entry<LGPlayer, List<LGPlayer>> entry : votes.entrySet())
|
||||
if(entry.getValue().size() == max)
|
||||
choosable.add(entry.getKey());
|
||||
public LGVote(int timeout, int littleTimeout, LGGame game, boolean positiveVote, boolean randomIfEqual, TextGenerator generator) {
|
||||
this.littleTimeout = littleTimeout;
|
||||
this.initialTimeout = timeout;
|
||||
this.timeout = timeout;
|
||||
this.game = game;
|
||||
this.generator = generator;
|
||||
this.randomIfEqual = randomIfEqual;
|
||||
}
|
||||
|
||||
for(int i = 0;i<choosable.size();i++) {
|
||||
LGPlayer lgp = choosable.get(i);
|
||||
showArrow(mayor, lgp, -mayor.getPlayer().getEntityId()-i);
|
||||
}
|
||||
public void start(List<LGPlayer> participants, List<LGPlayer> viewers, Runnable callback) {
|
||||
this.callback = callback;
|
||||
this.participants = participants;
|
||||
this.viewers = viewers;
|
||||
game.wait(timeout, this::end, generator);
|
||||
for (LGPlayer player : participants)
|
||||
player.choose(getChooseCallback(player));
|
||||
}
|
||||
|
||||
StringJoiner sj = new StringJoiner(", ");
|
||||
for(int i = 0;i<choosable.size()-1;i++)
|
||||
sj.add(choosable.get(0).getName());
|
||||
//mayor.sendTitle("§6C'est à vous de délibérer", "Faut-il tuer "+sj+" ou "+choosable.get(choosable.size()-1).getName()+" ?", 100);
|
||||
ArrayList<LGPlayer> blackListed = new ArrayList<>();
|
||||
for(LGPlayer player : participants)
|
||||
if(!choosable.contains(player))
|
||||
blackListed.add(player);
|
||||
else {
|
||||
VariousUtils.setWarning(player.getPlayer(), true);
|
||||
//player.sendMessage("§4§lVous êtes un des principaux suspects ! Défendez vous !");
|
||||
//player.sendTitle("§4§lDéfendez vous !", "§cVous êtes l'un des principaux suspects", 100);
|
||||
}
|
||||
mayorVote = true;
|
||||
game.wait(30, ()->{
|
||||
for(LGPlayer player : participants)
|
||||
if(choosable.contains(player))
|
||||
VariousUtils.setWarning(player.getPlayer(), false);
|
||||
public void start(List<LGPlayer> participants, List<LGPlayer> viewers, Runnable callback, ArrayList<LGPlayer> blacklisted) {
|
||||
this.callback = callback;
|
||||
this.participants = participants;
|
||||
this.viewers = viewers;
|
||||
game.wait(timeout, this::end, generator);
|
||||
for (LGPlayer player : participants)
|
||||
player.choose(getChooseCallback(player));
|
||||
this.blacklisted = blacklisted;
|
||||
}
|
||||
|
||||
for(int i = 0;i<choosable.size();i++) {
|
||||
LGPlayer lgp = choosable.get(i);
|
||||
showArrow(mayor, null, -mayor.getPlayer().getEntityId()-i);
|
||||
}
|
||||
//Choix au hasard d'un joueur si personne n'a été désigné
|
||||
choosen = choosable.get(game.getRandom().nextInt(choosable.size()));
|
||||
callback.run();
|
||||
}, (player, secondsLeft)->{
|
||||
timeout = secondsLeft;
|
||||
return mayor == player ? "§6Il te reste §e"+secondsLeft+" seconde"+(secondsLeft > 1 ? "s" : "")+"§6 pour délibérer" : "§6Le §5§lCapitaine§6 délibère (§e"+secondsLeft+" s§6)";
|
||||
});
|
||||
mayor.choose(choosen -> {
|
||||
if(choosen != null) {
|
||||
if(blackListed.contains(choosen))
|
||||
mayor.sendMessage("§4§oCe joueur n'est pas concerné par le choix.");
|
||||
else {
|
||||
for(LGPlayer player : participants)
|
||||
if(choosable.contains(player))
|
||||
VariousUtils.setWarning(player.getPlayer(), false);
|
||||
public void start(List<LGPlayer> participants, List<LGPlayer> viewers, Runnable callback, LGPlayer mayor) {
|
||||
this.callback = callback;
|
||||
this.participants = participants;
|
||||
this.viewers = viewers;
|
||||
this.mayor = mayor;
|
||||
game.wait(timeout, this::end, generator);
|
||||
for (LGPlayer player : participants)
|
||||
player.choose(getChooseCallback(player));
|
||||
}
|
||||
|
||||
for(int i = 0;i<choosable.size();i++) {
|
||||
LGPlayer lgp = choosable.get(i);
|
||||
showArrow(mayor, null, -mayor.getPlayer().getEntityId()-i);
|
||||
}
|
||||
game.cancelWait();
|
||||
LGVote.this.choosen = choosen;
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
game.cancelWait();
|
||||
callback.run();
|
||||
}
|
||||
private void end() {
|
||||
ended = true;
|
||||
for (LGPlayer lgp : viewers)
|
||||
showVoting(lgp, null);
|
||||
for (LGPlayer lgp : votes.keySet())
|
||||
updateVotes(lgp, true);
|
||||
int max = 0;
|
||||
boolean equal = false;
|
||||
for (Entry<LGPlayer, List<LGPlayer>> entry : votes.entrySet())
|
||||
if (entry.getValue().size() > max) {
|
||||
equal = false;
|
||||
max = entry.getValue().size();
|
||||
choosen = entry.getKey();
|
||||
} else if (entry.getValue().size() == max)
|
||||
equal = true;
|
||||
for (LGPlayer player : participants) {
|
||||
player.getCache().remove("vote");
|
||||
player.stopChoosing();
|
||||
}
|
||||
if (equal)
|
||||
choosen = null;
|
||||
if (equal && mayor == null && randomIfEqual) {
|
||||
ArrayList<LGPlayer> choosable = new ArrayList<>();
|
||||
for (Entry<LGPlayer, List<LGPlayer>> entry : votes.entrySet())
|
||||
if (entry.getValue().size() == max)
|
||||
choosable.add(entry.getKey());
|
||||
choosen = choosable.get(game.getRandom().nextInt(choosable.size()));
|
||||
}
|
||||
|
||||
}
|
||||
public LGChooseCallback getChooseCallback(LGPlayer who) {
|
||||
return choosen -> {
|
||||
if(choosen != null)
|
||||
vote(who, choosen);
|
||||
};
|
||||
}
|
||||
public void vote(LGPlayer voter, LGPlayer voted) {
|
||||
if(blacklisted.contains(voted)) {
|
||||
voter.sendMessage("§cVous ne pouvez pas votre pour §7§l"+voted.getName()+"§c.");
|
||||
return;
|
||||
}
|
||||
if(voted == voter.getCache().get("vote"))
|
||||
voted = null;
|
||||
if (equal && mayor != null && max != 0) {
|
||||
for (LGPlayer player : viewers)
|
||||
player.sendMessage("§9Égalité, le §5§lCapitaine§9 va départager les votes.");
|
||||
mayor.sendMessage("§6Tu dois choisir qui va mourir.");
|
||||
|
||||
if(voted != null && voter.getPlayer() != null)
|
||||
votesSize++;
|
||||
if(voter.getCache().has("vote"))
|
||||
votesSize--;
|
||||
ArrayList<LGPlayer> choosable = new ArrayList<>();
|
||||
for (Entry<LGPlayer, List<LGPlayer>> entry : votes.entrySet())
|
||||
if (entry.getValue().size() == max)
|
||||
choosable.add(entry.getKey());
|
||||
|
||||
if(votesSize == participants.size() && game.getWaitTicks() > littleTimeout*20) {
|
||||
votesSize = 999;
|
||||
game.wait(littleTimeout, initialTimeout, this::end, generator);
|
||||
}
|
||||
String italic = game.isDay() ? "" : "§o";
|
||||
boolean changeVote = false;
|
||||
if(voter.getCache().has("vote")) {//On enlève l'ancien vote
|
||||
LGPlayer devoted = voter.getCache().get("vote");
|
||||
if(votes.containsKey(devoted)) {
|
||||
List<LGPlayer> voters = votes.get(devoted);
|
||||
if(voters != null) {
|
||||
voters.remove(voter);
|
||||
if(voters.size() == 0)
|
||||
votes.remove(devoted);
|
||||
}
|
||||
}
|
||||
voter.getCache().remove("vote");
|
||||
updateVotes(devoted);
|
||||
changeVote = true;
|
||||
}
|
||||
for (int i = 0; i < choosable.size(); i++) {
|
||||
LGPlayer lgp = choosable.get(i);
|
||||
showArrow(mayor, lgp, -mayor.getPlayer().getEntityId() - i);
|
||||
}
|
||||
|
||||
if(voted != null) {//Si il vient de voter, on ajoute le nouveau vote
|
||||
//voter.sendTitle("", "§7Tu as voté pour §7§l"+voted.getName(), 40);
|
||||
if(votes.containsKey(voted))
|
||||
votes.get(voted).add(voter);
|
||||
else
|
||||
votes.put(voted, new ArrayList<>(Collections.singletonList(voter)));
|
||||
voter.getCache().set("vote", voted);
|
||||
updateVotes(voted);
|
||||
}
|
||||
StringJoiner sj = new StringJoiner(", ");
|
||||
for (int i = 0; i < choosable.size() - 1; i++)
|
||||
sj.add(choosable.get(0).getName());
|
||||
//mayor.sendTitle("§6C'est à vous de délibérer", "Faut-il tuer "+sj+" ou "+choosable.get(choosable.size()-1).getName()+" ?", 100);
|
||||
ArrayList<LGPlayer> blackListed = new ArrayList<>();
|
||||
for (LGPlayer player : participants)
|
||||
if (!choosable.contains(player))
|
||||
blackListed.add(player);
|
||||
else {
|
||||
VariousUtils.setWarning(player.getPlayer(), true);
|
||||
//player.sendMessage("§4§lVous êtes un des principaux suspects ! Défendez vous !");
|
||||
//player.sendTitle("§4§lDéfendez vous !", "§cVous êtes l'un des principaux suspects", 100);
|
||||
}
|
||||
mayorVote = true;
|
||||
game.wait(30, () -> {
|
||||
for (LGPlayer player : participants)
|
||||
if (choosable.contains(player))
|
||||
VariousUtils.setWarning(player.getPlayer(), false);
|
||||
|
||||
if(voter.getPlayer() != null) {
|
||||
showVoting(voter, voted);
|
||||
String message;
|
||||
if(voted != null) {
|
||||
if(changeVote) {
|
||||
message = "§7§l"+voter.getName()+"§6 a changé son vote pour §7§l"+voted.getName()+"§6.";
|
||||
voter.sendMessage("§6Tu as changé de vote pour §7§l"+voted.getName()+"§6.");
|
||||
} else {
|
||||
message = "§7§l"+voter.getName()+"§6 a voté pour §7§l"+voted.getName()+"§6.";
|
||||
voter.sendMessage("§6Tu as voté pour §7§l"+voted.getName()+"§6.");
|
||||
}
|
||||
} else {
|
||||
message = "§7§l"+voter.getName()+"§6 a annulé son vote.";
|
||||
voter.sendMessage("§6Tu as annulé ton vote.");
|
||||
}
|
||||
for (int i = 0; i < choosable.size(); i++) {
|
||||
LGPlayer lgp = choosable.get(i);
|
||||
showArrow(mayor, null, -mayor.getPlayer().getEntityId() - i);
|
||||
}
|
||||
//Choix au hasard d'un joueur si personne n'a été désigné
|
||||
choosen = choosable.get(game.getRandom().nextInt(choosable.size()));
|
||||
callback.run();
|
||||
}, (player, secondsLeft) -> {
|
||||
timeout = secondsLeft;
|
||||
return mayor == player ? "§6Il te reste §e" + secondsLeft + " seconde" + (secondsLeft > 1 ? "s" : "") + "§6 pour délibérer" : "§6Le §5§lCapitaine§6 délibère (§e" + secondsLeft + " s§6)";
|
||||
});
|
||||
mayor.choose(choosen -> {
|
||||
if (choosen != null) {
|
||||
if (blackListed.contains(choosen))
|
||||
mayor.sendMessage("§4§oCe joueur n'est pas concerné par le choix.");
|
||||
else {
|
||||
for (LGPlayer player : participants)
|
||||
if (choosable.contains(player))
|
||||
VariousUtils.setWarning(player.getPlayer(), false);
|
||||
|
||||
for(LGPlayer player : viewers)
|
||||
if(player != voter)
|
||||
player.sendMessage(message);
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < choosable.size(); i++) {
|
||||
LGPlayer lgp = choosable.get(i);
|
||||
showArrow(mayor, null, -mayor.getPlayer().getEntityId() - i);
|
||||
}
|
||||
game.cancelWait();
|
||||
LGVote.this.choosen = choosen;
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
game.cancelWait();
|
||||
callback.run();
|
||||
}
|
||||
|
||||
public List<LGPlayer> getVotes(LGPlayer voted){
|
||||
return votes.containsKey(voted) ? votes.get(voted) : new ArrayList<>(0);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateVotes(LGPlayer voted) {
|
||||
updateVotes(voted, false);
|
||||
}
|
||||
private void updateVotes(LGPlayer voted, boolean kill) {
|
||||
int entityId = Integer.MIN_VALUE+voted.getPlayer().getEntityId();
|
||||
WrapperPlayServerEntityDestroy destroy = new WrapperPlayServerEntityDestroy();
|
||||
destroy.setEntityIds(new int[] {entityId});
|
||||
for(LGPlayer lgp : viewers)
|
||||
destroy.sendPacket(lgp.getPlayer());
|
||||
public LGChooseCallback getChooseCallback(LGPlayer who) {
|
||||
return choosen -> {
|
||||
if (choosen != null)
|
||||
vote(who, choosen);
|
||||
};
|
||||
}
|
||||
|
||||
if(!kill) {
|
||||
int max = 0;
|
||||
for(Entry<LGPlayer, List<LGPlayer>> entry : votes.entrySet())
|
||||
if(entry.getValue().size() > max)
|
||||
max = entry.getValue().size();
|
||||
ArrayList<LGPlayer> last = latestTop;
|
||||
latestTop = new ArrayList<>();
|
||||
for(Entry<LGPlayer, List<LGPlayer>> entry : votes.entrySet())
|
||||
if(entry.getValue().size() == max)
|
||||
latestTop.add(entry.getKey());
|
||||
Bukkit.getPluginManager().callEvent(new LGVoteLeaderChange(game, this, last, latestTop));
|
||||
}
|
||||
public void vote(LGPlayer voter, LGPlayer voted) {
|
||||
if (blacklisted.contains(voted)) {
|
||||
voter.sendMessage("§cVous ne pouvez pas votre pour §7§l" + voted.getName() + "§c.");
|
||||
return;
|
||||
}
|
||||
if (voted == voter.getCache().get("vote"))
|
||||
voted = null;
|
||||
|
||||
if(votes.containsKey(voted) && !kill) {
|
||||
Location loc = voted.getPlayer().getLocation();
|
||||
if (voted != null && voter.getPlayer() != null)
|
||||
votesSize++;
|
||||
if (voter.getCache().has("vote"))
|
||||
votesSize--;
|
||||
|
||||
WrapperPlayServerSpawnEntityLiving spawn = new WrapperPlayServerSpawnEntityLiving();
|
||||
spawn.setEntityID(entityId);
|
||||
spawn.setType(EntityType.DROPPED_ITEM);
|
||||
//spawn.setMetadata(new WrappedDataWatcher(Arrays.asList(new WrappedWatchableObject(0, (byte)0x20), new WrappedWatchableObject(5, true))));
|
||||
spawn.setX(loc.getX());
|
||||
spawn.setY(loc.getY()+0.3);
|
||||
spawn.setZ(loc.getZ());
|
||||
if (votesSize == participants.size() && game.getWaitTicks() > littleTimeout * 20) {
|
||||
votesSize = 999;
|
||||
game.wait(littleTimeout, initialTimeout, this::end, generator);
|
||||
}
|
||||
String italic = game.isDay() ? "" : "§o";
|
||||
boolean changeVote = false;
|
||||
if (voter.getCache().has("vote")) {//On enlève l'ancien vote
|
||||
LGPlayer devoted = voter.getCache().get("vote");
|
||||
if (votes.containsKey(devoted)) {
|
||||
List<LGPlayer> voters = votes.get(devoted);
|
||||
if (voters != null) {
|
||||
voters.remove(voter);
|
||||
if (voters.size() == 0)
|
||||
votes.remove(devoted);
|
||||
}
|
||||
}
|
||||
voter.getCache().remove("vote");
|
||||
updateVotes(devoted);
|
||||
changeVote = true;
|
||||
}
|
||||
|
||||
int votesNbr = votes.get(voted).size();
|
||||
final int numberOfParticipants = participants.size();
|
||||
final double votePercentage = ((double)votesNbr / numberOfParticipants) * 100;
|
||||
final String votePercentageFormated = String.format("%.0f%%", votePercentage);
|
||||
final String voteContent = "§6§l" + votesNbr + " / " + numberOfParticipants + "§e vote" + (votesNbr > 1 ? "s" : "") + " (§6§l" + votePercentageFormated + "§e)";
|
||||
if (voted != null) {//Si il vient de voter, on ajoute le nouveau vote
|
||||
//voter.sendTitle("", "§7Tu as voté pour §7§l"+voted.getName(), 40);
|
||||
if (votes.containsKey(voted))
|
||||
votes.get(voted).add(voter);
|
||||
else
|
||||
votes.put(voted, new ArrayList<>(Collections.singletonList(voter)));
|
||||
voter.getCache().set("vote", voted);
|
||||
updateVotes(voted);
|
||||
}
|
||||
|
||||
if (voter.getPlayer() != null) {
|
||||
showVoting(voter, voted);
|
||||
String message;
|
||||
if (voted != null) {
|
||||
if (changeVote) {
|
||||
message = "§7§l" + voter.getName() + "§6 a changé son vote pour §7§l" + voted.getName() + "§6.";
|
||||
voter.sendMessage("§6Tu as changé de vote pour §7§l" + voted.getName() + "§6.");
|
||||
} else {
|
||||
message = "§7§l" + voter.getName() + "§6 a voté pour §7§l" + voted.getName() + "§6.";
|
||||
voter.sendMessage("§6Tu as voté pour §7§l" + voted.getName() + "§6.");
|
||||
}
|
||||
} else {
|
||||
message = "§7§l" + voter.getName() + "§6 a annulé son vote.";
|
||||
voter.sendMessage("§6Tu as annulé ton vote.");
|
||||
}
|
||||
|
||||
for (LGPlayer player : viewers)
|
||||
if (player != voter)
|
||||
player.sendMessage(message);
|
||||
}
|
||||
}
|
||||
|
||||
public List<LGPlayer> getVotes(LGPlayer voted) {
|
||||
return votes.containsKey(voted) ? votes.get(voted) : new ArrayList<>(0);
|
||||
}
|
||||
|
||||
private void updateVotes(LGPlayer voted) {
|
||||
updateVotes(voted, false);
|
||||
}
|
||||
|
||||
private void updateVotes(LGPlayer voted, boolean kill) {
|
||||
int entityId = Integer.MIN_VALUE + voted.getPlayer().getEntityId();
|
||||
WrapperPlayServerEntityDestroy destroy = new WrapperPlayServerEntityDestroy();
|
||||
destroy.setEntityIds(new int[]{entityId});
|
||||
for (LGPlayer lgp : viewers)
|
||||
destroy.sendPacket(lgp.getPlayer());
|
||||
|
||||
if (!kill) {
|
||||
int max = 0;
|
||||
for (Entry<LGPlayer, List<LGPlayer>> entry : votes.entrySet())
|
||||
if (entry.getValue().size() > max)
|
||||
max = entry.getValue().size();
|
||||
ArrayList<LGPlayer> last = latestTop;
|
||||
latestTop = new ArrayList<>();
|
||||
for (Entry<LGPlayer, List<LGPlayer>> entry : votes.entrySet())
|
||||
if (entry.getValue().size() == max)
|
||||
latestTop.add(entry.getKey());
|
||||
Bukkit.getPluginManager().callEvent(new LGVoteLeaderChange(game, this, last, latestTop));
|
||||
}
|
||||
|
||||
if (votes.containsKey(voted) && !kill) {
|
||||
Location loc = voted.getPlayer().getLocation();
|
||||
|
||||
WrapperPlayServerSpawnEntityLiving spawn = new WrapperPlayServerSpawnEntityLiving();
|
||||
spawn.setEntityID(entityId);
|
||||
spawn.setType(EntityType.DROPPED_ITEM);
|
||||
//spawn.setMetadata(new WrappedDataWatcher(Arrays.asList(new WrappedWatchableObject(0, (byte)0x20), new WrappedWatchableObject(5, true))));
|
||||
spawn.setX(loc.getX());
|
||||
spawn.setY(loc.getY() + 0.3);
|
||||
spawn.setZ(loc.getZ());
|
||||
|
||||
int votesNbr = votes.get(voted).size();
|
||||
final int numberOfParticipants = participants.size();
|
||||
final double votePercentage = ((double) votesNbr / numberOfParticipants) * 100;
|
||||
final String votePercentageFormated = String.format("%.0f%%", votePercentage);
|
||||
final String voteContent = "§6§l" + votesNbr + " / " + numberOfParticipants + "§e vote" + (votesNbr > 1 ? "s" : "") + " (§6§l" + votePercentageFormated + "§e)";
|
||||
|
||||
/*WrapperPlayServerEntityMetadata meta = new WrapperPlayServerEntityMetadata();
|
||||
meta.setEntityID(entityId);
|
||||
meta.setMetadata(Arrays.asList(new WrappedWatchableObject(invisible, (byte)0x20), new WrappedWatchableObject(noGravity, true), new WrappedWatchableObject(customNameVisible, true), new WrappedWatchableObject(customName, IChatBaseComponent.ChatSerializer.b("§6§l"+votesNbr+"§e vote"+(votesNbr > 1 ? "s" : "")))));
|
||||
*/
|
||||
DataWatcher datawatcher = new DataWatcher(eas);
|
||||
datawatcher.register(T, (byte)0x20);
|
||||
datawatcher.register(az, Optional.ofNullable(IChatBaseComponent.ChatSerializer.a("{\"text\":\"" + voteContent + "\"}")));
|
||||
datawatcher.register(aA, true);
|
||||
PacketPlayOutEntityMetadata meta = new PacketPlayOutEntityMetadata(entityId, datawatcher, true);
|
||||
DataWatcher datawatcher = new DataWatcher(eas);
|
||||
datawatcher.register(T, (byte) 0x20);
|
||||
datawatcher.register(az, Optional.ofNullable(IChatBaseComponent.ChatSerializer.a("{\"text\":\"" + voteContent + "\"}")));
|
||||
datawatcher.register(aA, true);
|
||||
PacketPlayOutEntityMetadata meta = new PacketPlayOutEntityMetadata(entityId, datawatcher, true);
|
||||
|
||||
for(LGPlayer lgp : viewers) {
|
||||
spawn.sendPacket(lgp.getPlayer());
|
||||
((CraftPlayer)lgp.getPlayer()).getHandle().playerConnection.sendPacket(meta);
|
||||
}
|
||||
for (LGPlayer lgp : viewers) {
|
||||
spawn.sendPacket(lgp.getPlayer());
|
||||
((CraftPlayer) lgp.getPlayer()).getHandle().playerConnection.sendPacket(meta);
|
||||
}
|
||||
|
||||
|
||||
/* EntityArmorStand ea = new EntityArmorStand(((CraftWorld)loc.getWorld()).getHandle(), loc.getX(), loc.getY()+0.3, loc.getZ());
|
||||
|
@ -365,115 +373,112 @@ public class LGVote {
|
|||
spawn.setZ(loc.getZ());*/
|
||||
/* for(LGPlayer lgp : viewers)
|
||||
((CraftPlayer)lgp.getPlayer()).getHandle().playerConnection.sendPacket(spawn);*/
|
||||
// spawn.sendPacket(lgp.getPlayer());
|
||||
}
|
||||
}
|
||||
final WrappedDataWatcherObject invisible = new WrappedDataWatcherObject(0, WrappedDataWatcher.Registry.get(Byte.class));
|
||||
final WrappedDataWatcherObject noGravity = new WrappedDataWatcherObject(5, WrappedDataWatcher.Registry.get(Boolean.class));
|
||||
WrappedDataWatcherObject customNameVisible = new WrappedDataWatcherObject(3, WrappedDataWatcher.Registry.get(Boolean.class));
|
||||
WrappedDataWatcherObject customName = new WrappedDataWatcherObject(2, WrappedDataWatcher.Registry.get(IChatBaseComponent.class));
|
||||
WrappedDataWatcherObject item = new WrappedDataWatcherObject(7, WrappedDataWatcher.Registry.get(net.minecraft.server.v1_15_R1.ItemStack.class));
|
||||
private void showVoting(LGPlayer to, LGPlayer ofWho) {
|
||||
int entityId = -to.getPlayer().getEntityId();
|
||||
WrapperPlayServerEntityDestroy destroy = new WrapperPlayServerEntityDestroy();
|
||||
destroy.setEntityIds(new int[] {entityId});
|
||||
destroy.sendPacket(to.getPlayer());
|
||||
if(ofWho != null) {
|
||||
WrapperPlayServerSpawnEntityLiving spawn = new WrapperPlayServerSpawnEntityLiving();
|
||||
spawn.setEntityID(entityId);
|
||||
spawn.setType(EntityType.DROPPED_ITEM);
|
||||
//spawn.setMetadata(new WrappedDataWatcher(Arrays.asList(new WrappedWatchableObject(0, (byte)0x20), new WrappedWatchableObject(5, true))));
|
||||
Location loc = ofWho.getPlayer().getLocation();
|
||||
spawn.setX(loc.getX());
|
||||
spawn.setY(loc.getY()+1.3);
|
||||
spawn.setZ(loc.getZ());
|
||||
spawn.setHeadPitch(0);
|
||||
Location toLoc = to.getPlayer().getLocation();
|
||||
double diffX = loc.getX()-toLoc.getX(),
|
||||
diffZ = loc.getZ()-toLoc.getZ();
|
||||
float yaw = 180-((float) Math.toDegrees(Math.atan2(diffX, diffZ)));
|
||||
// spawn.sendPacket(lgp.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
spawn.setYaw(yaw);
|
||||
spawn.sendPacket(to.getPlayer());
|
||||
private void showVoting(LGPlayer to, LGPlayer ofWho) {
|
||||
int entityId = -to.getPlayer().getEntityId();
|
||||
WrapperPlayServerEntityDestroy destroy = new WrapperPlayServerEntityDestroy();
|
||||
destroy.setEntityIds(new int[]{entityId});
|
||||
destroy.sendPacket(to.getPlayer());
|
||||
if (ofWho != null) {
|
||||
WrapperPlayServerSpawnEntityLiving spawn = new WrapperPlayServerSpawnEntityLiving();
|
||||
spawn.setEntityID(entityId);
|
||||
spawn.setType(EntityType.DROPPED_ITEM);
|
||||
//spawn.setMetadata(new WrappedDataWatcher(Arrays.asList(new WrappedWatchableObject(0, (byte)0x20), new WrappedWatchableObject(5, true))));
|
||||
Location loc = ofWho.getPlayer().getLocation();
|
||||
spawn.setX(loc.getX());
|
||||
spawn.setY(loc.getY() + 1.3);
|
||||
spawn.setZ(loc.getZ());
|
||||
spawn.setHeadPitch(0);
|
||||
Location toLoc = to.getPlayer().getLocation();
|
||||
double diffX = loc.getX() - toLoc.getX(),
|
||||
diffZ = loc.getZ() - toLoc.getZ();
|
||||
float yaw = 180 - ((float) Math.toDegrees(Math.atan2(diffX, diffZ)));
|
||||
|
||||
WrapperPlayServerEntityMetadata meta = new WrapperPlayServerEntityMetadata();
|
||||
meta.setEntityID(entityId);
|
||||
meta.setMetadata(Arrays.asList(new WrappedWatchableObject(invisible, (byte)0x20), new WrappedWatchableObject(noGravity, true)));
|
||||
meta.sendPacket(to.getPlayer());
|
||||
spawn.setYaw(yaw);
|
||||
spawn.sendPacket(to.getPlayer());
|
||||
|
||||
WrapperPlayServerEntityLook look = new WrapperPlayServerEntityLook();
|
||||
look.setEntityID(entityId);
|
||||
look.setPitch(0);
|
||||
look.setYaw(yaw);
|
||||
look.sendPacket(to.getPlayer());
|
||||
WrapperPlayServerEntityMetadata meta = new WrapperPlayServerEntityMetadata();
|
||||
meta.setEntityID(entityId);
|
||||
meta.setMetadata(Arrays.asList(new WrappedWatchableObject(invisible, (byte) 0x20), new WrappedWatchableObject(noGravity, true)));
|
||||
meta.sendPacket(to.getPlayer());
|
||||
|
||||
new BukkitRunnable() {
|
||||
WrapperPlayServerEntityLook look = new WrapperPlayServerEntityLook();
|
||||
look.setEntityID(entityId);
|
||||
look.setPitch(0);
|
||||
look.setYaw(yaw);
|
||||
look.sendPacket(to.getPlayer());
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
WrapperPlayServerEntityEquipment equip = new WrapperPlayServerEntityEquipment();
|
||||
equip.setEntityID(entityId);
|
||||
equip.setSlot(ItemSlot.HEAD);
|
||||
ItemStack skull = new ItemStack(Material.EMERALD);
|
||||
equip.setItem(skull);
|
||||
equip.sendPacket(to.getPlayer());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 2);
|
||||
}
|
||||
}
|
||||
new BukkitRunnable() {
|
||||
|
||||
private void showArrow(LGPlayer to, LGPlayer ofWho, int entityId) {
|
||||
WrapperPlayServerEntityDestroy destroy = new WrapperPlayServerEntityDestroy();
|
||||
destroy.setEntityIds(new int[] {entityId});
|
||||
destroy.sendPacket(to.getPlayer());
|
||||
if(ofWho != null) {
|
||||
WrapperPlayServerSpawnEntityLiving spawn = new WrapperPlayServerSpawnEntityLiving();
|
||||
spawn.setEntityID(entityId);
|
||||
spawn.setType(EntityType.DROPPED_ITEM);
|
||||
//spawn.setMetadata(new WrappedDataWatcher());
|
||||
Location loc = ofWho.getPlayer().getLocation();
|
||||
spawn.setX(loc.getX());
|
||||
spawn.setY(loc.getY()+1.3);
|
||||
spawn.setZ(loc.getZ());
|
||||
spawn.setHeadPitch(0);
|
||||
Location toLoc = to.getPlayer().getLocation();
|
||||
double diffX = loc.getX()-toLoc.getX(),
|
||||
diffZ = loc.getZ()-toLoc.getZ();
|
||||
float yaw = 180-((float) Math.toDegrees(Math.atan2(diffX, diffZ)));
|
||||
@Override
|
||||
public void run() {
|
||||
WrapperPlayServerEntityEquipment equip = new WrapperPlayServerEntityEquipment();
|
||||
equip.setEntityID(entityId);
|
||||
equip.setSlot(ItemSlot.HEAD);
|
||||
ItemStack skull = new ItemStack(Material.EMERALD);
|
||||
equip.setItem(skull);
|
||||
equip.sendPacket(to.getPlayer());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 2);
|
||||
}
|
||||
}
|
||||
|
||||
spawn.setYaw(yaw);
|
||||
spawn.sendPacket(to.getPlayer());
|
||||
private void showArrow(LGPlayer to, LGPlayer ofWho, int entityId) {
|
||||
WrapperPlayServerEntityDestroy destroy = new WrapperPlayServerEntityDestroy();
|
||||
destroy.setEntityIds(new int[]{entityId});
|
||||
destroy.sendPacket(to.getPlayer());
|
||||
if (ofWho != null) {
|
||||
WrapperPlayServerSpawnEntityLiving spawn = new WrapperPlayServerSpawnEntityLiving();
|
||||
spawn.setEntityID(entityId);
|
||||
spawn.setType(EntityType.DROPPED_ITEM);
|
||||
//spawn.setMetadata(new WrappedDataWatcher());
|
||||
Location loc = ofWho.getPlayer().getLocation();
|
||||
spawn.setX(loc.getX());
|
||||
spawn.setY(loc.getY() + 1.3);
|
||||
spawn.setZ(loc.getZ());
|
||||
spawn.setHeadPitch(0);
|
||||
Location toLoc = to.getPlayer().getLocation();
|
||||
double diffX = loc.getX() - toLoc.getX(),
|
||||
diffZ = loc.getZ() - toLoc.getZ();
|
||||
float yaw = 180 - ((float) Math.toDegrees(Math.atan2(diffX, diffZ)));
|
||||
|
||||
WrapperPlayServerEntityMetadata meta = new WrapperPlayServerEntityMetadata();
|
||||
meta.setEntityID(entityId);
|
||||
meta.setMetadata(Arrays.asList(new WrappedWatchableObject(invisible, (byte)0x20), new WrappedWatchableObject(noGravity, true)));
|
||||
meta.sendPacket(to.getPlayer());
|
||||
spawn.setYaw(yaw);
|
||||
spawn.sendPacket(to.getPlayer());
|
||||
|
||||
WrapperPlayServerEntityLook look = new WrapperPlayServerEntityLook();
|
||||
look.setEntityID(entityId);
|
||||
look.setPitch(0);
|
||||
look.setYaw(yaw);
|
||||
look.sendPacket(to.getPlayer());
|
||||
WrapperPlayServerEntityMetadata meta = new WrapperPlayServerEntityMetadata();
|
||||
meta.setEntityID(entityId);
|
||||
meta.setMetadata(Arrays.asList(new WrappedWatchableObject(invisible, (byte) 0x20), new WrappedWatchableObject(noGravity, true)));
|
||||
meta.sendPacket(to.getPlayer());
|
||||
|
||||
new BukkitRunnable() {
|
||||
WrapperPlayServerEntityLook look = new WrapperPlayServerEntityLook();
|
||||
look.setEntityID(entityId);
|
||||
look.setPitch(0);
|
||||
look.setYaw(yaw);
|
||||
look.sendPacket(to.getPlayer());
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
WrapperPlayServerEntityEquipment equip = new WrapperPlayServerEntityEquipment();
|
||||
equip.setEntityID(entityId);
|
||||
equip.setSlot(ItemSlot.HEAD);
|
||||
ItemStack skull = new ItemStack(Material.EMERALD);
|
||||
equip.setItem(skull);
|
||||
equip.sendPacket(to.getPlayer());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 2);
|
||||
}
|
||||
}
|
||||
public void remove(LGPlayer killed) {
|
||||
participants.remove(killed);
|
||||
if(!ended) {
|
||||
votes.remove(killed);
|
||||
latestTop.remove(killed);
|
||||
}
|
||||
}
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
WrapperPlayServerEntityEquipment equip = new WrapperPlayServerEntityEquipment();
|
||||
equip.setEntityID(entityId);
|
||||
equip.setSlot(ItemSlot.HEAD);
|
||||
ItemStack skull = new ItemStack(Material.EMERALD);
|
||||
equip.setItem(skull);
|
||||
equip.sendPacket(to.getPlayer());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 2);
|
||||
}
|
||||
}
|
||||
|
||||
public void remove(LGPlayer killed) {
|
||||
participants.remove(killed);
|
||||
if (!ended) {
|
||||
votes.remove(killed);
|
||||
latestTop.remove(killed);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,17 +5,18 @@ import lombok.RequiredArgsConstructor;
|
|||
|
||||
@RequiredArgsConstructor
|
||||
public enum LGWinType {
|
||||
VILLAGEOIS("§6§l§oLa partie a été gagnée par le §2§lVillage§6§l§o !"),
|
||||
LOUPGAROU("§6§l§oLa partie a été gagnée par les §c§lLoups-Garous§6§l§o !"),
|
||||
LOUPGAROUBLANC("§6§l§oLa partie a été gagnée par le §c§lLoup-Garou Blanc§6§l§o !"),
|
||||
COUPLE("§6§l§oLa partie a été gagnée par le §d§lcouple§6§l§o !"),
|
||||
ANGE("§6§l§oLa partie a été gagnée par l'§d§lAnge§6§l§o !"),
|
||||
EQUAL("§7§l§oÉgalité§6§l§o, personne n'a gagné la partie !"),
|
||||
SOLO("§6§l§oUn joueur solitaire a gagné la partie!"),//bug si ça s'affiche
|
||||
ASSASSIN("§6§l§oLa partie a été gagnée par l'§1§lAssassin§6§l§o !"),
|
||||
PYROMANE("§6§l§oLa partie a été gagnée par le §6§lPyromane§6§l§o !"),
|
||||
VAMPIRE("§6§l§oLa partie a été gagnée par les §5§lVampires§6§l§o !"),
|
||||
NONE("§4Erreur: §cpersonne n'a gagné la partie.");
|
||||
VILLAGEOIS("§6§l§oLa partie a été gagnée par le §2§lVillage§6§l§o !"),
|
||||
LOUPGAROU("§6§l§oLa partie a été gagnée par les §c§lLoups-Garous§6§l§o !"),
|
||||
LOUPGAROUBLANC("§6§l§oLa partie a été gagnée par le §c§lLoup-Garou Blanc§6§l§o !"),
|
||||
COUPLE("§6§l§oLa partie a été gagnée par le §d§lcouple§6§l§o !"),
|
||||
ANGE("§6§l§oLa partie a été gagnée par l'§d§lAnge§6§l§o !"),
|
||||
EQUAL("§7§l§oÉgalité§6§l§o, personne n'a gagné la partie !"),
|
||||
SOLO("§6§l§oUn joueur solitaire a gagné la partie!"),//bug si ça s'affiche
|
||||
ASSASSIN("§6§l§oLa partie a été gagnée par l'§1§lAssassin§6§l§o !"),
|
||||
PYROMANE("§6§l§oLa partie a été gagnée par le §6§lPyromane§6§l§o !"),
|
||||
VAMPIRE("§6§l§oLa partie a été gagnée par les §5§lVampires§6§l§o !"),
|
||||
NONE("§4Erreur: §cpersonne n'a gagné la partie.");
|
||||
|
||||
@Getter private final String message;
|
||||
@Getter
|
||||
private final String message;
|
||||
}
|
||||
|
|
|
@ -1,35 +1,41 @@
|
|||
package fr.leomelki.loupgarou.classes.chat;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class LGChat {
|
||||
@Getter private final HashMap<LGPlayer, LGChatCallback> viewers = new HashMap<>();
|
||||
@Getter private final LGChatCallback defaultCallback;
|
||||
@Getter
|
||||
private final HashMap<LGPlayer, LGChatCallback> viewers = new HashMap<>();
|
||||
@Getter
|
||||
private final LGChatCallback defaultCallback;
|
||||
|
||||
public interface LGChatCallback{
|
||||
String receive(LGPlayer sender, String message);
|
||||
default String send(LGPlayer sender, String message) {return null;}
|
||||
}
|
||||
public void sendMessage(LGPlayer sender, String message) {
|
||||
String sendMessage = getViewers().get(sender).send(sender, message);
|
||||
for (Entry<LGPlayer, LGChatCallback> entry : viewers.entrySet())
|
||||
entry.getKey().sendMessage(sendMessage != null ? sendMessage : entry.getValue().receive(sender, message));
|
||||
}
|
||||
|
||||
public void sendMessage(LGPlayer sender, String message) {
|
||||
String sendMessage = getViewers().get(sender).send(sender, message);
|
||||
for(Entry<LGPlayer, LGChatCallback> entry : viewers.entrySet())
|
||||
entry.getKey().sendMessage(sendMessage != null ? sendMessage : entry.getValue().receive(sender, message));
|
||||
}
|
||||
public void join(LGPlayer player, LGChatCallback callback) {
|
||||
if (getViewers().containsKey(player))
|
||||
getViewers().replace(player, callback);
|
||||
else
|
||||
getViewers().put(player, callback);
|
||||
}
|
||||
|
||||
public void join(LGPlayer player, LGChatCallback callback) {
|
||||
if(getViewers().containsKey(player))
|
||||
getViewers().replace(player, callback);
|
||||
else
|
||||
getViewers().put(player, callback);
|
||||
}
|
||||
public void leave(LGPlayer player) {
|
||||
getViewers().remove(player);
|
||||
}
|
||||
public void leave(LGPlayer player) {
|
||||
getViewers().remove(player);
|
||||
}
|
||||
|
||||
public interface LGChatCallback {
|
||||
String receive(LGPlayer sender, String message);
|
||||
|
||||
default String send(LGPlayer sender, String message) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,17 +2,19 @@ package fr.leomelki.loupgarou.classes.chat;
|
|||
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
|
||||
public class LGNoChat extends LGChat{
|
||||
public LGNoChat() {
|
||||
super(null);
|
||||
}
|
||||
public class LGNoChat extends LGChat {
|
||||
public LGNoChat() {
|
||||
super(null);
|
||||
}
|
||||
|
||||
public void sendMessage(LGPlayer sender, String message) {}
|
||||
public void sendMessage(LGPlayer sender, String message) {
|
||||
}
|
||||
|
||||
public void join(LGPlayer player, LGChatCallback callback) {
|
||||
public void join(LGPlayer player, LGChatCallback callback) {
|
||||
|
||||
}
|
||||
public void leave(LGPlayer player) {
|
||||
}
|
||||
|
||||
}
|
||||
public void leave(LGPlayer player) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,18 +1,20 @@
|
|||
package fr.leomelki.loupgarou.events;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import lombok.Getter;
|
||||
|
||||
public class LGCustomItemChangeEvent extends LGEvent {
|
||||
@Getter private final LGPlayer player;
|
||||
@Getter private final List<String> constraints;
|
||||
import java.util.List;
|
||||
|
||||
public LGCustomItemChangeEvent(LGGame game, LGPlayer player, List<String> constraints) {
|
||||
super(game);
|
||||
this.player = player;
|
||||
this.constraints = constraints;
|
||||
}
|
||||
public class LGCustomItemChangeEvent extends LGEvent {
|
||||
@Getter
|
||||
private final LGPlayer player;
|
||||
@Getter
|
||||
private final List<String> constraints;
|
||||
|
||||
public LGCustomItemChangeEvent(LGGame game, LGPlayer player, List<String> constraints) {
|
||||
super(game);
|
||||
this.player = player;
|
||||
this.constraints = constraints;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,8 +2,8 @@ package fr.leomelki.loupgarou.events;
|
|||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
|
||||
public class LGDayEndEvent extends LGEvent{
|
||||
public LGDayEndEvent(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
public class LGDayEndEvent extends LGEvent {
|
||||
public LGDayEndEvent(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
}
|
|
@ -1,15 +1,16 @@
|
|||
package fr.leomelki.loupgarou.events;
|
||||
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
public class LGDayStartEvent extends LGEvent implements Cancellable{
|
||||
public LGDayStartEvent(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
public class LGDayStartEvent extends LGEvent implements Cancellable {
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean cancelled;
|
||||
|
||||
@Getter @Setter private boolean cancelled;
|
||||
public LGDayStartEvent(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
}
|
|
@ -5,11 +5,13 @@ import fr.leomelki.loupgarou.classes.LGWinType;
|
|||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
public class LGEndCheckEvent extends LGEvent{
|
||||
public LGEndCheckEvent(LGGame game, LGWinType winType) {
|
||||
super(game);
|
||||
this.winType = winType;
|
||||
}
|
||||
public class LGEndCheckEvent extends LGEvent {
|
||||
@Getter
|
||||
@Setter
|
||||
private LGWinType winType;
|
||||
|
||||
@Getter @Setter private LGWinType winType;
|
||||
public LGEndCheckEvent(LGGame game, LGWinType winType) {
|
||||
super(game);
|
||||
this.winType = winType;
|
||||
}
|
||||
}
|
|
@ -1,22 +1,23 @@
|
|||
package fr.leomelki.loupgarou.events;
|
||||
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class LGEvent extends Event{
|
||||
@Getter final LGGame game;
|
||||
|
||||
public class LGEvent extends Event {
|
||||
private static final HandlerList handlers = new HandlerList();
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return handlers;
|
||||
}
|
||||
@Getter
|
||||
final LGGame game;
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return handlers;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,22 +1,26 @@
|
|||
package fr.leomelki.loupgarou.events;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGWinType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
public class LGGameEndEvent extends LGEvent implements Cancellable{
|
||||
@Getter @Setter private boolean cancelled;
|
||||
@Getter private final LGWinType winType;
|
||||
@Getter private final List<LGPlayer> winners;
|
||||
public LGGameEndEvent(LGGame game, LGWinType winType, List<LGPlayer> winners) {
|
||||
super(game);
|
||||
this.winType = winType;
|
||||
this.winners = winners;
|
||||
}
|
||||
import java.util.List;
|
||||
|
||||
public class LGGameEndEvent extends LGEvent implements Cancellable {
|
||||
@Getter
|
||||
private final LGWinType winType;
|
||||
@Getter
|
||||
private final List<LGPlayer> winners;
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean cancelled;
|
||||
|
||||
public LGGameEndEvent(LGGame game, LGWinType winType, List<LGPlayer> winners) {
|
||||
super(game);
|
||||
this.winType = winType;
|
||||
this.winners = winners;
|
||||
}
|
||||
}
|
|
@ -4,12 +4,12 @@ import fr.leomelki.loupgarou.classes.LGGame;
|
|||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import lombok.Getter;
|
||||
|
||||
public class LGGameJoinEvent extends LGEvent{
|
||||
public LGGameJoinEvent(LGGame game, LGPlayer player) {
|
||||
super(game);
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
@Getter
|
||||
public class LGGameJoinEvent extends LGEvent {
|
||||
@Getter
|
||||
final LGPlayer player;
|
||||
|
||||
public LGGameJoinEvent(LGGame game, LGPlayer player) {
|
||||
super(game);
|
||||
this.player = player;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
package fr.leomelki.loupgarou.events;
|
||||
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
public class LGMayorVoteEvent extends LGEvent implements Cancellable{
|
||||
public LGMayorVoteEvent(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
public class LGMayorVoteEvent extends LGEvent implements Cancellable {
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean cancelled;
|
||||
|
||||
@Getter @Setter private boolean cancelled;
|
||||
public LGMayorVoteEvent(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
package fr.leomelki.loupgarou.events;
|
||||
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
public class LGNightEndEvent extends LGEvent implements Cancellable{
|
||||
public LGNightEndEvent(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
public class LGNightEndEvent extends LGEvent implements Cancellable {
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean cancelled;
|
||||
|
||||
@Getter @Setter private boolean cancelled;
|
||||
public LGNightEndEvent(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
}
|
|
@ -1,23 +1,25 @@
|
|||
package fr.leomelki.loupgarou.events;
|
||||
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
public class LGNightPlayerPreKilledEvent extends LGEvent implements Cancellable{
|
||||
public LGNightPlayerPreKilledEvent(LGGame game, LGPlayer killed, Reason reason) {
|
||||
super(game);
|
||||
this.killed = killed;
|
||||
this.reason = reason;
|
||||
}
|
||||
|
||||
@Getter @Setter boolean cancelled;
|
||||
|
||||
@Getter private final LGPlayer killed;
|
||||
@Getter @Setter private Reason reason;
|
||||
public class LGNightPlayerPreKilledEvent extends LGEvent implements Cancellable {
|
||||
@Getter
|
||||
private final LGPlayer killed;
|
||||
@Getter
|
||||
@Setter
|
||||
boolean cancelled;
|
||||
@Getter
|
||||
@Setter
|
||||
private Reason reason;
|
||||
public LGNightPlayerPreKilledEvent(LGGame game, LGPlayer killed, Reason reason) {
|
||||
super(game);
|
||||
this.killed = killed;
|
||||
this.reason = reason;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,17 +1,18 @@
|
|||
package fr.leomelki.loupgarou.events;
|
||||
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
public class LGNightStart extends LGEvent implements Cancellable{
|
||||
public class LGNightStart extends LGEvent implements Cancellable {
|
||||
|
||||
public LGNightStart(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Getter
|
||||
@Setter
|
||||
boolean cancelled;
|
||||
|
||||
@Getter @Setter boolean cancelled;
|
||||
public LGNightStart(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -6,15 +6,17 @@ import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
|||
import lombok.Getter;
|
||||
|
||||
public class LGPlayerGotKilledEvent extends LGEvent {
|
||||
public LGPlayerGotKilledEvent(LGGame game, LGPlayer killed, Reason reason, boolean endGame) {
|
||||
super(game);
|
||||
this.killed = killed;
|
||||
this.reason = reason;
|
||||
this.endGame = endGame;
|
||||
}
|
||||
|
||||
@Getter private final boolean endGame;
|
||||
@Getter private final LGPlayer killed;
|
||||
@Getter private final Reason reason;
|
||||
@Getter
|
||||
private final boolean endGame;
|
||||
@Getter
|
||||
private final LGPlayer killed;
|
||||
@Getter
|
||||
private final Reason reason;
|
||||
public LGPlayerGotKilledEvent(LGGame game, LGPlayer killed, Reason reason, boolean endGame) {
|
||||
super(game);
|
||||
this.killed = killed;
|
||||
this.reason = reason;
|
||||
this.endGame = endGame;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,47 +1,51 @@
|
|||
package fr.leomelki.loupgarou.events;
|
||||
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
public class LGPlayerKilledEvent extends LGEvent implements Cancellable{
|
||||
public LGPlayerKilledEvent(LGGame game, LGPlayer killed, Reason reason) {
|
||||
super(game);
|
||||
this.killed = killed;
|
||||
this.reason = reason;
|
||||
}
|
||||
|
||||
@Getter @Setter boolean cancelled;
|
||||
|
||||
@Getter @Setter private LGPlayer killed;
|
||||
@Getter @Setter private Reason reason;
|
||||
public class LGPlayerKilledEvent extends LGEvent implements Cancellable {
|
||||
@Getter
|
||||
@Setter
|
||||
boolean cancelled;
|
||||
@Getter
|
||||
@Setter
|
||||
private LGPlayer killed;
|
||||
@Getter
|
||||
@Setter
|
||||
private Reason reason;
|
||||
public LGPlayerKilledEvent(LGGame game, LGPlayer killed, Reason reason) {
|
||||
super(game);
|
||||
this.killed = killed;
|
||||
this.reason = reason;
|
||||
}
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public enum Reason{
|
||||
LOUP_GAROU("§7§l%s§4 est mort pendant la nuit"),
|
||||
GM_LOUP_GAROU("§7§l%s§4 est mort pendant la nuit"),
|
||||
LOUP_BLANC(LOUP_GAROU.getMessage()),
|
||||
SORCIERE(LOUP_GAROU.getMessage()),
|
||||
CHASSEUR_DE_VAMPIRE("§7§l%s§4 s'est fait purifier"),
|
||||
VOTE("§7§l%s§4 a été victime du vote"),
|
||||
CHASSEUR("§7§l%s§4 est mort sur le coup"),
|
||||
DICTATOR("§7§l%s§4 a été désigné"),
|
||||
DICTATOR_SUICIDE("§7§l%s§4 s'est suicidé par culpabilité"),
|
||||
DISCONNECTED("§7§l%s§4 est mort d'une déconnexion"),
|
||||
LOVE("§7§l%s§4 s'est suicidé par amour"),
|
||||
BOUFFON("§7§l%s§4 est mort de peur"),
|
||||
ASSASSIN("§7§l%s§4 s'est fait poignarder"),
|
||||
PYROMANE("§7§l%s§4 est parti en fumée"),
|
||||
PIRATE("§7§l%s§4 était l'otage"),
|
||||
FAUCHEUR("§7§l%s§4 a égaré son âme"),
|
||||
public enum Reason {
|
||||
LOUP_GAROU("§7§l%s§4 est mort pendant la nuit"),
|
||||
GM_LOUP_GAROU("§7§l%s§4 est mort pendant la nuit"),
|
||||
LOUP_BLANC(LOUP_GAROU.getMessage()),
|
||||
SORCIERE(LOUP_GAROU.getMessage()),
|
||||
CHASSEUR_DE_VAMPIRE("§7§l%s§4 s'est fait purifier"),
|
||||
VOTE("§7§l%s§4 a été victime du vote"),
|
||||
CHASSEUR("§7§l%s§4 est mort sur le coup"),
|
||||
DICTATOR("§7§l%s§4 a été désigné"),
|
||||
DICTATOR_SUICIDE("§7§l%s§4 s'est suicidé par culpabilité"),
|
||||
DISCONNECTED("§7§l%s§4 est mort d'une déconnexion"),
|
||||
LOVE("§7§l%s§4 s'est suicidé par amour"),
|
||||
BOUFFON("§7§l%s§4 est mort de peur"),
|
||||
ASSASSIN("§7§l%s§4 s'est fait poignarder"),
|
||||
PYROMANE("§7§l%s§4 est parti en fumée"),
|
||||
PIRATE("§7§l%s§4 était l'otage"),
|
||||
FAUCHEUR("§7§l%s§4 a égaré son âme"),
|
||||
|
||||
DONT_DIE("§7§l%s§4 est mort pour rien");
|
||||
DONT_DIE("§7§l%s§4 est mort pour rien");
|
||||
|
||||
@Getter private final String message;
|
||||
}
|
||||
@Getter
|
||||
private final String message;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,15 +1,16 @@
|
|||
package fr.leomelki.loupgarou.events;
|
||||
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
public class LGPreDayStartEvent extends LGEvent implements Cancellable{
|
||||
public LGPreDayStartEvent(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
public class LGPreDayStartEvent extends LGEvent implements Cancellable {
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean cancelled;
|
||||
|
||||
@Getter @Setter private boolean cancelled;
|
||||
public LGPreDayStartEvent(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
}
|
|
@ -1,18 +1,20 @@
|
|||
package fr.leomelki.loupgarou.events;
|
||||
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
public class LGPyromaneGasoilEvent extends LGEvent implements Cancellable{
|
||||
public LGPyromaneGasoilEvent(LGGame game, LGPlayer player) {
|
||||
super(game);
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
@Getter @Setter private boolean cancelled;
|
||||
@Getter @Setter private LGPlayer player;
|
||||
public class LGPyromaneGasoilEvent extends LGEvent implements Cancellable {
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean cancelled;
|
||||
@Getter
|
||||
@Setter
|
||||
private LGPlayer player;
|
||||
public LGPyromaneGasoilEvent(LGGame game, LGPlayer player) {
|
||||
super(game);
|
||||
this.player = player;
|
||||
}
|
||||
}
|
|
@ -4,12 +4,13 @@ import fr.leomelki.loupgarou.classes.LGGame;
|
|||
import fr.leomelki.loupgarou.roles.Role;
|
||||
import lombok.Getter;
|
||||
|
||||
public class LGRoleTurnEndEvent extends LGEvent{
|
||||
public LGRoleTurnEndEvent(LGGame game, Role newRole, Role previousRole) {
|
||||
super(game);
|
||||
this.newRole = newRole;
|
||||
this.previousRole = previousRole;
|
||||
}
|
||||
public class LGRoleTurnEndEvent extends LGEvent {
|
||||
@Getter
|
||||
private final Role newRole, previousRole;
|
||||
|
||||
@Getter private final Role newRole, previousRole;
|
||||
public LGRoleTurnEndEvent(LGGame game, Role newRole, Role previousRole) {
|
||||
super(game);
|
||||
this.newRole = newRole;
|
||||
this.previousRole = previousRole;
|
||||
}
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
package fr.leomelki.loupgarou.events;
|
||||
|
||||
import com.comphenix.protocol.wrappers.WrappedGameProfile;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import lombok.Getter;
|
||||
|
@ -9,13 +8,17 @@ import lombok.Setter;
|
|||
|
||||
public class LGSkinLoadEvent extends LGEvent {
|
||||
|
||||
@Getter private final LGPlayer player, to;
|
||||
@Getter @Setter private WrappedGameProfile profile;
|
||||
public LGSkinLoadEvent(LGGame game, LGPlayer player, LGPlayer to, WrappedGameProfile profile) {
|
||||
super(game);
|
||||
this.player = player;
|
||||
this.to = to;
|
||||
this.profile = profile;
|
||||
}
|
||||
@Getter
|
||||
private final LGPlayer player, to;
|
||||
@Getter
|
||||
@Setter
|
||||
private WrappedGameProfile profile;
|
||||
|
||||
public LGSkinLoadEvent(LGGame game, LGPlayer player, LGPlayer to, WrappedGameProfile profile) {
|
||||
super(game);
|
||||
this.player = player;
|
||||
this.to = to;
|
||||
this.profile = profile;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -6,13 +6,17 @@ import lombok.Getter;
|
|||
import lombok.Setter;
|
||||
|
||||
public class LGUpdatePrefixEvent extends LGEvent {
|
||||
@Getter @Setter private String prefix;
|
||||
@Getter private final LGPlayer player, to;
|
||||
public LGUpdatePrefixEvent(LGGame game, LGPlayer player, LGPlayer to, String prefix) {
|
||||
super(game);
|
||||
this.player = player;
|
||||
this.prefix = prefix;
|
||||
this.to = to;
|
||||
}
|
||||
@Getter
|
||||
private final LGPlayer player, to;
|
||||
@Getter
|
||||
@Setter
|
||||
private String prefix;
|
||||
|
||||
public LGUpdatePrefixEvent(LGGame game, LGPlayer player, LGPlayer to, String prefix) {
|
||||
super(game);
|
||||
this.player = player;
|
||||
this.prefix = prefix;
|
||||
this.to = to;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,12 +5,15 @@ import fr.leomelki.loupgarou.classes.LGPlayer;
|
|||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
public class LGVampiredEvent extends LGEvent{
|
||||
public LGVampiredEvent(LGGame game, LGPlayer player) {
|
||||
super(game);
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
@Getter @Setter private boolean immuned, protect;
|
||||
@Getter @Setter private LGPlayer player;
|
||||
public class LGVampiredEvent extends LGEvent {
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean immuned, protect;
|
||||
@Getter
|
||||
@Setter
|
||||
private LGPlayer player;
|
||||
public LGVampiredEvent(LGGame game, LGPlayer player) {
|
||||
super(game);
|
||||
this.player = player;
|
||||
}
|
||||
}
|
|
@ -1,15 +1,16 @@
|
|||
package fr.leomelki.loupgarou.events;
|
||||
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.event.Cancellable;
|
||||
|
||||
public class LGVoteEvent extends LGEvent implements Cancellable{
|
||||
public LGVoteEvent(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
public class LGVoteEvent extends LGEvent implements Cancellable {
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean cancelled;
|
||||
|
||||
@Getter @Setter private boolean cancelled;
|
||||
public LGVoteEvent(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,26 +1,25 @@
|
|||
package fr.leomelki.loupgarou.events;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGVote;
|
||||
import lombok.Getter;
|
||||
|
||||
public class LGVoteLeaderChange extends LGEvent{
|
||||
import java.util.ArrayList;
|
||||
|
||||
public LGVoteLeaderChange(LGGame game, LGVote vote, ArrayList<LGPlayer> latest, ArrayList<LGPlayer> now) {
|
||||
super(game);
|
||||
this.latest = latest;
|
||||
this.now = now;
|
||||
this.vote = vote;
|
||||
}
|
||||
public class LGVoteLeaderChange extends LGEvent {
|
||||
|
||||
@Getter
|
||||
@Getter
|
||||
final ArrayList<LGPlayer> latest;
|
||||
@Getter
|
||||
final ArrayList<LGPlayer> now;
|
||||
@Getter
|
||||
@Getter
|
||||
final LGVote vote;
|
||||
public LGVoteLeaderChange(LGGame game, LGVote vote, ArrayList<LGPlayer> latest, ArrayList<LGPlayer> now) {
|
||||
super(game);
|
||||
this.latest = latest;
|
||||
this.now = now;
|
||||
this.vote = vote;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package fr.leomelki.loupgarou.listeners;
|
||||
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
|
@ -15,61 +16,69 @@ import org.bukkit.event.player.PlayerRespawnEvent;
|
|||
import org.bukkit.event.player.PlayerSwapHandItemsEvent;
|
||||
import org.bukkit.event.weather.WeatherChangeEvent;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
public class CancelListener implements Listener {
|
||||
private final MainLg plugin;
|
||||
|
||||
public class CancelListener implements Listener{
|
||||
private final MainLg plugin;
|
||||
public CancelListener(MainLg mainLg) {
|
||||
this.plugin = mainLg;
|
||||
}
|
||||
|
||||
public CancelListener (MainLg mainLg) {
|
||||
this.plugin = mainLg;
|
||||
}
|
||||
@EventHandler
|
||||
public void onPluie(WeatherChangeEvent e) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
@EventHandler
|
||||
public void onMove(PlayerMoveEvent e) {
|
||||
LGPlayer lgp = LGPlayer.thePlayer(plugin, e.getPlayer());
|
||||
if(lgp.getGame() != null && lgp.getGame().isStarted() && e.getFrom().distanceSquared(e.getTo()) > 0.001)
|
||||
e.setTo(e.getFrom());
|
||||
}
|
||||
@EventHandler
|
||||
public void onDamage(EntityDamageEvent e) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
@EventHandler
|
||||
public void onFood(FoodLevelChangeEvent e) {
|
||||
e.setFoodLevel(6);
|
||||
}
|
||||
@EventHandler
|
||||
public void onRespawn(PlayerRespawnEvent e) {
|
||||
e.setRespawnLocation(e.getPlayer().getLocation());
|
||||
}
|
||||
@EventHandler
|
||||
public void onRespawn(PlayerDeathEvent e) {
|
||||
e.setDeathMessage("");
|
||||
e.setKeepInventory(true);
|
||||
}
|
||||
/* @EventHandler
|
||||
public void onAchievement(PlayerAchievementAwardedEvent e) {
|
||||
e.setCancelled(true);
|
||||
}*/
|
||||
@EventHandler
|
||||
public void onEntitySpawn(EntitySpawnEvent e) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
@EventHandler
|
||||
public void onDrop(PlayerDropItemEvent e) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
@EventHandler
|
||||
public void onClickInventory(InventoryClickEvent e) {
|
||||
if(LGPlayer.thePlayer(plugin, (Player)e.getWhoClicked()).getGame() != null)
|
||||
e.setCancelled(true);
|
||||
}
|
||||
@EventHandler
|
||||
public void onClickInventory(PlayerSwapHandItemsEvent e) {
|
||||
if(LGPlayer.thePlayer(plugin, e.getPlayer()).getGame() != null)
|
||||
e.setCancelled(true);
|
||||
}
|
||||
@EventHandler
|
||||
public void onPluie(WeatherChangeEvent e) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onMove(PlayerMoveEvent e) {
|
||||
LGPlayer lgp = LGPlayer.thePlayer(plugin, e.getPlayer());
|
||||
if (lgp.getGame() != null && lgp.getGame().isStarted() && e.getFrom().distanceSquared(e.getTo()) > 0.001)
|
||||
e.setTo(e.getFrom());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDamage(EntityDamageEvent e) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onFood(FoodLevelChangeEvent e) {
|
||||
e.setFoodLevel(6);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onRespawn(PlayerRespawnEvent e) {
|
||||
e.setRespawnLocation(e.getPlayer().getLocation());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onRespawn(PlayerDeathEvent e) {
|
||||
e.setDeathMessage("");
|
||||
e.setKeepInventory(true);
|
||||
}
|
||||
|
||||
/* @EventHandler
|
||||
public void onAchievement(PlayerAchievementAwardedEvent e) {
|
||||
e.setCancelled(true);
|
||||
}*/
|
||||
@EventHandler
|
||||
public void onEntitySpawn(EntitySpawnEvent e) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDrop(PlayerDropItemEvent e) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onClickInventory(InventoryClickEvent e) {
|
||||
if (LGPlayer.thePlayer(plugin, (Player) e.getWhoClicked()).getGame() != null)
|
||||
e.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onClickInventory(PlayerSwapHandItemsEvent e) {
|
||||
if (LGPlayer.thePlayer(plugin, e.getPlayer()).getGame() != null)
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,27 +1,26 @@
|
|||
package fr.leomelki.loupgarou.listeners;
|
||||
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
public class ChatListener implements Listener {
|
||||
|
||||
public class ChatListener implements Listener{
|
||||
private final MainLg plugin;
|
||||
|
||||
private final MainLg plugin;
|
||||
public ChatListener(MainLg mainLg) {
|
||||
this.plugin = mainLg;
|
||||
}
|
||||
|
||||
public ChatListener(MainLg mainLg) {
|
||||
this.plugin = mainLg;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onChat(AsyncPlayerChatEvent e) {
|
||||
if(!e.isCancelled()) {
|
||||
LGPlayer player = LGPlayer.thePlayer(plugin, e.getPlayer());
|
||||
player.onChat(e.getMessage());
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onChat(AsyncPlayerChatEvent e) {
|
||||
if (!e.isCancelled()) {
|
||||
LGPlayer player = LGPlayer.thePlayer(plugin, e.getPlayer());
|
||||
player.onChat(e.getMessage());
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
package fr.leomelki.loupgarou.listeners;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import com.comphenix.protocol.wrappers.WrappedChatComponent;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerScoreboardTeam;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -13,81 +16,78 @@ import org.bukkit.event.player.PlayerResourcePackStatusEvent;
|
|||
import org.bukkit.event.player.PlayerResourcePackStatusEvent.Status;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import com.comphenix.protocol.wrappers.WrappedChatComponent;
|
||||
import java.util.Collections;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerScoreboardTeam;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
public class JoinListener implements Listener {
|
||||
private final MainLg plugin;
|
||||
|
||||
public class JoinListener implements Listener{
|
||||
private final MainLg plugin;
|
||||
public JoinListener(MainLg mainLg) {
|
||||
this.plugin = mainLg;
|
||||
}
|
||||
|
||||
public JoinListener(MainLg mainLg) {
|
||||
this.plugin = mainLg;
|
||||
}
|
||||
@EventHandler
|
||||
public void onJoin(PlayerJoinEvent e) {
|
||||
Player p = e.getPlayer();
|
||||
|
||||
@EventHandler
|
||||
public void onJoin(PlayerJoinEvent e) {
|
||||
Player p = e.getPlayer();
|
||||
WrapperPlayServerScoreboardTeam myTeam = new WrapperPlayServerScoreboardTeam();
|
||||
myTeam.setName(p.getName());
|
||||
myTeam.setPrefix(WrappedChatComponent.fromText(""));
|
||||
myTeam.setPlayers(Collections.singletonList(p.getName()));
|
||||
myTeam.setMode(0);
|
||||
boolean noSpec = p.getGameMode() != GameMode.SPECTATOR;
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
if (player != p) {
|
||||
if (player.getGameMode() != GameMode.SPECTATOR)
|
||||
player.hidePlayer(plugin, p);
|
||||
WrapperPlayServerScoreboardTeam team = new WrapperPlayServerScoreboardTeam();
|
||||
team.setName(player.getName());
|
||||
team.setPrefix(WrappedChatComponent.fromText(""));
|
||||
team.setPlayers(Collections.singletonList(player.getName()));
|
||||
team.setMode(0);
|
||||
|
||||
WrapperPlayServerScoreboardTeam myTeam = new WrapperPlayServerScoreboardTeam();
|
||||
myTeam.setName(p.getName());
|
||||
myTeam.setPrefix(WrappedChatComponent.fromText(""));
|
||||
myTeam.setPlayers(Collections.singletonList(p.getName()));
|
||||
myTeam.setMode(0);
|
||||
boolean noSpec = p.getGameMode() != GameMode.SPECTATOR;
|
||||
for (Player player : Bukkit.getOnlinePlayers())
|
||||
if (player != p) {
|
||||
if (player.getGameMode() != GameMode.SPECTATOR)
|
||||
player.hidePlayer(plugin, p);
|
||||
WrapperPlayServerScoreboardTeam team = new WrapperPlayServerScoreboardTeam();
|
||||
team.setName(player.getName());
|
||||
team.setPrefix(WrappedChatComponent.fromText(""));
|
||||
team.setPlayers(Collections.singletonList(player.getName()));
|
||||
team.setMode(0);
|
||||
team.sendPacket(p);
|
||||
myTeam.sendPacket(player);
|
||||
}
|
||||
p.setFoodLevel(6);
|
||||
if (e.getJoinMessage() == null || !e.getJoinMessage().equals("joinall")) {
|
||||
//p.getPlayer().setResourcePack("http://leomelki.fr/mcgames/ressourcepacks/v32/loup_garou.zip");
|
||||
} else {
|
||||
LGPlayer lgp = LGPlayer.thePlayer(plugin, e.getPlayer());
|
||||
lgp.showView();
|
||||
lgp.join(MainLg.getInstance().getCurrentGame());
|
||||
}
|
||||
if (noSpec)
|
||||
p.setGameMode(GameMode.ADVENTURE);
|
||||
e.setJoinMessage("");
|
||||
p.removePotionEffect(PotionEffectType.JUMP);
|
||||
p.removePotionEffect(PotionEffectType.INVISIBILITY);
|
||||
p.setWalkSpeed(0.2f);
|
||||
}
|
||||
|
||||
team.sendPacket(p);
|
||||
myTeam.sendPacket(player);
|
||||
}
|
||||
p.setFoodLevel(6);
|
||||
if (e.getJoinMessage() == null || !e.getJoinMessage().equals("joinall")) {
|
||||
//p.getPlayer().setResourcePack("http://leomelki.fr/mcgames/ressourcepacks/v32/loup_garou.zip");
|
||||
} else {
|
||||
LGPlayer lgp = LGPlayer.thePlayer(plugin, e.getPlayer());
|
||||
lgp.showView();
|
||||
lgp.join(MainLg.getInstance().getCurrentGame());
|
||||
}
|
||||
if(noSpec)
|
||||
p.setGameMode(GameMode.ADVENTURE);
|
||||
e.setJoinMessage("");
|
||||
p.removePotionEffect(PotionEffectType.JUMP);
|
||||
p.removePotionEffect(PotionEffectType.INVISIBILITY);
|
||||
p.setWalkSpeed(0.2f);
|
||||
}
|
||||
@EventHandler
|
||||
public void onResoucePack(PlayerResourcePackStatusEvent e) {
|
||||
if (e.getStatus() == Status.SUCCESSFULLY_LOADED) {
|
||||
Player p = e.getPlayer();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(plugin, p);
|
||||
lgp.showView();
|
||||
lgp.join(MainLg.getInstance().getCurrentGame());
|
||||
} else if(e.getStatus() == Status.DECLINED || e.getStatus() == Status.FAILED_DOWNLOAD)
|
||||
e.getPlayer().kickPlayer(MainLg.getPrefix()+"§cIl vous faut le resourcepack pour jouer ! ("+e.getStatus()+")");
|
||||
}
|
||||
@EventHandler
|
||||
public void onLeave(PlayerQuitEvent e) {
|
||||
Player p = e.getPlayer();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(plugin, p);
|
||||
if(lgp.getGame() != null) {
|
||||
lgp.leaveChat();
|
||||
if(lgp.getRole() != null && !lgp.isDead())
|
||||
lgp.getGame().kill(lgp, Reason.DISCONNECTED, true);
|
||||
lgp.getGame().getInGame().remove(lgp);
|
||||
lgp.getGame().checkLeave();
|
||||
}
|
||||
LGPlayer.removePlayer(p);
|
||||
lgp.remove();
|
||||
}
|
||||
@EventHandler
|
||||
public void onResoucePack(PlayerResourcePackStatusEvent e) {
|
||||
if (e.getStatus() == Status.SUCCESSFULLY_LOADED) {
|
||||
Player p = e.getPlayer();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(plugin, p);
|
||||
lgp.showView();
|
||||
lgp.join(MainLg.getInstance().getCurrentGame());
|
||||
} else if (e.getStatus() == Status.DECLINED || e.getStatus() == Status.FAILED_DOWNLOAD)
|
||||
e.getPlayer().kickPlayer(MainLg.getPrefix() + "§cIl vous faut le resourcepack pour jouer ! (" + e.getStatus() + ")");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onLeave(PlayerQuitEvent e) {
|
||||
Player p = e.getPlayer();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(plugin, p);
|
||||
if (lgp.getGame() != null) {
|
||||
lgp.leaveChat();
|
||||
if (lgp.getRole() != null && !lgp.isDead())
|
||||
lgp.getGame().kill(lgp, Reason.DISCONNECTED, true);
|
||||
lgp.getGame().getInGame().remove(lgp);
|
||||
lgp.getGame().checkLeave();
|
||||
}
|
||||
LGPlayer.removePlayer(p);
|
||||
lgp.remove();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,30 +1,28 @@
|
|||
package fr.leomelki.loupgarou.listeners;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.ScoreboardAction;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerScoreboardScore;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerScoreboardTeam;
|
||||
import fr.leomelki.loupgarou.events.LGGameJoinEvent;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
public class LoupGarouListener implements Listener {
|
||||
@EventHandler
|
||||
public void onGameJoin(LGGameJoinEvent e) {
|
||||
//Tous les loups-garous
|
||||
WrapperPlayServerScoreboardTeam teamDelete = new WrapperPlayServerScoreboardTeam();
|
||||
teamDelete.setMode(1);
|
||||
teamDelete.setName("loup_garou_list");
|
||||
@EventHandler
|
||||
public void onGameJoin(LGGameJoinEvent e) {
|
||||
//Tous les loups-garous
|
||||
WrapperPlayServerScoreboardTeam teamDelete = new WrapperPlayServerScoreboardTeam();
|
||||
teamDelete.setMode(1);
|
||||
teamDelete.setName("loup_garou_list");
|
||||
|
||||
teamDelete.sendPacket(e.getPlayer().getPlayer());
|
||||
teamDelete.sendPacket(e.getPlayer().getPlayer());
|
||||
|
||||
//Loup-Garou noir
|
||||
WrapperPlayServerScoreboardScore score = new WrapperPlayServerScoreboardScore();
|
||||
score.setObjectiveName("lg_scoreboard");
|
||||
score.setValue(0);
|
||||
score.setScoreName("été");
|
||||
score.setScoreboardAction(ScoreboardAction.REMOVE);
|
||||
score.sendPacket(e.getPlayer().getPlayer());
|
||||
}
|
||||
//Loup-Garou noir
|
||||
WrapperPlayServerScoreboardScore score = new WrapperPlayServerScoreboardScore();
|
||||
score.setObjectiveName("lg_scoreboard");
|
||||
score.setValue(0);
|
||||
score.setScoreName("été");
|
||||
score.setScoreboardAction(ScoreboardAction.REMOVE);
|
||||
score.sendPacket(e.getPlayer().getPlayer());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,27 +1,28 @@
|
|||
package fr.leomelki.loupgarou.listeners;
|
||||
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.player.PlayerAnimationEvent;
|
||||
import org.bukkit.event.player.PlayerAnimationType;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
public class VoteListener implements Listener {
|
||||
private final MainLg plugin;
|
||||
|
||||
public class VoteListener implements Listener{
|
||||
private final MainLg plugin;
|
||||
public VoteListener(MainLg mainLg) {
|
||||
this.plugin = mainLg;
|
||||
}
|
||||
|
||||
public VoteListener(MainLg mainLg) {
|
||||
this.plugin = mainLg;
|
||||
}
|
||||
@EventHandler
|
||||
public void onClick(PlayerAnimationEvent e) {
|
||||
if(e.getAnimationType() == PlayerAnimationType.ARM_SWING)
|
||||
LGPlayer.thePlayer(plugin, e.getPlayer()).chooseAction();
|
||||
}
|
||||
@EventHandler
|
||||
public void onBreak(BlockBreakEvent e) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
@EventHandler
|
||||
public void onClick(PlayerAnimationEvent e) {
|
||||
if (e.getAnimationType() == PlayerAnimationType.ARM_SWING)
|
||||
LGPlayer.thePlayer(plugin, e.getPlayer()).chooseAction();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onBreak(BlockBreakEvent e) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,116 +1,124 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGWinType;
|
||||
import fr.leomelki.loupgarou.events.LGDayEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGEndCheckEvent;
|
||||
import fr.leomelki.loupgarou.events.LGGameEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerGotKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGVoteEvent;
|
||||
import fr.leomelki.loupgarou.events.*;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
public class RAnge extends Role{
|
||||
public RAnge(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.NEUTRAL;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§d§lAnge";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de l'"+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes si tu remplis ton objectif";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu es §d§lNeutre§f et tu gagnes si tu remplis ton objectif. Ton objectif est d'être éliminé par le village lors du premier vote de jour. Si tu réussis, tu gagnes la partie. Sinon, tu deviens un §a§lVillageois§f.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
@EventHandler
|
||||
public void onVoteStart(LGVoteEvent e) {
|
||||
if(e.getGame() == getGame()) {
|
||||
night = getGame().getNight();
|
||||
vote = true;
|
||||
for(LGPlayer lgp : getPlayers())
|
||||
if(!lgp.isDead() && lgp.isRoleActive())
|
||||
lgp.sendMessage("§9§oFais en sorte que les autres votent contre toi !");
|
||||
}
|
||||
}
|
||||
boolean vote;
|
||||
@EventHandler
|
||||
public void onDayEnd(LGDayEndEvent e) {
|
||||
if(e.getGame() == getGame()) {
|
||||
if(getPlayers().size() > 0 && getGame().getNight() == night+1 && vote) {
|
||||
Role villageois = null;
|
||||
for(Role role : getGame().getRoles()) {
|
||||
if(role instanceof RVillageois)
|
||||
villageois = role;
|
||||
}
|
||||
import java.util.ArrayList;
|
||||
|
||||
if(villageois == null)
|
||||
getGame().getRoles().add(villageois = new RVillageois(getGame()));
|
||||
public class RAnge extends Role {
|
||||
final ArrayList<LGPlayer> winners = new ArrayList<>();
|
||||
boolean vote;
|
||||
int night = 1;
|
||||
|
||||
for(LGPlayer lgp : getPlayers()) {
|
||||
if(lgp.isRoleActive())
|
||||
lgp.sendMessage("§4§oTu as échoué, tu deviens §a§l§oVillageois§4§o...");
|
||||
lgp.setRole(villageois);
|
||||
villageois.join(lgp);
|
||||
}
|
||||
public RAnge(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
getPlayers().clear();
|
||||
getGame().updateRoleScoreboard();
|
||||
}
|
||||
vote = false;
|
||||
}
|
||||
}
|
||||
final ArrayList<LGPlayer> winners = new ArrayList<>();
|
||||
int night = 1;
|
||||
@EventHandler
|
||||
public void onDeath(LGPlayerGotKilledEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
if(e.getReason() == Reason.VOTE && e.getKilled().getRole() == this && getGame().getNight() == night && e.getKilled().isRoleActive())
|
||||
winners.add(e.getKilled());
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.NEUTRAL;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onWinCheck(LGEndCheckEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
if(winners.size() > 0)
|
||||
e.setWinType(winners.size() == 1 && winners.get(0).getCache().has("inlove") ? LGWinType.COUPLE : LGWinType.ANGE);
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onWin(LGGameEndEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
if(e.getWinType() == LGWinType.ANGE)
|
||||
e.getWinners().addAll(winners);
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§d§lAnge";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de l'" + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes si tu remplis ton objectif";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu es §d§lNeutre§f et tu gagnes si tu remplis ton objectif. Ton objectif est d'être éliminé par le village lors du premier vote de jour. Si tu réussis, tu gagnes la partie. Sinon, tu deviens un §a§lVillageois§f.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onVoteStart(LGVoteEvent e) {
|
||||
if (e.getGame() == getGame()) {
|
||||
night = getGame().getNight();
|
||||
vote = true;
|
||||
for (LGPlayer lgp : getPlayers())
|
||||
if (!lgp.isDead() && lgp.isRoleActive())
|
||||
lgp.sendMessage("§9§oFais en sorte que les autres votent contre toi !");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDayEnd(LGDayEndEvent e) {
|
||||
if (e.getGame() == getGame()) {
|
||||
if (getPlayers().size() > 0 && getGame().getNight() == night + 1 && vote) {
|
||||
Role villageois = null;
|
||||
for (Role role : getGame().getRoles()) {
|
||||
if (role instanceof RVillageois)
|
||||
villageois = role;
|
||||
}
|
||||
|
||||
if (villageois == null)
|
||||
getGame().getRoles().add(villageois = new RVillageois(getGame()));
|
||||
|
||||
for (LGPlayer lgp : getPlayers()) {
|
||||
if (lgp.isRoleActive())
|
||||
lgp.sendMessage("§4§oTu as échoué, tu deviens §a§l§oVillageois§4§o...");
|
||||
lgp.setRole(villageois);
|
||||
villageois.join(lgp);
|
||||
}
|
||||
|
||||
getPlayers().clear();
|
||||
getGame().updateRoleScoreboard();
|
||||
}
|
||||
vote = false;
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDeath(LGPlayerGotKilledEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
if (e.getReason() == Reason.VOTE && e.getKilled().getRole() == this && getGame().getNight() == night && e.getKilled().isRoleActive())
|
||||
winners.add(e.getKilled());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onWinCheck(LGEndCheckEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
if (winners.size() > 0)
|
||||
e.setWinType(winners.size() == 1 && winners.get(0).getCache().has("inlove") ? LGWinType.COUPLE : LGWinType.ANGE);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onWin(LGGameEndEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
if (e.getWinType() == LGWinType.ANGE)
|
||||
e.getWinners().addAll(winners);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,151 +1,154 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGWinType;
|
||||
import fr.leomelki.loupgarou.events.LGEndCheckEvent;
|
||||
import fr.leomelki.loupgarou.events.LGGameEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGNightEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGNightPlayerPreKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.*;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import fr.leomelki.loupgarou.events.LGPyromaneGasoilEvent;
|
||||
import fr.leomelki.loupgarou.events.LGRoleTurnEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGVampiredEvent;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
public class RAssassin extends Role{
|
||||
public RAssassin(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.NEUTRAL;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.SEUL;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§1§lAssassin";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de l'"+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes §7§lSEUL";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes §7§lSEUL§f. Chaque nuit, tu peux choisir un joueur à éliminer. Tu es immunisé contre l'attaque des §c§lLoups§f.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis un joueur à éliminer.";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "L'"+getName()+"§9 ne controle plus ses pulsions...";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
public class RAssassin extends Role {
|
||||
public RAssassin(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.NEUTRAL;
|
||||
}
|
||||
|
||||
player.choose(choosen -> {
|
||||
if(choosen != null && choosen != player) {
|
||||
getGame().kill(choosen, Reason.ASSASSIN);
|
||||
player.sendActionBarMessage("§e§l"+choosen.getName()+"§6 va mourir");
|
||||
player.sendMessage("§6Tu as choisi de tuer §7§l"+choosen.getName()+"§6.");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.SEUL;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onKill(LGNightPlayerPreKilledEvent e) {
|
||||
if(e.getKilled().getRole() == this && e.getReason() == Reason.LOUP_GAROU || e.getReason() == Reason.GM_LOUP_GAROU && e.getKilled().isRoleActive()) {//Les assassins ne peuvent pas mourir la nuit !
|
||||
e.setReason(Reason.DONT_DIE);
|
||||
e.getKilled().getCache().set("assassin_protected", true);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§1§lAssassin";
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onTour(LGRoleTurnEndEvent e) {
|
||||
if(e.getGame() == getGame()) {
|
||||
if(e.getPreviousRole() instanceof RLoupGarou) {
|
||||
for(LGPlayer lgp : getGame().getAlive())
|
||||
if(lgp.getCache().getBoolean("assassin_protected")) {
|
||||
for(LGPlayer l : getGame().getInGame())
|
||||
if(l.getRoleType() == RoleType.LOUP_GAROU)
|
||||
l.sendMessage("§cVotre cible est immunisée.");
|
||||
}
|
||||
}else if(e.getPreviousRole() instanceof RGrandMechantLoup) {
|
||||
for(LGPlayer lgp : getGame().getAlive())
|
||||
if(lgp.getCache().getBoolean("assassin_protected")) {
|
||||
for(LGPlayer l : e.getPreviousRole().getPlayers())
|
||||
l.sendMessage("§cVotre cible est immunisée.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de l'" + getName();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPyroGasoil(LGPyromaneGasoilEvent e) {
|
||||
if(e.getPlayer().getRole() == this && e.getPlayer().isRoleActive())
|
||||
e.setCancelled(true);
|
||||
}
|
||||
@EventHandler
|
||||
public void onVampired(LGVampiredEvent e) {
|
||||
if(e.getPlayer().getRole() == this && e.getPlayer().isRoleActive())
|
||||
e.setImmuned(true);
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes §7§lSEUL";
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDayStart(LGNightEndEvent e) {
|
||||
if(e.getGame() == getGame()) {
|
||||
for(LGPlayer lgp : getGame().getAlive())
|
||||
if(lgp.getCache().getBoolean("assassin_protected"))
|
||||
lgp.getCache().remove("assassin_protected");
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes §7§lSEUL§f. Chaque nuit, tu peux choisir un joueur à éliminer. Tu es immunisé contre l'attaque des §c§lLoups§f.";
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEndgameCheck(LGEndCheckEvent e) {
|
||||
if(e.getGame() == getGame() && e.getWinType() == LGWinType.SOLO) {
|
||||
if(getPlayers().size() > 0) {
|
||||
if(getPlayers().size() > 1)
|
||||
for(LGPlayer lgp : getPlayers())
|
||||
if(!lgp.isRoleActive())
|
||||
return;
|
||||
e.setWinType(LGWinType.ASSASSIN);
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis un joueur à éliminer.";
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onEndGame(LGGameEndEvent e) {
|
||||
if(e.getWinType() == LGWinType.ASSASSIN) {
|
||||
e.getWinners().clear();
|
||||
e.getWinners().addAll(getPlayers());
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "L'" + getName() + "§9 ne controle plus ses pulsions...";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez regardé aucun rôle", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§cVous n'avez pas utilisé votre pouvoir cette nuit.");
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
|
||||
player.choose(choosen -> {
|
||||
if (choosen != null && choosen != player) {
|
||||
getGame().kill(choosen, Reason.ASSASSIN);
|
||||
player.sendActionBarMessage("§e§l" + choosen.getName() + "§6 va mourir");
|
||||
player.sendMessage("§6Tu as choisi de tuer §7§l" + choosen.getName() + "§6.");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onKill(LGNightPlayerPreKilledEvent e) {
|
||||
if (e.getKilled().getRole() == this && e.getReason() == Reason.LOUP_GAROU || e.getReason() == Reason.GM_LOUP_GAROU && e.getKilled().isRoleActive()) {//Les assassins ne peuvent pas mourir la nuit !
|
||||
e.setReason(Reason.DONT_DIE);
|
||||
e.getKilled().getCache().set("assassin_protected", true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onTour(LGRoleTurnEndEvent e) {
|
||||
if (e.getGame() == getGame()) {
|
||||
if (e.getPreviousRole() instanceof RLoupGarou) {
|
||||
for (LGPlayer lgp : getGame().getAlive())
|
||||
if (lgp.getCache().getBoolean("assassin_protected")) {
|
||||
for (LGPlayer l : getGame().getInGame())
|
||||
if (l.getRoleType() == RoleType.LOUP_GAROU)
|
||||
l.sendMessage("§cVotre cible est immunisée.");
|
||||
}
|
||||
} else if (e.getPreviousRole() instanceof RGrandMechantLoup) {
|
||||
for (LGPlayer lgp : getGame().getAlive())
|
||||
if (lgp.getCache().getBoolean("assassin_protected")) {
|
||||
for (LGPlayer l : e.getPreviousRole().getPlayers())
|
||||
l.sendMessage("§cVotre cible est immunisée.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPyroGasoil(LGPyromaneGasoilEvent e) {
|
||||
if (e.getPlayer().getRole() == this && e.getPlayer().isRoleActive())
|
||||
e.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onVampired(LGVampiredEvent e) {
|
||||
if (e.getPlayer().getRole() == this && e.getPlayer().isRoleActive())
|
||||
e.setImmuned(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDayStart(LGNightEndEvent e) {
|
||||
if (e.getGame() == getGame()) {
|
||||
for (LGPlayer lgp : getGame().getAlive())
|
||||
if (lgp.getCache().getBoolean("assassin_protected"))
|
||||
lgp.getCache().remove("assassin_protected");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEndgameCheck(LGEndCheckEvent e) {
|
||||
if (e.getGame() == getGame() && e.getWinType() == LGWinType.SOLO) {
|
||||
if (getPlayers().size() > 0) {
|
||||
if (getPlayers().size() > 1)
|
||||
for (LGPlayer lgp : getPlayers())
|
||||
if (!lgp.isRoleActive())
|
||||
return;
|
||||
e.setWinType(LGWinType.ASSASSIN);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onEndGame(LGGameEndEvent e) {
|
||||
if (e.getWinType() == LGWinType.ASSASSIN) {
|
||||
e.getWinners().clear();
|
||||
e.getWinners().addAll(getPlayers());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez regardé aucun rôle", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§cVous n'avez pas utilisé votre pouvoir cette nuit.");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,148 +1,158 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.StringJoiner;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGGameEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
public class RBouffon extends Role{
|
||||
public RBouffon(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.NEUTRAL;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.NONE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§d§lBouffon";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes si tu remplis ton objectif";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu es §d§lNeutre§f et tu gagnes si tu remplis ton objectif. Ton objectif est d'être éliminé par le village lors de n’importe quel vote de jour. Si tu réussis, tu gagnes la partie, mais celle-ci continue. Tu pourras tuer l'une des personnes qui t'ont condamné.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis quelqu’un à hanter parmi ceux qui ont voté pour ta mort.";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "L'esprit vengeur du "+getName()+"§9 rôde sur le village...";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.StringJoiner;
|
||||
|
||||
public void onNightTurn(Runnable callback) {
|
||||
ArrayList<LGPlayer> players = (ArrayList<LGPlayer>) needToPlay.clone();
|
||||
new Runnable() {
|
||||
public class RBouffon extends Role {
|
||||
final ArrayList<LGPlayer> needToPlay = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
getGame().cancelWait();
|
||||
if(players.size() == 0) {
|
||||
onTurnFinish(callback);
|
||||
return;
|
||||
}
|
||||
LGPlayer player = players.remove(0);
|
||||
getGame().wait(getTimeout(), ()->{RBouffon.this.onNightTurnTimeout(player);this.run();}, (currentPlayer, secondsLeft)-> currentPlayer == player ? "§9§lC'est à ton tour !" : "§6C'est au tour "+getFriendlyName()+" §6(§e"+secondsLeft+" s§6)");
|
||||
player.sendMessage("§6"+getTask());
|
||||
// player.sendTitle("§6C'est à vous de jouer", "§a"+getTask(), 100);
|
||||
onNightTurn(player, this);
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
public boolean hasPlayersLeft() {
|
||||
return needToPlay.size() > 0;
|
||||
}
|
||||
public RBouffon(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.NEUTRAL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.NONE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
needToPlay.remove(player);
|
||||
player.showView();
|
||||
player.getCache().set("bouffon_win", true);
|
||||
List<LGPlayer> choosable = getGame().getVote().getVotes(player);
|
||||
StringJoiner sj = new StringJoiner("§6§o, §6§o§l");
|
||||
for(LGPlayer lgp : choosable)
|
||||
if(lgp.getPlayer() != null && lgp != player)
|
||||
sj.add(lgp.getName());
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§d§lBouffon";
|
||||
}
|
||||
|
||||
String toPut = sj.toString();
|
||||
if(toPut.length() == 0)
|
||||
player.sendMessage("§6§o§lPersonne§6§o n'a voté pour toi.");
|
||||
else
|
||||
player.sendMessage("§6§o§l"+toPut+"§6§o "+(toPut.contains(",") ? "ont" : "a")+" voté pour toi.");
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
player.choose((choosen)->{
|
||||
if(choosen != null) {
|
||||
if(!choosable.contains(choosen))
|
||||
player.sendMessage("§7§l"+choosen.getName()+"§4 n'a pas voté pour vous.");
|
||||
else if(choosen.isDead())
|
||||
player.sendMessage("§7§l"+choosen.getName()+"§4 est mort.");//fix
|
||||
else {
|
||||
player.stopChoosing();
|
||||
player.sendMessage("§6Ton fantôme va hanter l'esprit de §7§l"+choosen.getName()+"§6.");
|
||||
getGame().kill(choosen, Reason.BOUFFON);
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
}, player);
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes si tu remplis ton objectif";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu es §d§lNeutre§f et tu gagnes si tu remplis ton objectif. Ton objectif est d'être éliminé par le village lors de n’importe quel vote de jour. Si tu réussis, tu gagnes la partie, mais celle-ci continue. Tu pourras tuer l'une des personnes qui t'ont condamné.";
|
||||
}
|
||||
|
||||
final ArrayList<LGPlayer> needToPlay = new ArrayList<>();
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis quelqu’un à hanter parmi ceux qui ont voté pour ta mort.";
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerKill(LGPlayerKilledEvent e) {
|
||||
if(e.getKilled().getRole() == this && e.getReason() == Reason.VOTE && e.getKilled().isRoleActive()) {
|
||||
needToPlay.add(e.getKilled());
|
||||
getGame().broadcastMessage("§9§oQuelle erreur, le "+getName()+"§9§o aura droit à sa vengeance...");
|
||||
e.getKilled().sendMessage("§6Tu as rempli ta mission, l'heure de la vengeance a sonné.");
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "L'esprit vengeur du " + getName() + "§9 rôde sur le village...";
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onWin(LGGameEndEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
for(LGPlayer lgp : getGame().getInGame())
|
||||
if(lgp.getRole() == this && lgp.getCache().getBoolean("bouffon_win")) {
|
||||
e.getWinners().add(lgp);
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
getGame().broadcastMessage("§6§oLe "+getName()+"§6§o a rempli son objectif.");
|
||||
}
|
||||
}.runTaskAsynchronously(MainLg.getInstance());
|
||||
}
|
||||
}
|
||||
public void onNightTurn(Runnable callback) {
|
||||
ArrayList<LGPlayer> players = (ArrayList<LGPlayer>) needToPlay.clone();
|
||||
new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
getGame().cancelWait();
|
||||
if (players.size() == 0) {
|
||||
onTurnFinish(callback);
|
||||
return;
|
||||
}
|
||||
LGPlayer player = players.remove(0);
|
||||
getGame().wait(getTimeout(), () -> {
|
||||
RBouffon.this.onNightTurnTimeout(player);
|
||||
this.run();
|
||||
}, (currentPlayer, secondsLeft) -> currentPlayer == player ? "§9§lC'est à ton tour !" : "§6C'est au tour " + getFriendlyName() + " §6(§e" + secondsLeft + " s§6)");
|
||||
player.sendMessage("§6" + getTask());
|
||||
// player.sendTitle("§6C'est à vous de jouer", "§a"+getTask(), 100);
|
||||
onNightTurn(player, this);
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
|
||||
public boolean hasPlayersLeft() {
|
||||
return needToPlay.size() > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
needToPlay.remove(player);
|
||||
player.showView();
|
||||
player.getCache().set("bouffon_win", true);
|
||||
List<LGPlayer> choosable = getGame().getVote().getVotes(player);
|
||||
StringJoiner sj = new StringJoiner("§6§o, §6§o§l");
|
||||
for (LGPlayer lgp : choosable)
|
||||
if (lgp.getPlayer() != null && lgp != player)
|
||||
sj.add(lgp.getName());
|
||||
|
||||
String toPut = sj.toString();
|
||||
if (toPut.length() == 0)
|
||||
player.sendMessage("§6§o§lPersonne§6§o n'a voté pour toi.");
|
||||
else
|
||||
player.sendMessage("§6§o§l" + toPut + "§6§o " + (toPut.contains(",") ? "ont" : "a") + " voté pour toi.");
|
||||
|
||||
player.choose((choosen) -> {
|
||||
if (choosen != null) {
|
||||
if (!choosable.contains(choosen))
|
||||
player.sendMessage("§7§l" + choosen.getName() + "§4 n'a pas voté pour vous.");
|
||||
else if (choosen.isDead())
|
||||
player.sendMessage("§7§l" + choosen.getName() + "§4 est mort.");//fix
|
||||
else {
|
||||
player.stopChoosing();
|
||||
player.sendMessage("§6Ton fantôme va hanter l'esprit de §7§l" + choosen.getName() + "§6.");
|
||||
getGame().kill(choosen, Reason.BOUFFON);
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
}, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerKill(LGPlayerKilledEvent e) {
|
||||
if (e.getKilled().getRole() == this && e.getReason() == Reason.VOTE && e.getKilled().isRoleActive()) {
|
||||
needToPlay.add(e.getKilled());
|
||||
getGame().broadcastMessage("§9§oQuelle erreur, le " + getName() + "§9§o aura droit à sa vengeance...");
|
||||
e.getKilled().sendMessage("§6Tu as rempli ta mission, l'heure de la vengeance a sonné.");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onWin(LGGameEndEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
for (LGPlayer lgp : getGame().getInGame())
|
||||
if (lgp.getRole() == this && lgp.getCache().getBoolean("bouffon_win")) {
|
||||
e.getWinners().add(lgp);
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
getGame().broadcastMessage("§6§oLe " + getName() + "§6§o a rempli son objectif.");
|
||||
}
|
||||
}.runTaskAsynchronously(MainLg.getInstance());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,95 +1,105 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGNightEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGNightPlayerPreKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import fr.leomelki.loupgarou.events.LGRoleTurnEndEvent;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
public class RChaperonRouge extends Role{
|
||||
public RChaperonRouge(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lChaperon Rouge";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Tant que le §a§lChasseur§f est en vie, tu ne peux pas te faire tuer par les §c§lLoups§f pendant la nuit.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
public class RChaperonRouge extends Role {
|
||||
public RChaperonRouge(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onKill(LGNightPlayerPreKilledEvent e) {
|
||||
if(e.getKilled().getRole() == this && e.getReason() == Reason.LOUP_GAROU || e.getReason() == Reason.GM_LOUP_GAROU && e.getKilled().isRoleActive()) {
|
||||
for(Role role : getGame().getRoles())
|
||||
if(role instanceof RChasseur)
|
||||
if(role.getPlayers().size() > 0){
|
||||
e.getKilled().getCache().set("chaperon_kill", true);
|
||||
e.setReason(Reason.DONT_DIE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onTour(LGRoleTurnEndEvent e) {
|
||||
if(e.getGame() == getGame()) {
|
||||
if(e.getPreviousRole() instanceof RLoupGarou) {
|
||||
for(LGPlayer lgp : getGame().getAlive())
|
||||
if(lgp.getCache().getBoolean("chaperon_kill") && lgp.isRoleActive()) {
|
||||
for(LGPlayer l : getGame().getInGame())
|
||||
if(l.getRoleType() == RoleType.LOUP_GAROU)
|
||||
l.sendMessage("§cVotre cible est immunisée.");
|
||||
}
|
||||
}else if(e.getPreviousRole() instanceof RGrandMechantLoup) {
|
||||
for(LGPlayer lgp : getGame().getAlive())
|
||||
if(lgp.getCache().getBoolean("chaperon_kill") && lgp.isRoleActive()) {
|
||||
for(LGPlayer l : e.getPreviousRole().getPlayers())
|
||||
l.sendMessage("§cVotre cible est immunisée.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onDayStart(LGNightEndEvent e) {
|
||||
if(e.getGame() == getGame()) {
|
||||
for(LGPlayer lgp : getPlayers())
|
||||
if(lgp.getCache().getBoolean("chaperon_kill")) {
|
||||
lgp.getCache().remove("chaperon_kill");
|
||||
lgp.sendMessage("§9§oTu as été attaqué cette nuit.");
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lChaperon Rouge";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Tant que le §a§lChasseur§f est en vie, tu ne peux pas te faire tuer par les §c§lLoups§f pendant la nuit.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onKill(LGNightPlayerPreKilledEvent e) {
|
||||
if (e.getKilled().getRole() == this && e.getReason() == Reason.LOUP_GAROU || e.getReason() == Reason.GM_LOUP_GAROU && e.getKilled().isRoleActive()) {
|
||||
for (Role role : getGame().getRoles())
|
||||
if (role instanceof RChasseur)
|
||||
if (role.getPlayers().size() > 0) {
|
||||
e.getKilled().getCache().set("chaperon_kill", true);
|
||||
e.setReason(Reason.DONT_DIE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onTour(LGRoleTurnEndEvent e) {
|
||||
if (e.getGame() == getGame()) {
|
||||
if (e.getPreviousRole() instanceof RLoupGarou) {
|
||||
for (LGPlayer lgp : getGame().getAlive())
|
||||
if (lgp.getCache().getBoolean("chaperon_kill") && lgp.isRoleActive()) {
|
||||
for (LGPlayer l : getGame().getInGame())
|
||||
if (l.getRoleType() == RoleType.LOUP_GAROU)
|
||||
l.sendMessage("§cVotre cible est immunisée.");
|
||||
}
|
||||
} else if (e.getPreviousRole() instanceof RGrandMechantLoup) {
|
||||
for (LGPlayer lgp : getGame().getAlive())
|
||||
if (lgp.getCache().getBoolean("chaperon_kill") && lgp.isRoleActive()) {
|
||||
for (LGPlayer l : e.getPreviousRole().getPlayers())
|
||||
l.sendMessage("§cVotre cible est immunisée.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onDayStart(LGNightEndEvent e) {
|
||||
if (e.getGame() == getGame()) {
|
||||
for (LGPlayer lgp : getPlayers())
|
||||
if (lgp.getCache().getBoolean("chaperon_kill")) {
|
||||
lgp.getCache().remove("chaperon_kill");
|
||||
lgp.sendMessage("§9§oTu as été attaqué cette nuit.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGDayStartEvent;
|
||||
|
@ -12,125 +7,139 @@ import fr.leomelki.loupgarou.events.LGGameEndEvent;
|
|||
import fr.leomelki.loupgarou.events.LGNightStart;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
public class RChasseur extends Role{
|
||||
public RChasseur(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lChasseur";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. À ta mort, tu dois éliminer un joueur en utilisant ta dernière balle.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Tu dois choisir qui va mourir avec toi.";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le "+getName()+"§9 choisit qui il va emporter avec lui.";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
import java.util.ArrayList;
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
getGame().wait(getTimeout(), ()->{
|
||||
this.onNightTurnTimeout(player);
|
||||
callback.run();
|
||||
}, (currentPlayer, secondsLeft)-> currentPlayer == player ? "§9§lC'est à ton tour !" : "§6Le Chasseur choisit sa cible (§e"+secondsLeft+" s§6)");
|
||||
getGame().broadcastMessage("§9"+getBroadcastedTask());
|
||||
player.sendMessage("§6"+getTask());
|
||||
//player.sendTitle("§6C'est à vous de jouer", "§a"+getTask(), 60);
|
||||
player.choose((choosen)->{
|
||||
if(choosen != null) {
|
||||
player.stopChoosing();
|
||||
getGame().cancelWait();
|
||||
LGPlayerKilledEvent killEvent = new LGPlayerKilledEvent(getGame(), choosen, Reason.CHASSEUR);
|
||||
Bukkit.getPluginManager().callEvent(killEvent);
|
||||
if(killEvent.isCancelled())
|
||||
return;
|
||||
public class RChasseur extends Role {
|
||||
final ArrayList<LGPlayer> needToPlay = new ArrayList<>();
|
||||
|
||||
if(getGame().kill(killEvent.getKilled(), killEvent.getReason(), true))
|
||||
return;
|
||||
callback.run();
|
||||
}
|
||||
}, player);
|
||||
}
|
||||
public RChasseur(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
getGame().broadcastMessage("§9Il n'a pas tiré sur la détente...");
|
||||
player.stopChoosing();
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
final ArrayList<LGPlayer> needToPlay = new ArrayList<>();
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerKill(LGPlayerKilledEvent e) {
|
||||
if(e.getKilled().getRole() == this && e.getReason() != Reason.DISCONNECTED && e.getKilled().isRoleActive())
|
||||
needToPlay.add(e.getKilled());
|
||||
}
|
||||
@EventHandler
|
||||
public void onDayStart(LGDayStartEvent e) {
|
||||
if(e.getGame() != getGame())return;
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lChasseur";
|
||||
}
|
||||
|
||||
if(needToPlay.size() > 0)
|
||||
e.setCancelled(true);
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
if(!e.isCancelled())return;
|
||||
new Runnable() {
|
||||
public void run() {
|
||||
if(needToPlay.size() == 0) {
|
||||
e.getGame().startDay();
|
||||
return;
|
||||
}
|
||||
LGPlayer player = needToPlay.remove(0);
|
||||
onNightTurn(player, this);
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEndGame(LGGameEndEvent e) {
|
||||
if(e.getGame() != getGame())return;
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. À ta mort, tu dois éliminer un joueur en utilisant ta dernière balle.";
|
||||
}
|
||||
|
||||
if(needToPlay.size() > 0)
|
||||
e.setCancelled(true);
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Tu dois choisir qui va mourir avec toi.";
|
||||
}
|
||||
|
||||
if(!e.isCancelled())return;
|
||||
new Runnable() {
|
||||
public void run() {
|
||||
if(needToPlay.size() == 0) {
|
||||
e.getGame().checkEndGame(true);
|
||||
return;
|
||||
}
|
||||
LGPlayer player = needToPlay.remove(0);
|
||||
onNightTurn(player, this);
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le " + getName() + "§9 choisit qui il va emporter avec lui.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
getGame().wait(getTimeout(), () -> {
|
||||
this.onNightTurnTimeout(player);
|
||||
callback.run();
|
||||
}, (currentPlayer, secondsLeft) -> currentPlayer == player ? "§9§lC'est à ton tour !" : "§6Le Chasseur choisit sa cible (§e" + secondsLeft + " s§6)");
|
||||
getGame().broadcastMessage("§9" + getBroadcastedTask());
|
||||
player.sendMessage("§6" + getTask());
|
||||
//player.sendTitle("§6C'est à vous de jouer", "§a"+getTask(), 60);
|
||||
player.choose((choosen) -> {
|
||||
if (choosen != null) {
|
||||
player.stopChoosing();
|
||||
getGame().cancelWait();
|
||||
LGPlayerKilledEvent killEvent = new LGPlayerKilledEvent(getGame(), choosen, Reason.CHASSEUR);
|
||||
Bukkit.getPluginManager().callEvent(killEvent);
|
||||
if (killEvent.isCancelled())
|
||||
return;
|
||||
|
||||
if (getGame().kill(killEvent.getKilled(), killEvent.getReason(), true))
|
||||
return;
|
||||
callback.run();
|
||||
}
|
||||
}, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
getGame().broadcastMessage("§9Il n'a pas tiré sur la détente...");
|
||||
player.stopChoosing();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerKill(LGPlayerKilledEvent e) {
|
||||
if (e.getKilled().getRole() == this && e.getReason() != Reason.DISCONNECTED && e.getKilled().isRoleActive())
|
||||
needToPlay.add(e.getKilled());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDayStart(LGDayStartEvent e) {
|
||||
if (e.getGame() != getGame()) return;
|
||||
|
||||
if (needToPlay.size() > 0)
|
||||
e.setCancelled(true);
|
||||
|
||||
if (!e.isCancelled()) return;
|
||||
new Runnable() {
|
||||
public void run() {
|
||||
if (needToPlay.size() == 0) {
|
||||
e.getGame().startDay();
|
||||
return;
|
||||
}
|
||||
LGPlayer player = needToPlay.remove(0);
|
||||
onNightTurn(player, this);
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEndGame(LGGameEndEvent e) {
|
||||
if (e.getGame() != getGame()) return;
|
||||
|
||||
if (needToPlay.size() > 0)
|
||||
e.setCancelled(true);
|
||||
|
||||
if (!e.isCancelled()) return;
|
||||
new Runnable() {
|
||||
public void run() {
|
||||
if (needToPlay.size() == 0) {
|
||||
e.getGame().checkEndGame(true);
|
||||
return;
|
||||
}
|
||||
LGPlayer player = needToPlay.remove(0);
|
||||
onNightTurn(player, this);
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
|
||||
/* Deprecated by #onDayStart(LGDayStartEvent)
|
||||
*
|
||||
|
@ -153,22 +162,22 @@ public class RChasseur extends Role{
|
|||
}
|
||||
}*/
|
||||
|
||||
@EventHandler
|
||||
public void onNight(LGNightStart e) {
|
||||
if(e.getGame() == getGame() && !e.isCancelled()) {
|
||||
if(needToPlay.size() > 0) {
|
||||
e.setCancelled(true);
|
||||
new Runnable() {
|
||||
public void run() {
|
||||
if(needToPlay.size() == 0) {
|
||||
e.getGame().nextNight();
|
||||
return;
|
||||
}
|
||||
LGPlayer player = needToPlay.remove(0);
|
||||
onNightTurn(player, this);
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onNight(LGNightStart e) {
|
||||
if (e.getGame() == getGame() && !e.isCancelled()) {
|
||||
if (needToPlay.size() > 0) {
|
||||
e.setCancelled(true);
|
||||
new Runnable() {
|
||||
public void run() {
|
||||
if (needToPlay.size() == 0) {
|
||||
e.getGame().nextNight();
|
||||
return;
|
||||
}
|
||||
LGPlayer player = needToPlay.remove(0);
|
||||
onNightTurn(player, this);
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,83 +4,93 @@ import fr.leomelki.loupgarou.classes.LGGame;
|
|||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
|
||||
public class RChasseurDeVampire extends Role{
|
||||
public RChasseurDeVampire(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lChasseur de Vampires";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu peux traquer un joueur pour découvrir s'il s'agit d'un Vampire. Si c'est le cas, tu le tueras dans son sommeil. Si les §5§lVampires§f te prennent pour cible, tu seras immunisé contre leur attaque, et tu tueras le plus jeune d'entre eux.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis un joueur à pister.";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le "+getName()+"§9 traque ses proies...";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
for(LGPlayer lgp : getGame().getAlive())
|
||||
if(lgp.getRoleType() == RoleType.VAMPIRE)
|
||||
return super.hasPlayersLeft();
|
||||
return false;
|
||||
}
|
||||
public class RChasseurDeVampire extends Role {
|
||||
public RChasseurDeVampire(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
player.choose(choosen -> {
|
||||
if(choosen != null && choosen != player) {
|
||||
// player.sendMessage("§6Tu as choisi de rendre visite à §7§l"+choosen.getName()+"§6.");
|
||||
if(choosen.getCache().getBoolean("vampire") || choosen.getRole() instanceof RVampire) {
|
||||
getGame().kill(choosen, Reason.CHASSEUR_DE_VAMPIRE);
|
||||
player.sendMessage("§7§l"+choosen.getName()+"§6 est un §5§lVampire§6, à l'attaque.");
|
||||
player.sendActionBarMessage("§e§l"+choosen.getName()+"§6 va mourir");
|
||||
} else {
|
||||
player.sendMessage("§7§l"+choosen.getName()+"§6 n'est pas un §5§lVampire§6...");
|
||||
player.sendActionBarMessage("§e§l"+choosen.getName()+"§6 n'est pas un §5§lVampire");
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lChasseur de Vampires";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu peux traquer un joueur pour découvrir s'il s'agit d'un Vampire. Si c'est le cas, tu le tueras dans son sommeil. Si les §5§lVampires§f te prennent pour cible, tu seras immunisé contre leur attaque, et tu tueras le plus jeune d'entre eux.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis un joueur à pister.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le " + getName() + "§9 traque ses proies...";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
for (LGPlayer lgp : getGame().getAlive())
|
||||
if (lgp.getRoleType() == RoleType.VAMPIRE)
|
||||
return super.hasPlayersLeft();
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
|
||||
player.choose(choosen -> {
|
||||
if (choosen != null && choosen != player) {
|
||||
// player.sendMessage("§6Tu as choisi de rendre visite à §7§l"+choosen.getName()+"§6.");
|
||||
if (choosen.getCache().getBoolean("vampire") || choosen.getRole() instanceof RVampire) {
|
||||
getGame().kill(choosen, Reason.CHASSEUR_DE_VAMPIRE);
|
||||
player.sendMessage("§7§l" + choosen.getName() + "§6 est un §5§lVampire§6, à l'attaque.");
|
||||
player.sendActionBarMessage("§e§l" + choosen.getName() + "§6 va mourir");
|
||||
} else {
|
||||
player.sendMessage("§7§l" + choosen.getName() + "§6 n'est pas un §5§lVampire§6...");
|
||||
player.sendActionBarMessage("§e§l" + choosen.getName() + "§6 n'est pas un §5§lVampire");
|
||||
}
|
||||
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez regardé aucun rôle", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§cVous n'avez pas utilisé votre pouvoir cette nuit.");
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez regardé aucun rôle", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§cVous n'avez pas utilisé votre pouvoir cette nuit.");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventoryCustom;
|
||||
|
@ -15,163 +15,167 @@ import org.bukkit.inventory.ItemStack;
|
|||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
public class RChienLoup extends Role{
|
||||
static final ItemStack[] items = new ItemStack[9];
|
||||
static {
|
||||
items[3] = new ItemStack(Material.GOLDEN_APPLE);
|
||||
ItemMeta meta = items[3].getItemMeta();
|
||||
meta.setDisplayName("§2Devenir Villageois");
|
||||
meta.setLore(Arrays.asList("§7§lVous n'aurez aucun pouvoir mais",
|
||||
"§7§lresterez dans le camp du §a§lVillage§7§l."));
|
||||
items[3].setItemMeta(meta);
|
||||
items[5] = new ItemStack(Material.ROTTEN_FLESH);
|
||||
meta = items[5].getItemMeta();
|
||||
meta.setDisplayName("§cDevenir Loup-Garou");
|
||||
meta.setLore(Collections.singletonList("§cVous rejoindrez le camp des §c§lLoups"));
|
||||
items[5].setItemMeta(meta);
|
||||
}
|
||||
public class RChienLoup extends Role {
|
||||
static final ItemStack[] items = new ItemStack[9];
|
||||
|
||||
public RChienLoup(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
static {
|
||||
items[3] = new ItemStack(Material.GOLDEN_APPLE);
|
||||
ItemMeta meta = items[3].getItemMeta();
|
||||
meta.setDisplayName("§2Devenir Villageois");
|
||||
meta.setLore(Arrays.asList("§7§lVous n'aurez aucun pouvoir mais",
|
||||
"§7§lresterez dans le camp du §a§lVillage§7§l."));
|
||||
items[3].setItemMeta(meta);
|
||||
items[5] = new ItemStack(Material.ROTTEN_FLESH);
|
||||
meta = items[5].getItemMeta();
|
||||
meta.setDisplayName("§cDevenir Loup-Garou");
|
||||
meta.setLore(Collections.singletonList("§cVous rejoindrez le camp des §c§lLoups"));
|
||||
items[5].setItemMeta(meta);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lChien-Loup";
|
||||
}
|
||||
Runnable callback;
|
||||
boolean already;
|
||||
boolean inMenu;
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
public RChienLoup(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lChien-Loup";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Au début de la première nuit, tu peux choisir entre rester fidèle aux §a§lVillageois§f ou alors rejoindre le clan des §c§lLoups-Garous§f.";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Souhaites-tu devenir un §c§lLoup-Garou§6 ?";
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le "+getName()+"§9 pourrait trouver de nouveaux amis...";
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Au début de la première nuit, tu peux choisir entre rester fidèle aux §a§lVillageois§f ou alors rejoindre le clan des §c§lLoups-Garous§f.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Souhaites-tu devenir un §c§lLoup-Garou§6 ?";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
return super.hasPlayersLeft() && !already;
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le " + getName() + "§9 pourrait trouver de nouveaux amis...";
|
||||
}
|
||||
|
||||
Runnable callback;
|
||||
boolean already;
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
public void openInventory(Player player) {
|
||||
inMenu = true;
|
||||
Inventory inventory = Bukkit.createInventory(null, 9, "§7Choisis ton camp.");
|
||||
inventory.setContents(items.clone());
|
||||
player.closeInventory();
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
already = true;
|
||||
player.showView();
|
||||
this.callback = callback;
|
||||
openInventory(player.getPlayer());
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
closeInventory(player.getPlayer());
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'infectez personne", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
player.sendActionBarMessage("§6Tu rejoins le §a§lVillage.");
|
||||
player.sendMessage("§6Tu rejoins le §a§lVillage.");
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
boolean inMenu;
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player)e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
return super.hasPlayersLeft() && !already;
|
||||
}
|
||||
|
||||
if(lgp.getRole() != this || item == null || item.getItemMeta() == null)return;
|
||||
public void openInventory(Player player) {
|
||||
inMenu = true;
|
||||
Inventory inventory = Bukkit.createInventory(null, 9, "§7Choisis ton camp.");
|
||||
inventory.setContents(items.clone());
|
||||
player.closeInventory();
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
|
||||
if(item.getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
lgp.sendActionBarMessage("§6Tu resteras fidèle au §a§lVillage§6.");
|
||||
lgp.sendMessage("§6Tu resteras fidèle au §a§lVillage§6.");
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}else if(item.getItemMeta().getDisplayName().equals(items[5].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
already = true;
|
||||
player.showView();
|
||||
this.callback = callback;
|
||||
openInventory(player.getPlayer());
|
||||
}
|
||||
|
||||
lgp.sendActionBarMessage("§6Tu as changé de camp.");
|
||||
lgp.sendMessage("§6Tu as changé de camp.");
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
closeInventory(player.getPlayer());
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'infectez personne", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
player.sendActionBarMessage("§6Tu rejoins le §a§lVillage.");
|
||||
player.sendMessage("§6Tu rejoins le §a§lVillage.");
|
||||
}
|
||||
|
||||
//On le fait aussi rejoindre le camp des loups pour le tour pendant la nuit.
|
||||
RChienLoupLG lgChienLoup = null;
|
||||
for(Role role : getGame().getRoles())
|
||||
if(role instanceof RChienLoupLG)
|
||||
lgChienLoup = (RChienLoupLG)role;
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
|
||||
if(lgChienLoup == null)
|
||||
getGame().getRoles().add(lgChienLoup = new RChienLoupLG(getGame()));
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player) e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
|
||||
lgChienLoup.join(lgp, false);
|
||||
lgp.updateOwnSkin();
|
||||
if (lgp.getRole() != this || item == null || item.getItemMeta() == null) return;
|
||||
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
if (item.getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
lgp.sendActionBarMessage("§6Tu resteras fidèle au §a§lVillage§6.");
|
||||
lgp.sendMessage("§6Tu resteras fidèle au §a§lVillage§6.");
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
} else if (item.getItemMeta().getDisplayName().equals(items[5].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if(e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player)e.getPlayer());
|
||||
if(player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
lgp.sendActionBarMessage("§6Tu as changé de camp.");
|
||||
lgp.sendMessage("§6Tu as changé de camp.");
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
//On le fait aussi rejoindre le camp des loups pour le tour pendant la nuit.
|
||||
RChienLoupLG lgChienLoup = null;
|
||||
for (Role role : getGame().getRoles())
|
||||
if (role instanceof RChienLoupLG)
|
||||
lgChienLoup = (RChienLoupLG) role;
|
||||
|
||||
if (lgChienLoup == null)
|
||||
getGame().getRoles().add(lgChienLoup = new RChienLoupLG(getGame()));
|
||||
|
||||
lgChienLoup.join(lgp, false);
|
||||
lgp.updateOwnSkin();
|
||||
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if (e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player) e.getPlayer());
|
||||
if (player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,72 +1,74 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGCustomItems;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
public class RChienLoupLG extends Role{
|
||||
public RChienLoupLG(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
for(LGPlayer lgp : getPlayers())
|
||||
if(lgp.getPlayer() != null && lgp.getPlayer().hasPotionEffect(PotionEffectType.INVISIBILITY))
|
||||
return "§c§lChien-Loup";
|
||||
return (getPlayers().size() > 0 ? "§a" : "§c")+"§lChien-Loup";
|
||||
}
|
||||
public class RChienLoupLG extends Role {
|
||||
public RChienLoupLG(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
for (LGPlayer lgp : getPlayers())
|
||||
if (lgp.getPlayer() != null && lgp.getPlayer().hasPotionEffect(PotionEffectType.INVISIBILITY))
|
||||
return "§c§lChien-Loup";
|
||||
return (getPlayers().size() > 0 ? "§a" : "§c") + "§lChien-Loup";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Au début de la première nuit, tu peux choisir entre rester fidèle aux §a§lVillageois§f ou alors rejoindre le clan des §c§lLoups-Garous§f.";
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Souhaites-tu devenir un §c§lLoup-Garou§6 ?";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Au début de la première nuit, tu peux choisir entre rester fidèle aux §a§lVillageois§f ou alors rejoindre le clan des §c§lLoups-Garous§f.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le "+getName()+"§9 pourrait trouver de nouveaux amis...";
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.LOUP_GAROU;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.LOUP_GAROU;
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Souhaites-tu devenir un §c§lLoup-Garou§6 ?";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le " + getName() + "§9 pourrait trouver de nouveaux amis...";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
super.join(player, sendMessage);
|
||||
player.setRole(this);
|
||||
LGCustomItems.updateItem(player);
|
||||
for(Role role : getGame().getRoles())
|
||||
if(role instanceof RLoupGarou) {
|
||||
role.join(player, false);
|
||||
for(LGPlayer lgp : role.getPlayers())
|
||||
if(lgp != player)
|
||||
lgp.sendMessage("§7§l"+player.getName()+"§6 a rejoint les §c§lLoups-Garous§6.");
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.LOUP_GAROU;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.LOUP_GAROU;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
super.join(player, sendMessage);
|
||||
player.setRole(this);
|
||||
LGCustomItems.updateItem(player);
|
||||
for (Role role : getGame().getRoles())
|
||||
if (role instanceof RLoupGarou) {
|
||||
role.join(player, false);
|
||||
for (LGPlayer lgp : role.getPlayers())
|
||||
if (lgp != player)
|
||||
lgp.sendMessage("§7§l" + player.getName() + "§6 a rejoint les §c§lLoups-Garous§6.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,106 +1,114 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGDayEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGVoteEvent;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
public class RCorbeau extends Role{
|
||||
public RCorbeau(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lCorbeau";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu peux désigner un joueur qui se retrouvera le lendemain avec deux voix contre lui au vote.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Tu peux choisir un joueur qui aura deux votes contre lui.";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le "+getName()+"§9 s'apprête à diffamer quelqu'un...";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
public class RCorbeau extends Role {
|
||||
public RCorbeau(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
player.choose(choosen -> {
|
||||
if(choosen != null && choosen != player) {
|
||||
//player.sendTitle("§6Vous avez regardé un rôle", "§e§l"+choosen.getName()+"§6§l est §e§l"+choosen.getRole().getName(), 5*20);
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
choosen.getCache().set("corbeau_selected", true);
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lCorbeau";
|
||||
}
|
||||
|
||||
player.sendActionBarMessage("§e§l"+choosen.getName()+"§6 aura deux votes contre lui");
|
||||
player.sendMessage("§6Tu nuis à la réputation de §7§l"+choosen.getName()+"§6.");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onNightStart(LGDayEndEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
for(LGPlayer lgp : getGame().getAlive())
|
||||
lgp.getCache().remove("corbeau_selected");
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onVoteStart(LGVoteEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
for(LGPlayer lgp : getGame().getAlive())
|
||||
if(lgp.getCache().getBoolean("corbeau_selected")) {
|
||||
lgp.getCache().remove("corbeau_selected");
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu peux désigner un joueur qui se retrouvera le lendemain avec deux voix contre lui au vote.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
MainLg plugin = getGame().getPlugin();
|
||||
getGame().getVote().vote(new LGPlayer(plugin, "§a§lLe corbeau"), lgp);
|
||||
getGame().getVote().vote(new LGPlayer(plugin, "§a§lLe corbeau"), lgp);//fix
|
||||
getGame().broadcastMessage("§7§l"+ lgp.getName()+"§6 a reçu la visite du "+getName()+"§6.");
|
||||
}
|
||||
}.runTask(MainLg.getInstance());
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Tu peux choisir un joueur qui aura deux votes contre lui.";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le " + getName() + "§9 s'apprête à diffamer quelqu'un...";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez regardé aucun rôle", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§cVous n'avez pas utilisé votre pouvoir cette nuit.");
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
|
||||
player.choose(choosen -> {
|
||||
if (choosen != null && choosen != player) {
|
||||
//player.sendTitle("§6Vous avez regardé un rôle", "§e§l"+choosen.getName()+"§6§l est §e§l"+choosen.getRole().getName(), 5*20);
|
||||
|
||||
choosen.getCache().set("corbeau_selected", true);
|
||||
|
||||
player.sendActionBarMessage("§e§l" + choosen.getName() + "§6 aura deux votes contre lui");
|
||||
player.sendMessage("§6Tu nuis à la réputation de §7§l" + choosen.getName() + "§6.");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onNightStart(LGDayEndEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
for (LGPlayer lgp : getGame().getAlive())
|
||||
lgp.getCache().remove("corbeau_selected");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onVoteStart(LGVoteEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
for (LGPlayer lgp : getGame().getAlive())
|
||||
if (lgp.getCache().getBoolean("corbeau_selected")) {
|
||||
lgp.getCache().remove("corbeau_selected");
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
MainLg plugin = getGame().getPlugin();
|
||||
getGame().getVote().vote(new LGPlayer(plugin, "§a§lLe corbeau"), lgp);
|
||||
getGame().getVote().vote(new LGPlayer(plugin, "§a§lLe corbeau"), lgp);//fix
|
||||
getGame().broadcastMessage("§7§l" + lgp.getName() + "§6 a reçu la visite du " + getName() + "§6.");
|
||||
}
|
||||
}.runTask(MainLg.getInstance());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez regardé aucun rôle", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§cVous n'avez pas utilisé votre pouvoir cette nuit.");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,16 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.ItemSlot;
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher.WrappedDataWatcherObject;
|
||||
import com.comphenix.protocol.wrappers.WrappedWatchableObject;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.*;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGWinType;
|
||||
import fr.leomelki.loupgarou.events.*;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
|
@ -13,260 +21,253 @@ import org.bukkit.event.player.AsyncPlayerChatEvent;
|
|||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.ItemSlot;
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher.WrappedDataWatcherObject;
|
||||
import com.comphenix.protocol.wrappers.WrappedWatchableObject;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerEntityDestroy;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerEntityEquipment;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerEntityLook;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerEntityMetadata;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerSpawnEntityLiving;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGWinType;
|
||||
import fr.leomelki.loupgarou.events.LGEndCheckEvent;
|
||||
import fr.leomelki.loupgarou.events.LGGameEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerGotKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import fr.leomelki.loupgarou.events.LGUpdatePrefixEvent;
|
||||
public class RCupidon extends Role {
|
||||
final WrappedDataWatcherObject invisible = new WrappedDataWatcherObject(0, WrappedDataWatcher.Registry.get(Byte.class));
|
||||
final WrappedDataWatcherObject noGravity = new WrappedDataWatcherObject(5, WrappedDataWatcher.Registry.get(Boolean.class));
|
||||
|
||||
public class RCupidon extends Role{
|
||||
public RCupidon(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lCupidon";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Dès le début de la partie, tu dois former un couple de deux joueurs. Leur objectif sera de survivre ensemble, car si l'un d'eux meurt, l'autre se suicidera.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis deux joueurs à mettre en couple.";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return getName()+"§9 choisit deux âmes à unir.";
|
||||
}
|
||||
public RCupidon(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
return getGame().getNight() == 1;
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
player.choose(choosen -> {
|
||||
if(choosen != null) {
|
||||
if(player.getCache().has("cupidon_first")) {
|
||||
LGPlayer first = player.getCache().remove("cupidon_first");
|
||||
if(first == choosen) {
|
||||
int entityId = Integer.MAX_VALUE-choosen.getPlayer().getEntityId();
|
||||
WrapperPlayServerEntityDestroy destroy = new WrapperPlayServerEntityDestroy();
|
||||
destroy.setEntityIds(new int[] {entityId});
|
||||
destroy.sendPacket(player.getPlayer());
|
||||
} else {
|
||||
// sendHead(player, choosen);
|
||||
int entityId = Integer.MAX_VALUE-first.getPlayer().getEntityId();
|
||||
WrapperPlayServerEntityDestroy destroy = new WrapperPlayServerEntityDestroy();
|
||||
destroy.setEntityIds(new int[] {entityId});
|
||||
destroy.sendPacket(player.getPlayer());
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lCupidon";
|
||||
}
|
||||
|
||||
setInLove(first, choosen);
|
||||
player.sendMessage("§7§l"+first.getName()+"§9 et §7§l"+choosen.getName()+"§9 sont désormais follement amoureux.");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
} else {
|
||||
sendHead(player, choosen);
|
||||
player.getCache().set("cupidon_first", choosen);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
protected void setInLove(LGPlayer player1, LGPlayer player2) {
|
||||
player1.getCache().set("inlove", player2);
|
||||
player1.sendMessage("§9Tu tombes amoureux de §7§l"+player2.getName()+"§9, il est "+player2.getRole().getName());
|
||||
player1.sendMessage("§9§oTu peux lui parler en mettant un §e!§9 devant ton message.");
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de " + getName();
|
||||
}
|
||||
|
||||
player2.getCache().set("inlove", player1);
|
||||
player2.sendMessage("§9Tu tombes amoureux de §7§l"+player1.getName()+"§9, il est "+player1.getRole().getName());
|
||||
player2.sendMessage("§9§oTu peux lui parler en mettant un §e!§9 devant ton message.");
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Dès le début de la partie, tu dois former un couple de deux joueurs. Leur objectif sera de survivre ensemble, car si l'un d'eux meurt, l'autre se suicidera.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis deux joueurs à mettre en couple.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return getName() + "§9 choisit deux âmes à unir.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
return getGame().getNight() == 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
|
||||
player.choose(choosen -> {
|
||||
if (choosen != null) {
|
||||
if (player.getCache().has("cupidon_first")) {
|
||||
LGPlayer first = player.getCache().remove("cupidon_first");
|
||||
if (first == choosen) {
|
||||
int entityId = Integer.MAX_VALUE - choosen.getPlayer().getEntityId();
|
||||
WrapperPlayServerEntityDestroy destroy = new WrapperPlayServerEntityDestroy();
|
||||
destroy.setEntityIds(new int[]{entityId});
|
||||
destroy.sendPacket(player.getPlayer());
|
||||
} else {
|
||||
// sendHead(player, choosen);
|
||||
int entityId = Integer.MAX_VALUE - first.getPlayer().getEntityId();
|
||||
WrapperPlayServerEntityDestroy destroy = new WrapperPlayServerEntityDestroy();
|
||||
destroy.setEntityIds(new int[]{entityId});
|
||||
destroy.sendPacket(player.getPlayer());
|
||||
|
||||
setInLove(first, choosen);
|
||||
player.sendMessage("§7§l" + first.getName() + "§9 et §7§l" + choosen.getName() + "§9 sont désormais follement amoureux.");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
} else {
|
||||
sendHead(player, choosen);
|
||||
player.getCache().set("cupidon_first", choosen);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected void setInLove(LGPlayer player1, LGPlayer player2) {
|
||||
player1.getCache().set("inlove", player2);
|
||||
player1.sendMessage("§9Tu tombes amoureux de §7§l" + player2.getName() + "§9, il est " + player2.getRole().getName());
|
||||
player1.sendMessage("§9§oTu peux lui parler en mettant un §e!§9 devant ton message.");
|
||||
|
||||
player2.getCache().set("inlove", player1);
|
||||
player2.sendMessage("§9Tu tombes amoureux de §7§l" + player1.getName() + "§9, il est " + player1.getRole().getName());
|
||||
player2.sendMessage("§9§oTu peux lui parler en mettant un §e!§9 devant ton message.");
|
||||
|
||||
/* sendHead(player1, player2);
|
||||
sendHead(player2, player1);*/
|
||||
|
||||
//On peut créer des cheats grâce à ça (qui permettent de savoir qui est en couple)
|
||||
player1.updatePrefix();
|
||||
player2.updatePrefix();
|
||||
}
|
||||
//On peut créer des cheats grâce à ça (qui permettent de savoir qui est en couple)
|
||||
player1.updatePrefix();
|
||||
player2.updatePrefix();
|
||||
}
|
||||
|
||||
final WrappedDataWatcherObject invisible = new WrappedDataWatcherObject(0, WrappedDataWatcher.Registry.get(Byte.class));
|
||||
final WrappedDataWatcherObject noGravity = new WrappedDataWatcherObject(5, WrappedDataWatcher.Registry.get(Boolean.class));
|
||||
protected void sendHead(LGPlayer to, LGPlayer ofWho) {
|
||||
int entityId = Integer.MAX_VALUE-ofWho.getPlayer().getEntityId();
|
||||
WrapperPlayServerSpawnEntityLiving spawn = new WrapperPlayServerSpawnEntityLiving();
|
||||
spawn.setEntityID(entityId);
|
||||
spawn.setType(EntityType.DROPPED_ITEM);
|
||||
//spawn.setMetadata(new WrappedDataWatcher(Arrays.asList(new WrappedWatchableObject(invisible, (byte)0x20), new WrappedWatchableObject(noGravity, true))));
|
||||
Location loc = ofWho.getPlayer().getLocation();
|
||||
spawn.setX(loc.getX());
|
||||
spawn.setY(loc.getY()+1.9);
|
||||
spawn.setZ(loc.getZ());
|
||||
spawn.setHeadPitch(0);
|
||||
Location toLoc = to.getPlayer().getLocation();
|
||||
double diffX = loc.getX()-toLoc.getX(),
|
||||
diffZ = loc.getZ()-toLoc.getZ();
|
||||
float yaw = 180-((float) Math.toDegrees(Math.atan2(diffX, diffZ)));
|
||||
protected void sendHead(LGPlayer to, LGPlayer ofWho) {
|
||||
int entityId = Integer.MAX_VALUE - ofWho.getPlayer().getEntityId();
|
||||
WrapperPlayServerSpawnEntityLiving spawn = new WrapperPlayServerSpawnEntityLiving();
|
||||
spawn.setEntityID(entityId);
|
||||
spawn.setType(EntityType.DROPPED_ITEM);
|
||||
//spawn.setMetadata(new WrappedDataWatcher(Arrays.asList(new WrappedWatchableObject(invisible, (byte)0x20), new WrappedWatchableObject(noGravity, true))));
|
||||
Location loc = ofWho.getPlayer().getLocation();
|
||||
spawn.setX(loc.getX());
|
||||
spawn.setY(loc.getY() + 1.9);
|
||||
spawn.setZ(loc.getZ());
|
||||
spawn.setHeadPitch(0);
|
||||
Location toLoc = to.getPlayer().getLocation();
|
||||
double diffX = loc.getX() - toLoc.getX(),
|
||||
diffZ = loc.getZ() - toLoc.getZ();
|
||||
float yaw = 180 - ((float) Math.toDegrees(Math.atan2(diffX, diffZ)));
|
||||
|
||||
spawn.setYaw(yaw);
|
||||
spawn.sendPacket(to.getPlayer());
|
||||
spawn.setYaw(yaw);
|
||||
spawn.sendPacket(to.getPlayer());
|
||||
|
||||
WrapperPlayServerEntityLook look = new WrapperPlayServerEntityLook();
|
||||
look.setEntityID(entityId);
|
||||
look.setPitch(0);
|
||||
look.setYaw(yaw);
|
||||
look.sendPacket(to.getPlayer());
|
||||
WrapperPlayServerEntityLook look = new WrapperPlayServerEntityLook();
|
||||
look.setEntityID(entityId);
|
||||
look.setPitch(0);
|
||||
look.setYaw(yaw);
|
||||
look.sendPacket(to.getPlayer());
|
||||
|
||||
WrapperPlayServerEntityMetadata meta = new WrapperPlayServerEntityMetadata();
|
||||
meta.setEntityID(entityId);
|
||||
meta.setMetadata(Arrays.asList(new WrappedWatchableObject(invisible, (byte)0x20), new WrappedWatchableObject(noGravity, true)));
|
||||
meta.sendPacket(to.getPlayer());
|
||||
WrapperPlayServerEntityMetadata meta = new WrapperPlayServerEntityMetadata();
|
||||
meta.setEntityID(entityId);
|
||||
meta.setMetadata(Arrays.asList(new WrappedWatchableObject(invisible, (byte) 0x20), new WrappedWatchableObject(noGravity, true)));
|
||||
meta.sendPacket(to.getPlayer());
|
||||
|
||||
|
||||
new BukkitRunnable() {
|
||||
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
WrapperPlayServerEntityEquipment equip = new WrapperPlayServerEntityEquipment();
|
||||
equip.setEntityID(entityId);
|
||||
equip.setSlot(ItemSlot.HEAD);
|
||||
ItemStack skull = new ItemStack(Material.SUGAR);
|
||||
equip.setItem(skull);
|
||||
equip.sendPacket(to.getPlayer());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
WrapperPlayServerEntityEquipment equip = new WrapperPlayServerEntityEquipment();
|
||||
equip.setEntityID(entityId);
|
||||
equip.setSlot(ItemSlot.HEAD);
|
||||
ItemStack skull = new ItemStack(Material.SUGAR);
|
||||
equip.setItem(skull);
|
||||
equip.sendPacket(to.getPlayer());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.getCache().remove("cupidon_first");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez mis personne en couple", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§9Tu n'as pas créé de couple.");
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.getCache().remove("cupidon_first");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez mis personne en couple", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§9Tu n'as pas créé de couple.");
|
||||
}
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerKill(LGPlayerGotKilledEvent e) {
|
||||
if(e.getGame() == getGame() && e.getKilled().getCache().has("inlove") && !e.getKilled().getCache().<LGPlayer>get("inlove").isDead()) {
|
||||
LGPlayer killed = e.getKilled().getCache().get("inlove");
|
||||
LGPlayerKilledEvent event = new LGPlayerKilledEvent(getGame(), killed, Reason.LOVE);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if(!event.isCancelled())
|
||||
getGame().kill(event.getKilled(), event.getReason(), false);
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onPlayerKill(LGPlayerGotKilledEvent e) {
|
||||
if (e.getGame() == getGame() && e.getKilled().getCache().has("inlove") && !e.getKilled().getCache().<LGPlayer>get("inlove").isDead()) {
|
||||
LGPlayer killed = e.getKilled().getCache().get("inlove");
|
||||
LGPlayerKilledEvent event = new LGPlayerKilledEvent(getGame(), killed, Reason.LOVE);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if (!event.isCancelled())
|
||||
getGame().kill(event.getKilled(), event.getReason(), false);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onGameEnd(LGGameEndEvent e) {
|
||||
if(e.getGame() == getGame()) {
|
||||
WrapperPlayServerEntityDestroy destroy = new WrapperPlayServerEntityDestroy();
|
||||
ArrayList<Integer> ids = new ArrayList<>();
|
||||
for(LGPlayer lgp : getGame().getInGame())
|
||||
ids.add(Integer.MAX_VALUE-lgp.getPlayer().getEntityId());
|
||||
int[] intList = new int[ids.size()];
|
||||
for(int i = 0;i<ids.size();i++)
|
||||
intList[i] = ids.get(i);
|
||||
destroy.setEntityIds(intList);
|
||||
for(LGPlayer lgp : getGame().getInGame())
|
||||
destroy.sendPacket(lgp.getPlayer());
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onGameEnd(LGGameEndEvent e) {
|
||||
if (e.getGame() == getGame()) {
|
||||
WrapperPlayServerEntityDestroy destroy = new WrapperPlayServerEntityDestroy();
|
||||
ArrayList<Integer> ids = new ArrayList<>();
|
||||
for (LGPlayer lgp : getGame().getInGame())
|
||||
ids.add(Integer.MAX_VALUE - lgp.getPlayer().getEntityId());
|
||||
int[] intList = new int[ids.size()];
|
||||
for (int i = 0; i < ids.size(); i++)
|
||||
intList[i] = ids.get(i);
|
||||
destroy.setEntityIds(intList);
|
||||
for (LGPlayer lgp : getGame().getInGame())
|
||||
destroy.sendPacket(lgp.getPlayer());
|
||||
|
||||
for(LGPlayer lgp : getGame().getInGame())
|
||||
if(lgp.getCache().has("inlove")) {
|
||||
if(e.getWinType() == LGWinType.COUPLE) {
|
||||
if(!e.getWinners().contains(lgp))
|
||||
e.getWinners().add(lgp);
|
||||
} else {
|
||||
LGPlayer player2 = lgp.getCache().get("inlove");
|
||||
boolean winEnCouple = (lgp.getRoleType() == RoleType.LOUP_GAROU) != (player2.getRoleType() == RoleType.LOUP_GAROU) || lgp.getRoleWinType() == RoleWinType.SEUL || player2.getRoleWinType() == RoleWinType.SEUL;
|
||||
if(winEnCouple) {
|
||||
System.out.println(lgp.getName()+" ne peut pas gagner car il était en couple !");
|
||||
e.getWinners().remove(lgp);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (LGPlayer lgp : getGame().getInGame())
|
||||
if (lgp.getCache().has("inlove")) {
|
||||
if (e.getWinType() == LGWinType.COUPLE) {
|
||||
if (!e.getWinners().contains(lgp))
|
||||
e.getWinners().add(lgp);
|
||||
} else {
|
||||
LGPlayer player2 = lgp.getCache().get("inlove");
|
||||
boolean winEnCouple = (lgp.getRoleType() == RoleType.LOUP_GAROU) != (player2.getRoleType() == RoleType.LOUP_GAROU) || lgp.getRoleWinType() == RoleWinType.SEUL || player2.getRoleWinType() == RoleWinType.SEUL;
|
||||
if (winEnCouple) {
|
||||
System.out.println(lgp.getName() + " ne peut pas gagner car il était en couple !");
|
||||
e.getWinners().remove(lgp);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEndCheck(LGEndCheckEvent e) {
|
||||
if(e.getGame() == getGame()) {
|
||||
ArrayList<LGPlayer> winners = new ArrayList<>();
|
||||
for(LGPlayer lgp : getGame().getAlive())
|
||||
if(lgp.getRoleWinType() != RoleWinType.NONE)
|
||||
winners.add(lgp);
|
||||
if(winners.size() == 2) {
|
||||
LGPlayer player1 = winners.get(0),
|
||||
player2 = winners.get(1);
|
||||
boolean winEnCouple = (player1.getRoleType() == RoleType.LOUP_GAROU) != (player2.getRoleType() == RoleType.LOUP_GAROU) || player1.getRoleWinType() == RoleWinType.SEUL || player2.getRoleWinType() == RoleWinType.SEUL;
|
||||
if(player1.getCache().get("inlove") == player2 && /*player1.isABadGuy() != player2.isABadGuy()*/ (player1.getRoleType() == RoleType.LOUP_GAROU) != (player2.getRoleType() == RoleType.LOUP_GAROU))
|
||||
e.setWinType(LGWinType.COUPLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onEndCheck(LGEndCheckEvent e) {
|
||||
if (e.getGame() == getGame()) {
|
||||
ArrayList<LGPlayer> winners = new ArrayList<>();
|
||||
for (LGPlayer lgp : getGame().getAlive())
|
||||
if (lgp.getRoleWinType() != RoleWinType.NONE)
|
||||
winners.add(lgp);
|
||||
if (winners.size() == 2) {
|
||||
LGPlayer player1 = winners.get(0),
|
||||
player2 = winners.get(1);
|
||||
boolean winEnCouple = (player1.getRoleType() == RoleType.LOUP_GAROU) != (player2.getRoleType() == RoleType.LOUP_GAROU) || player1.getRoleWinType() == RoleWinType.SEUL || player2.getRoleWinType() == RoleWinType.SEUL;
|
||||
if (player1.getCache().get("inlove") == player2 && /*player1.isABadGuy() != player2.isABadGuy()*/ (player1.getRoleType() == RoleType.LOUP_GAROU) != (player2.getRoleType() == RoleType.LOUP_GAROU))
|
||||
e.setWinType(LGWinType.COUPLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onChat(AsyncPlayerChatEvent e) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), e.getPlayer());
|
||||
if(player.getGame() == getGame()) {
|
||||
if(e.getMessage().startsWith("!")) {
|
||||
if(player.getCache().has("inlove")){
|
||||
player.sendMessage("§d\u2764 "+player.getName()+" §6» §f"+e.getMessage().substring(1));
|
||||
player.getCache().<LGPlayer>get("inlove").sendMessage("§d\u2764 "+player.getName()+" §6» §f"+e.getMessage().substring(1));
|
||||
}else
|
||||
player.sendMessage("§4Erreur : §cVous n'êtes pas en couple !");
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onUpdatePrefix (LGUpdatePrefixEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
if(e.getTo().getCache().get("inlove") == e.getPlayer() || ((e.getTo() == e.getPlayer() || e.getTo().getRole() == this) && e.getPlayer().getCache().has("inlove")))
|
||||
e.setPrefix("§d\u2764 §f"+e.getPrefix());
|
||||
}
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onChat(AsyncPlayerChatEvent e) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), e.getPlayer());
|
||||
if (player.getGame() == getGame()) {
|
||||
if (e.getMessage().startsWith("!")) {
|
||||
if (player.getCache().has("inlove")) {
|
||||
player.sendMessage("§d\u2764 " + player.getName() + " §6» §f" + e.getMessage().substring(1));
|
||||
player.getCache().<LGPlayer>get("inlove").sendMessage("§d\u2764 " + player.getName() + " §6» §f" + e.getMessage().substring(1));
|
||||
} else
|
||||
player.sendMessage("§4Erreur : §cVous n'êtes pas en couple !");
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onUpdatePrefix(LGUpdatePrefixEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
if (e.getTo().getCache().get("inlove") == e.getPlayer() || ((e.getTo() == e.getPlayer() || e.getTo().getRole() == this) && e.getPlayer().getCache().has("inlove")))
|
||||
e.setPrefix("§d\u2764 §f" + e.getPrefix());
|
||||
}
|
||||
|
||||
/* @EventHandler
|
||||
public void onNight(LGDayEndEvent e) {
|
||||
|
|
|
@ -3,87 +3,96 @@ package fr.leomelki.loupgarou.roles;
|
|||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
|
||||
public class RDetective extends Role{
|
||||
public RDetective(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lDétective";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu mènes l'enquête sur deux joueurs pour découvrir s'ils font partie du même camp.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis deux joueurs à étudier.";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le "+getName()+"§9 est sur une enquête...";
|
||||
}
|
||||
public class RDetective extends Role {
|
||||
public RDetective(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
player.choose(choosen -> {
|
||||
if(choosen != null) {
|
||||
if(choosen == player) {
|
||||
player.sendMessage("§cVous ne pouvez pas vous sélectionner !");
|
||||
return;
|
||||
}
|
||||
if(player.getCache().has("detective_first")) {
|
||||
LGPlayer first = player.getCache().remove("detective_first");
|
||||
if(first == choosen) {
|
||||
player.sendMessage("§cVous ne pouvez pas comparer §7§l"+first.getName()+"§c avec lui même !");
|
||||
} else {
|
||||
if((first.getRoleType() == RoleType.NEUTRAL || choosen.getRoleType() == RoleType.NEUTRAL) ? first.getRole().getClass() == choosen.getRole().getClass() : first.getRoleType() == choosen.getRoleType())
|
||||
player.sendMessage("§7§l"+first.getName()+"§6 et §7§l"+choosen.getName()+"§6 sont §adu même camp.");
|
||||
else
|
||||
player.sendMessage("§7§l"+first.getName()+"§6 et §7§l"+choosen.getName()+"§6 ne sont §cpas du même camp.");
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
} else {
|
||||
player.getCache().set("detective_first", choosen);
|
||||
player.sendMessage("§9Choisis un joueur avec qui tu souhaites comparer le rôle de §7§l"+choosen.getName());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lDétective";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.getCache().remove("detective_first");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez mis personne en couple", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§9Tu n'as pas créé de couple.");
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu mènes l'enquête sur deux joueurs pour découvrir s'ils font partie du même camp.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis deux joueurs à étudier.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le " + getName() + "§9 est sur une enquête...";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
|
||||
player.choose(choosen -> {
|
||||
if (choosen != null) {
|
||||
if (choosen == player) {
|
||||
player.sendMessage("§cVous ne pouvez pas vous sélectionner !");
|
||||
return;
|
||||
}
|
||||
if (player.getCache().has("detective_first")) {
|
||||
LGPlayer first = player.getCache().remove("detective_first");
|
||||
if (first == choosen) {
|
||||
player.sendMessage("§cVous ne pouvez pas comparer §7§l" + first.getName() + "§c avec lui même !");
|
||||
} else {
|
||||
if ((first.getRoleType() == RoleType.NEUTRAL || choosen.getRoleType() == RoleType.NEUTRAL) ? first.getRole().getClass() == choosen.getRole().getClass() : first.getRoleType() == choosen.getRoleType())
|
||||
player.sendMessage("§7§l" + first.getName() + "§6 et §7§l" + choosen.getName() + "§6 sont §adu même camp.");
|
||||
else
|
||||
player.sendMessage("§7§l" + first.getName() + "§6 et §7§l" + choosen.getName() + "§6 ne sont §cpas du même camp.");
|
||||
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
} else {
|
||||
player.getCache().set("detective_first", choosen);
|
||||
player.sendMessage("§9Choisis un joueur avec qui tu souhaites comparer le rôle de §7§l" + choosen.getName());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.getCache().remove("detective_first");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez mis personne en couple", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§9Tu n'as pas créé de couple.");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerHeldItemSlot;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGDayEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGMayorVoteEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import fr.leomelki.loupgarou.events.LGVoteEvent;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventoryCustom;
|
||||
|
@ -19,254 +23,264 @@ import org.bukkit.inventory.ItemStack;
|
|||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerHeldItemSlot;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGDayEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGMayorVoteEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import fr.leomelki.loupgarou.events.LGVoteEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
|
||||
public class RDictateur extends Role{
|
||||
static private final ItemStack[] items = new ItemStack[9];
|
||||
static private final Inventory inventory;
|
||||
static {
|
||||
items[3] = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = items[3].getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
meta.setLore(Collections.singletonList("§8Passez votre tour"));
|
||||
items[3].setItemMeta(meta);
|
||||
items[5] = new ItemStack(Material./*DIAMOND_SWORD*/GUNPOWDER);
|
||||
meta = items[5].getItemMeta();
|
||||
meta.setDisplayName("§e§lCoup d'État");
|
||||
meta.setLore(Arrays.asList(
|
||||
"§8Prends le contrôle du village",
|
||||
"§8et choisis seul qui mourra demain.",
|
||||
"",
|
||||
"§8Si tu tues un §a§lVillageois§8, tu",
|
||||
"§8l'auras sur la conscience."));
|
||||
items[5].setItemMeta(meta);
|
||||
inventory = Bukkit.createInventory(null, 9, "§7Veux-tu faire un coup d'état ?");
|
||||
inventory.setContents(items.clone());
|
||||
}
|
||||
public RDictateur(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lDictateur";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Une fois dans la partie, tu peux choisir d'effectuer un §e§o§lcoup d'état§f, tu choisiras alors seul qui mourra au jour suivant. Si tu fais le bon choix, tu deviendras §5§lCapitaine§f mais si tu tues un §a§lVillageois§f, tu te suicideras la nuit qui suit.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Veux-tu réaliser un coup d'état ?";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le "+getName()+"§9 décide s'il veut se dévoiler.";
|
||||
}
|
||||
public class RDictateur extends Role {
|
||||
static private final ItemStack[] items = new ItemStack[9];
|
||||
static private final Inventory inventory;
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
static {
|
||||
items[3] = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = items[3].getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
meta.setLore(Collections.singletonList("§8Passez votre tour"));
|
||||
items[3].setItemMeta(meta);
|
||||
items[5] = new ItemStack(Material./*DIAMOND_SWORD*/GUNPOWDER);
|
||||
meta = items[5].getItemMeta();
|
||||
meta.setDisplayName("§e§lCoup d'État");
|
||||
meta.setLore(Arrays.asList(
|
||||
"§8Prends le contrôle du village",
|
||||
"§8et choisis seul qui mourra demain.",
|
||||
"",
|
||||
"§8Si tu tues un §a§lVillageois§8, tu",
|
||||
"§8l'auras sur la conscience."));
|
||||
items[5].setItemMeta(meta);
|
||||
inventory = Bukkit.createInventory(null, 9, "§7Veux-tu faire un coup d'état ?");
|
||||
inventory.setContents(items.clone());
|
||||
}
|
||||
|
||||
public void openInventory(Player player) {
|
||||
inMenu = true;
|
||||
player.closeInventory();
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
Runnable callback, run;
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
this.callback = callback;
|
||||
openInventory(player.getPlayer());
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.hideView();
|
||||
closeInventory(player.getPlayer());
|
||||
Runnable callback, run;
|
||||
boolean inMenu = false;
|
||||
|
||||
public RDictateur(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lDictateur";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Une fois dans la partie, tu peux choisir d'effectuer un §e§o§lcoup d'état§f, tu choisiras alors seul qui mourra au jour suivant. Si tu fais le bon choix, tu deviendras §5§lCapitaine§f mais si tu tues un §a§lVillageois§f, tu te suicideras la nuit qui suit.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Veux-tu réaliser un coup d'état ?";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le " + getName() + "§9 décide s'il veut se dévoiler.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
public void openInventory(Player player) {
|
||||
inMenu = true;
|
||||
player.closeInventory();
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
this.callback = callback;
|
||||
openInventory(player.getPlayer());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.hideView();
|
||||
closeInventory(player.getPlayer());
|
||||
/*player.sendTitle("§cVous ne faites pas votre coup d'état.", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
player.sendMessage("§cVous ne faites pas votre coup d'état.");
|
||||
player.sendMessage("§7§oVous aurez de nouveau le choix lors de la prochaine nuit.");*/
|
||||
}
|
||||
}
|
||||
|
||||
boolean inMenu = false;
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player)e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player) e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
|
||||
if(lgp.getRole() != this || item == null || item.getItemMeta() == null)return;
|
||||
if (lgp.getRole() != this || item == null || item.getItemMeta() == null) return;
|
||||
|
||||
if(item.getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
if (item.getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
/*lgp.sendMessage("§cVous ne faites pas votre coup d'état.");
|
||||
lgp.sendMessage("§7§oVous aurez de nouveau le choix lors de la prochaine nuit.");*/
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}else if(item.getItemMeta().getDisplayName().equals(items[5].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
lgp.sendActionBarMessage("§9§lTu effectueras un coup d'état");
|
||||
lgp.sendMessage("§6Tu as décidé de faire un coup d'état.");
|
||||
lgp.getCache().set("coup_d_etat", true);
|
||||
lgp.getCache().set("just_coup_d_etat", true);
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
} else if (item.getItemMeta().getDisplayName().equals(items[5].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
lgp.sendActionBarMessage("§9§lTu effectueras un coup d'état");
|
||||
lgp.sendMessage("§6Tu as décidé de faire un coup d'état.");
|
||||
lgp.getCache().set("coup_d_etat", true);
|
||||
lgp.getCache().set("just_coup_d_etat", true);
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onClick(PlayerInteractEvent e) {
|
||||
Player p = e.getPlayer();
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), p);
|
||||
if(e.getItem() != null && e.getItem().getType() == Material.IRON_NUGGET && player.getRole() == this) {
|
||||
getGame().cancelWait();
|
||||
player.stopChoosing();
|
||||
p.getInventory().setItem(8, null);
|
||||
p.updateInventory();
|
||||
getGame().broadcastMessage("§7§l"+player.getName()+"§9 n'a tué personne.");
|
||||
run.run();
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onClick(PlayerInteractEvent e) {
|
||||
Player p = e.getPlayer();
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), p);
|
||||
if (e.getItem() != null && e.getItem().getType() == Material.IRON_NUGGET && player.getRole() == this) {
|
||||
getGame().cancelWait();
|
||||
player.stopChoosing();
|
||||
p.getInventory().setItem(8, null);
|
||||
p.updateInventory();
|
||||
getGame().broadcastMessage("§7§l" + player.getName() + "§9 n'a tué personne.");
|
||||
run.run();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if(e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player)e.getPlayer());
|
||||
if(player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if (e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player) e.getPlayer());
|
||||
if (player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onMayorVote(LGMayorVoteEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
onTurn(e);
|
||||
}
|
||||
@EventHandler
|
||||
public void onMayorVote(LGMayorVoteEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
onTurn(e);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onVote(LGVoteEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
onTurn(e);
|
||||
}
|
||||
public void onTurn(Cancellable e) {
|
||||
for(LGPlayer lgp : getPlayers())
|
||||
if(lgp.getCache().getBoolean("just_coup_d_etat") && lgp.isRoleActive())
|
||||
e.setCancelled(true);
|
||||
@EventHandler
|
||||
public void onVote(LGVoteEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
onTurn(e);
|
||||
}
|
||||
|
||||
if(!e.isCancelled())
|
||||
return;
|
||||
public void onTurn(Cancellable e) {
|
||||
for (LGPlayer lgp : getPlayers())
|
||||
if (lgp.getCache().getBoolean("just_coup_d_etat") && lgp.isRoleActive())
|
||||
e.setCancelled(true);
|
||||
|
||||
Iterator<LGPlayer> ite = ((ArrayList<LGPlayer>)getPlayers().clone()).iterator();
|
||||
new Runnable() {
|
||||
public void run() {
|
||||
run = this;
|
||||
if(ite.hasNext()) {
|
||||
LGPlayer lgp = ite.next();
|
||||
if(lgp.getCache().getBoolean("just_coup_d_etat")) {
|
||||
getPlayers().remove(lgp);
|
||||
lgp.getCache().remove("just_coup_d_etat");
|
||||
getGame().broadcastMessage("§7§l"+lgp.getName()+" §9réalise un coup d'état.");
|
||||
//lgp.sendTitle("§6Vous faites votre coup d'état", "§aChoisissez qui tuer", 60);
|
||||
if (!e.isCancelled())
|
||||
return;
|
||||
|
||||
//On le met sur le slot 0 pour éviter un missclick sur la croix
|
||||
WrapperPlayServerHeldItemSlot hold = new WrapperPlayServerHeldItemSlot();
|
||||
hold.setSlot(0);
|
||||
hold.sendPacket(lgp.getPlayer());
|
||||
Iterator<LGPlayer> ite = ((ArrayList<LGPlayer>) getPlayers().clone()).iterator();
|
||||
new Runnable() {
|
||||
public void run() {
|
||||
run = this;
|
||||
if (ite.hasNext()) {
|
||||
LGPlayer lgp = ite.next();
|
||||
if (lgp.getCache().getBoolean("just_coup_d_etat")) {
|
||||
getPlayers().remove(lgp);
|
||||
lgp.getCache().remove("just_coup_d_etat");
|
||||
getGame().broadcastMessage("§7§l" + lgp.getName() + " §9réalise un coup d'état.");
|
||||
//lgp.sendTitle("§6Vous faites votre coup d'état", "§aChoisissez qui tuer", 60);
|
||||
|
||||
lgp.sendMessage("§6Choisis un joueur à exécuter.");
|
||||
getGame().wait(60, ()->{
|
||||
lgp.stopChoosing();
|
||||
getGame().broadcastMessage("§7§l"+lgp.getName()+"§9 n'a tué personne.");
|
||||
lgp.getPlayer().getInventory().setItem(8, null);
|
||||
lgp.getPlayer().updateInventory();
|
||||
this.run();
|
||||
}, (player, secondsLeft)-> lgp == player ? "§9§lC'est à ton tour !" : "§6Le Dictateur choisit sa victime (§e"+secondsLeft+" s§6)");
|
||||
lgp.choose((choosen)->{
|
||||
if(choosen != null) {
|
||||
getGame().cancelWait();
|
||||
lgp.stopChoosing();
|
||||
lgp.getPlayer().getInventory().setItem(8, null);
|
||||
lgp.getPlayer().updateInventory();
|
||||
kill(choosen, lgp, this);
|
||||
}
|
||||
});
|
||||
lgp.getPlayer().getInventory().setItem(8, items[3]);
|
||||
lgp.getPlayer().updateInventory();
|
||||
}
|
||||
}else
|
||||
getGame().nextNight();
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
protected void kill(LGPlayer choosen, LGPlayer dicta, Runnable callback) {
|
||||
RoleType roleType = choosen.getRoleType();
|
||||
//On le met sur le slot 0 pour éviter un missclick sur la croix
|
||||
WrapperPlayServerHeldItemSlot hold = new WrapperPlayServerHeldItemSlot();
|
||||
hold.setSlot(0);
|
||||
hold.sendPacket(lgp.getPlayer());
|
||||
|
||||
LGPlayerKilledEvent killEvent = new LGPlayerKilledEvent(getGame(), choosen, Reason.DICTATOR);
|
||||
Bukkit.getPluginManager().callEvent(killEvent);
|
||||
if(killEvent.isCancelled())return;
|
||||
if(getGame().kill(killEvent.getKilled(), killEvent.getReason(), true))
|
||||
return;
|
||||
lgp.sendMessage("§6Choisis un joueur à exécuter.");
|
||||
getGame().wait(60, () -> {
|
||||
lgp.stopChoosing();
|
||||
getGame().broadcastMessage("§7§l" + lgp.getName() + "§9 n'a tué personne.");
|
||||
lgp.getPlayer().getInventory().setItem(8, null);
|
||||
lgp.getPlayer().updateInventory();
|
||||
this.run();
|
||||
}, (player, secondsLeft) -> lgp == player ? "§9§lC'est à ton tour !" : "§6Le Dictateur choisit sa victime (§e" + secondsLeft + " s§6)");
|
||||
lgp.choose((choosen) -> {
|
||||
if (choosen != null) {
|
||||
getGame().cancelWait();
|
||||
lgp.stopChoosing();
|
||||
lgp.getPlayer().getInventory().setItem(8, null);
|
||||
lgp.getPlayer().updateInventory();
|
||||
kill(choosen, lgp, this);
|
||||
}
|
||||
});
|
||||
lgp.getPlayer().getInventory().setItem(8, items[3]);
|
||||
lgp.getPlayer().updateInventory();
|
||||
}
|
||||
} else
|
||||
getGame().nextNight();
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
|
||||
if(roleType != RoleType.VILLAGER) {
|
||||
getGame().broadcastMessage("§7§l"+dicta.getName()+" §9devient le §5§lCapitaine§9 du village.");
|
||||
getGame().setMayor(dicta);
|
||||
} else {
|
||||
getGame().kill(dicta, Reason.DICTATOR_SUICIDE);
|
||||
for(LGPlayer lgp : getGame().getInGame()) {
|
||||
if(lgp == dicta)
|
||||
lgp.sendMessage("§9§oÇa ne s'est pas passé comme prévu...");
|
||||
else
|
||||
lgp.sendMessage("§9Le "+getName()+"§9 s'est trompé, il mourra la nuit suivante.");
|
||||
}
|
||||
}
|
||||
callback.run();
|
||||
}
|
||||
protected void kill(LGPlayer choosen, LGPlayer dicta, Runnable callback) {
|
||||
RoleType roleType = choosen.getRoleType();
|
||||
|
||||
@EventHandler
|
||||
public void onNight(LGDayEndEvent e) {
|
||||
if(e.getGame() == getGame()) {
|
||||
LGPlayer lgp = getGame().getDeaths().get(Reason.DICTATOR_SUICIDE);
|
||||
if(lgp != null)
|
||||
lgp.sendMessage("§8§oDes pensées sombres hantent ton esprit...");
|
||||
}
|
||||
}
|
||||
LGPlayerKilledEvent killEvent = new LGPlayerKilledEvent(getGame(), choosen, Reason.DICTATOR);
|
||||
Bukkit.getPluginManager().callEvent(killEvent);
|
||||
if (killEvent.isCancelled()) return;
|
||||
if (getGame().kill(killEvent.getKilled(), killEvent.getReason(), true))
|
||||
return;
|
||||
|
||||
if (roleType != RoleType.VILLAGER) {
|
||||
getGame().broadcastMessage("§7§l" + dicta.getName() + " §9devient le §5§lCapitaine§9 du village.");
|
||||
getGame().setMayor(dicta);
|
||||
} else {
|
||||
getGame().kill(dicta, Reason.DICTATOR_SUICIDE);
|
||||
for (LGPlayer lgp : getGame().getInGame()) {
|
||||
if (lgp == dicta)
|
||||
lgp.sendMessage("§9§oÇa ne s'est pas passé comme prévu...");
|
||||
else
|
||||
lgp.sendMessage("§9Le " + getName() + "§9 s'est trompé, il mourra la nuit suivante.");
|
||||
}
|
||||
}
|
||||
callback.run();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onNight(LGDayEndEvent e) {
|
||||
if (e.getGame() == getGame()) {
|
||||
LGPlayer lgp = getGame().getDeaths().get(Reason.DICTATOR_SUICIDE);
|
||||
if (lgp != null)
|
||||
lgp.sendMessage("§8§oDes pensées sombres hantent ton esprit...");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,112 +1,115 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
public class REnfantSauvage extends Role{
|
||||
public REnfantSauvage(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
import java.util.Random;
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lEnfant-Sauvage";
|
||||
}
|
||||
public class REnfantSauvage extends Role {
|
||||
private static final Random random = new Random();
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de l'"+getName();
|
||||
}
|
||||
public REnfantSauvage(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lEnfant-Sauvage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Au début de la première nuit, tu dois choisir un joueur comme modèle. S'il meurt au cours de la partie, tu deviendras un §c§lLoup-Garou§f.";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de l'" + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Qui veux-tu prendre comme modèle ?";
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "L'"+getName()+"§9 cherche ses marques...";
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Au début de la première nuit, tu dois choisir un joueur comme modèle. S'il meurt au cours de la partie, tu deviendras un §c§lLoup-Garou§f.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Qui veux-tu prendre comme modèle ?";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
player.sendMessage("§6Choisissez votre modèle.");
|
||||
player.choose(choosen -> {
|
||||
if(choosen != null) {
|
||||
player.stopChoosing();
|
||||
player.sendMessage("§6Si §7§l"+choosen.getName()+"§6 meurt, tu deviendras §c§lLoup-Garou§6.");
|
||||
player.sendActionBarMessage("§7§l"+choosen.getName()+"§6 est ton modèle");
|
||||
player.getCache().set("enfant_svg", choosen);
|
||||
choosen.getCache().set("enfant_svg_d", player);
|
||||
getPlayers().remove(player);//Pour éviter qu'il puisse avoir plusieurs modèles
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}, player);
|
||||
}
|
||||
private static final Random random = new Random();
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
LGPlayer choosen = null;
|
||||
while(choosen == null || choosen == player)
|
||||
choosen = getGame().getAlive().get(random.nextInt(getGame().getAlive().size()));
|
||||
player.sendMessage("§6Si §7§l"+choosen.getName()+"§6 meurt, tu deviendras §c§lLoup-Garou§6.");
|
||||
player.sendActionBarMessage("§7§l"+choosen.getName()+"§6 est ton modèle");
|
||||
player.getCache().set("enfant_svg", choosen);
|
||||
choosen.getCache().set("enfant_svg_d", player);
|
||||
getPlayers().remove(player);
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "L'" + getName() + "§9 cherche ses marques...";
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onPlayerKilled(LGPlayerKilledEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
if(e.getKilled().getCache().has("enfant_svg_d")) {
|
||||
LGPlayer enfant = e.getKilled().getCache().remove("enfant_svg_d");
|
||||
if(!enfant.isDead() && enfant.getCache().remove("enfant_svg") == e.getKilled() && enfant.isRoleActive()) {
|
||||
enfant.sendMessage("§7§l"+e.getKilled().getName()+"§6 est mort, tu deviens un §c§lLoup-Garou§6.");
|
||||
REnfantSauvageLG lgEnfantSvg = null;
|
||||
for(Role role : getGame().getRoles())
|
||||
if(role instanceof REnfantSauvageLG)
|
||||
lgEnfantSvg = (REnfantSauvageLG)role;
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
if(lgEnfantSvg == null)
|
||||
getGame().getRoles().add(lgEnfantSvg = new REnfantSauvageLG(getGame()));
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
lgEnfantSvg.join(enfant, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
player.sendMessage("§6Choisissez votre modèle.");
|
||||
player.choose(choosen -> {
|
||||
if (choosen != null) {
|
||||
player.stopChoosing();
|
||||
player.sendMessage("§6Si §7§l" + choosen.getName() + "§6 meurt, tu deviendras §c§lLoup-Garou§6.");
|
||||
player.sendActionBarMessage("§7§l" + choosen.getName() + "§6 est ton modèle");
|
||||
player.getCache().set("enfant_svg", choosen);
|
||||
choosen.getCache().set("enfant_svg_d", player);
|
||||
getPlayers().remove(player);//Pour éviter qu'il puisse avoir plusieurs modèles
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
LGPlayer choosen = null;
|
||||
while (choosen == null || choosen == player)
|
||||
choosen = getGame().getAlive().get(random.nextInt(getGame().getAlive().size()));
|
||||
player.sendMessage("§6Si §7§l" + choosen.getName() + "§6 meurt, tu deviendras §c§lLoup-Garou§6.");
|
||||
player.sendActionBarMessage("§7§l" + choosen.getName() + "§6 est ton modèle");
|
||||
player.getCache().set("enfant_svg", choosen);
|
||||
choosen.getCache().set("enfant_svg_d", player);
|
||||
getPlayers().remove(player);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onPlayerKilled(LGPlayerKilledEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
if (e.getKilled().getCache().has("enfant_svg_d")) {
|
||||
LGPlayer enfant = e.getKilled().getCache().remove("enfant_svg_d");
|
||||
if (!enfant.isDead() && enfant.getCache().remove("enfant_svg") == e.getKilled() && enfant.isRoleActive()) {
|
||||
enfant.sendMessage("§7§l" + e.getKilled().getName() + "§6 est mort, tu deviens un §c§lLoup-Garou§6.");
|
||||
REnfantSauvageLG lgEnfantSvg = null;
|
||||
for (Role role : getGame().getRoles())
|
||||
if (role instanceof REnfantSauvageLG)
|
||||
lgEnfantSvg = (REnfantSauvageLG) role;
|
||||
|
||||
if (lgEnfantSvg == null)
|
||||
getGame().getRoles().add(lgEnfantSvg = new REnfantSauvageLG(getGame()));
|
||||
|
||||
lgEnfantSvg.join(enfant, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,82 +1,84 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGCustomItems;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
public class REnfantSauvageLG extends Role{
|
||||
public REnfantSauvageLG(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
for(LGPlayer lgp : getPlayers())
|
||||
if(lgp.getPlayer() != null && lgp.getPlayer().hasPotionEffect(PotionEffectType.INVISIBILITY))
|
||||
return "§c§lEnfant-Sauvage";
|
||||
return (getPlayers().size() > 0 ? "§a" : "§c")+"§lEnfant-Sauvage";
|
||||
}
|
||||
public class REnfantSauvageLG extends Role {
|
||||
public REnfantSauvageLG(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de l'"+getName();
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
for (LGPlayer lgp : getPlayers())
|
||||
if (lgp.getPlayer() != null && lgp.getPlayer().hasPotionEffect(PotionEffectType.INVISIBILITY))
|
||||
return "§c§lEnfant-Sauvage";
|
||||
return (getPlayers().size() > 0 ? "§a" : "§c") + "§lEnfant-Sauvage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de l'" + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Au début de la première nuit, tu dois choisir un joueur comme modèle. S'il meurt au cours de la partie, tu deviendras un §c§lLoup-Garou§f.";
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Qui veux-tu prendre comme modèle ?";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Au début de la première nuit, tu dois choisir un joueur comme modèle. S'il meurt au cours de la partie, tu deviendras un §c§lLoup-Garou§f.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "L'"+getName()+"§9 cherche ses marques...";
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.LOUP_GAROU;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.LOUP_GAROU;
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Qui veux-tu prendre comme modèle ?";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "L'" + getName() + "§9 cherche ses marques...";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
super.join(player, sendMessage);
|
||||
player.setRole(this);
|
||||
LGCustomItems.updateItem(player);
|
||||
RLoupGarou lgRole = null;
|
||||
for(Role role : getGame().getRoles())
|
||||
if(role instanceof RLoupGarou)
|
||||
lgRole = (RLoupGarou)role;
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.LOUP_GAROU;
|
||||
}
|
||||
|
||||
if(lgRole == null) {
|
||||
getGame().getRoles().add(lgRole = new RLoupGarou(getGame()));
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.LOUP_GAROU;
|
||||
}
|
||||
|
||||
getGame().getRoles().sort(Comparator.comparingInt(Role::getTurnOrder));
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
lgRole.join(player, false);
|
||||
for(LGPlayer lgp : lgRole.getPlayers())
|
||||
if(lgp != player)
|
||||
lgp.sendMessage("§7§l"+player.getName()+"§6 a rejoint les §c§lLoups-Garous§6.");
|
||||
}
|
||||
@Override
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
super.join(player, sendMessage);
|
||||
player.setRole(this);
|
||||
LGCustomItems.updateItem(player);
|
||||
RLoupGarou lgRole = null;
|
||||
for (Role role : getGame().getRoles())
|
||||
if (role instanceof RLoupGarou)
|
||||
lgRole = (RLoupGarou) role;
|
||||
|
||||
if (lgRole == null) {
|
||||
getGame().getRoles().add(lgRole = new RLoupGarou(getGame()));
|
||||
|
||||
getGame().getRoles().sort(Comparator.comparingInt(Role::getTurnOrder));
|
||||
}
|
||||
|
||||
lgRole.join(player, false);
|
||||
for (LGPlayer lgp : lgRole.getPlayers())
|
||||
if (lgp != player)
|
||||
lgp.sendMessage("§7§l" + player.getName() + "§6 a rejoint les §c§lLoups-Garous§6.");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,136 +1,144 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
public class RFaucheur extends Role{
|
||||
public RFaucheur(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lFaucheur";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Si les §c§lLoups-Garous§f te tuent pendant la nuit, tu emporteras l’un d’entre eux dans ta mort, mais si tu meurs lors du vote du §a§lvillage§f, ce sont tes deux voisins qui en paieront le prix.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
private static final Random random = new Random();
|
||||
public class RFaucheur extends Role {
|
||||
private static final Random random = new Random();
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onKill(LGPlayerKilledEvent e) {
|
||||
if (e.getKilled().getRole() == this && e.getKilled().isRoleActive()) {
|
||||
LGPlayer killed = e.getKilled();
|
||||
if(killed.getCache().getBoolean("faucheur_did"))//A déjà fait son coup de faucheur !
|
||||
return;
|
||||
killed.getCache().set("faucheur_did", true);
|
||||
if (e.getReason() == Reason.LOUP_GAROU || e.getReason() == Reason.GM_LOUP_GAROU) {//car le switch buggait (wtf)
|
||||
// Mort par les LG
|
||||
// Tue un lg au hasard
|
||||
LGPlayer selected = null;
|
||||
for (Role role : getGame().getRoles())
|
||||
if (role instanceof RLoupGarou)
|
||||
selected = role.getPlayers().get(random.nextInt(role.getPlayers().size()));
|
||||
if (selected != null) {
|
||||
LGPlayerKilledEvent killEvent = new LGPlayerKilledEvent(getGame(), e.getKilled(), e.getReason());
|
||||
Bukkit.getPluginManager().callEvent(killEvent);
|
||||
e.setKilled(selected);
|
||||
e.setReason(Reason.FAUCHEUR);
|
||||
if (killEvent.isCancelled())
|
||||
return;
|
||||
getGame().kill(killEvent.getKilled(), killEvent.getReason(), false);
|
||||
}
|
||||
} else if (e.getReason() == Reason.VOTE) {
|
||||
List<?> original = MainLg.getInstance().getConfig().getList("spawns");
|
||||
int size = original.size();
|
||||
// double middle = ((double)size)/2D;
|
||||
int killedPlace = killed.getPlace();
|
||||
public RFaucheur(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
LGPlayer droite = null, gauche = null;
|
||||
for (int i = killedPlace + 1;; i++) {
|
||||
if (i == size)
|
||||
i = 0;
|
||||
LGPlayer lgp = getGame().getPlacements().get(i);
|
||||
if (lgp != null && !lgp.isDead()) {
|
||||
droite = lgp;
|
||||
break;
|
||||
}
|
||||
if (lgp == killed)// Fait un tour complet
|
||||
break;
|
||||
}
|
||||
for (int i = killedPlace - 1;; i--) {
|
||||
if (i == -1)
|
||||
i = size - 1;
|
||||
LGPlayer lgp = getGame().getPlacements().get(i);
|
||||
if (lgp != null && !lgp.isDead()) {
|
||||
gauche = lgp;
|
||||
break;
|
||||
}
|
||||
if (lgp == killed)// Fait un tour complet
|
||||
break;
|
||||
}
|
||||
if (droite != null) {
|
||||
LGPlayerKilledEvent killEvent = new LGPlayerKilledEvent(getGame(), e.getKilled(), e.getReason());
|
||||
Bukkit.getPluginManager().callEvent(killEvent);
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
e.setKilled(droite);
|
||||
e.setReason(Reason.FAUCHEUR);
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
if (!killEvent.isCancelled())
|
||||
getGame().kill(killEvent.getKilled(), killEvent.getReason(), false);
|
||||
}
|
||||
if (gauche != null) {
|
||||
LGPlayerKilledEvent killEvent;
|
||||
if (droite == null) {
|
||||
killEvent = new LGPlayerKilledEvent(getGame(), e.getKilled(), e.getReason());
|
||||
e.setKilled(gauche);
|
||||
e.setReason(Reason.FAUCHEUR);
|
||||
} else
|
||||
killEvent = new LGPlayerKilledEvent(getGame(), gauche, Reason.FAUCHEUR);
|
||||
Bukkit.getPluginManager().callEvent(killEvent);
|
||||
if (!killEvent.isCancelled())
|
||||
getGame().kill(killEvent.getKilled(), killEvent.getReason(), false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lFaucheur";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Si les §c§lLoups-Garous§f te tuent pendant la nuit, tu emporteras l’un d’entre eux dans ta mort, mais si tu meurs lors du vote du §a§lvillage§f, ce sont tes deux voisins qui en paieront le prix.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onKill(LGPlayerKilledEvent e) {
|
||||
if (e.getKilled().getRole() == this && e.getKilled().isRoleActive()) {
|
||||
LGPlayer killed = e.getKilled();
|
||||
if (killed.getCache().getBoolean("faucheur_did"))//A déjà fait son coup de faucheur !
|
||||
return;
|
||||
killed.getCache().set("faucheur_did", true);
|
||||
if (e.getReason() == Reason.LOUP_GAROU || e.getReason() == Reason.GM_LOUP_GAROU) {//car le switch buggait (wtf)
|
||||
// Mort par les LG
|
||||
// Tue un lg au hasard
|
||||
LGPlayer selected = null;
|
||||
for (Role role : getGame().getRoles())
|
||||
if (role instanceof RLoupGarou)
|
||||
selected = role.getPlayers().get(random.nextInt(role.getPlayers().size()));
|
||||
if (selected != null) {
|
||||
LGPlayerKilledEvent killEvent = new LGPlayerKilledEvent(getGame(), e.getKilled(), e.getReason());
|
||||
Bukkit.getPluginManager().callEvent(killEvent);
|
||||
e.setKilled(selected);
|
||||
e.setReason(Reason.FAUCHEUR);
|
||||
if (killEvent.isCancelled())
|
||||
return;
|
||||
getGame().kill(killEvent.getKilled(), killEvent.getReason(), false);
|
||||
}
|
||||
} else if (e.getReason() == Reason.VOTE) {
|
||||
List<?> original = MainLg.getInstance().getConfig().getList("spawns");
|
||||
int size = original.size();
|
||||
// double middle = ((double)size)/2D;
|
||||
int killedPlace = killed.getPlace();
|
||||
|
||||
LGPlayer droite = null, gauche = null;
|
||||
for (int i = killedPlace + 1; ; i++) {
|
||||
if (i == size)
|
||||
i = 0;
|
||||
LGPlayer lgp = getGame().getPlacements().get(i);
|
||||
if (lgp != null && !lgp.isDead()) {
|
||||
droite = lgp;
|
||||
break;
|
||||
}
|
||||
if (lgp == killed)// Fait un tour complet
|
||||
break;
|
||||
}
|
||||
for (int i = killedPlace - 1; ; i--) {
|
||||
if (i == -1)
|
||||
i = size - 1;
|
||||
LGPlayer lgp = getGame().getPlacements().get(i);
|
||||
if (lgp != null && !lgp.isDead()) {
|
||||
gauche = lgp;
|
||||
break;
|
||||
}
|
||||
if (lgp == killed)// Fait un tour complet
|
||||
break;
|
||||
}
|
||||
if (droite != null) {
|
||||
LGPlayerKilledEvent killEvent = new LGPlayerKilledEvent(getGame(), e.getKilled(), e.getReason());
|
||||
Bukkit.getPluginManager().callEvent(killEvent);
|
||||
|
||||
e.setKilled(droite);
|
||||
e.setReason(Reason.FAUCHEUR);
|
||||
|
||||
if (!killEvent.isCancelled())
|
||||
getGame().kill(killEvent.getKilled(), killEvent.getReason(), false);
|
||||
}
|
||||
if (gauche != null) {
|
||||
LGPlayerKilledEvent killEvent;
|
||||
if (droite == null) {
|
||||
killEvent = new LGPlayerKilledEvent(getGame(), e.getKilled(), e.getReason());
|
||||
e.setKilled(gauche);
|
||||
e.setReason(Reason.FAUCHEUR);
|
||||
} else
|
||||
killEvent = new LGPlayerKilledEvent(getGame(), gauche, Reason.FAUCHEUR);
|
||||
Bukkit.getPluginManager().callEvent(killEvent);
|
||||
if (!killEvent.isCancelled())
|
||||
getGame().kill(killEvent.getKilled(), killEvent.getReason(), false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,115 +1,125 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGNightPlayerPreKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import fr.leomelki.loupgarou.events.LGPreDayStartEvent;
|
||||
import fr.leomelki.loupgarou.events.LGVampiredEvent;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
public class RGarde extends Role{
|
||||
public RGarde(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lGarde";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu peux te protéger toi ou quelqu'un d'autre des attaques §c§lhostiles§f. Tu ne peux pas protéger deux fois d’affilé la même personne.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis un joueur à protéger.";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le "+getName()+"§9 choisit un joueur à protéger.";
|
||||
}
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
public class RGarde extends Role {
|
||||
private static final List<Reason> reasonsProtected = Arrays.asList(Reason.LOUP_GAROU, Reason.LOUP_BLANC, Reason.GM_LOUP_GAROU, Reason.ASSASSIN);
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
public RGarde(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
player.choose(choosen -> {
|
||||
if(choosen != null) {
|
||||
LGPlayer lastProtected = player.getCache().get("garde_lastProtected");
|
||||
if(choosen == lastProtected) {
|
||||
if(lastProtected == player)
|
||||
player.sendMessage("§4§oTu t'es déjà protégé la nuit dernière.");
|
||||
else
|
||||
player.sendMessage("§4§oTu as déjà protégé §7§l§o"+lastProtected.getName()+"§4§o la nuit dernière.");
|
||||
} else {
|
||||
if(choosen == player) {
|
||||
player.sendMessage("§6Tu décides de te protéger toi-même cette nuit.");
|
||||
player.sendActionBarMessage("§9Tu seras protégé.");
|
||||
} else {
|
||||
player.sendMessage("§6Tu vas protéger §7§l"+choosen.getName()+"§6 cette nuit.");
|
||||
player.sendActionBarMessage("§7§l"+choosen.getName()+"§9 sera protégé.");
|
||||
}
|
||||
choosen.getCache().set("garde_protected", true);
|
||||
player.getCache().set("garde_lastProtected", choosen);
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.getCache().remove("garde_lastProtected");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez protégé personne.", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§cVous n'avez protégé personne cette nuit.");
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
private static final List<Reason> reasonsProtected = Arrays.asList(Reason.LOUP_GAROU, Reason.LOUP_BLANC, Reason.GM_LOUP_GAROU, Reason.ASSASSIN);
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerKill(LGNightPlayerPreKilledEvent e) {
|
||||
if(e.getGame() == getGame() && reasonsProtected.contains(e.getReason()) && e.getKilled().getCache().getBoolean("garde_protected")) {
|
||||
e.getKilled().getCache().remove("garde_protected");
|
||||
e.setReason(Reason.DONT_DIE);
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onVampired(LGVampiredEvent e) {
|
||||
if(e.getGame() == getGame() && e.getPlayer().getCache().getBoolean("garde_protected"))
|
||||
e.setProtect(true);
|
||||
}
|
||||
@EventHandler
|
||||
public void onDayStart(LGPreDayStartEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
for(LGPlayer lgp : getGame().getInGame())
|
||||
lgp.getCache().remove("garde_protected");
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lGarde";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu peux te protéger toi ou quelqu'un d'autre des attaques §c§lhostiles§f. Tu ne peux pas protéger deux fois d’affilé la même personne.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis un joueur à protéger.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le " + getName() + "§9 choisit un joueur à protéger.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
|
||||
player.choose(choosen -> {
|
||||
if (choosen != null) {
|
||||
LGPlayer lastProtected = player.getCache().get("garde_lastProtected");
|
||||
if (choosen == lastProtected) {
|
||||
if (lastProtected == player)
|
||||
player.sendMessage("§4§oTu t'es déjà protégé la nuit dernière.");
|
||||
else
|
||||
player.sendMessage("§4§oTu as déjà protégé §7§l§o" + lastProtected.getName() + "§4§o la nuit dernière.");
|
||||
} else {
|
||||
if (choosen == player) {
|
||||
player.sendMessage("§6Tu décides de te protéger toi-même cette nuit.");
|
||||
player.sendActionBarMessage("§9Tu seras protégé.");
|
||||
} else {
|
||||
player.sendMessage("§6Tu vas protéger §7§l" + choosen.getName() + "§6 cette nuit.");
|
||||
player.sendActionBarMessage("§7§l" + choosen.getName() + "§9 sera protégé.");
|
||||
}
|
||||
choosen.getCache().set("garde_protected", true);
|
||||
player.getCache().set("garde_lastProtected", choosen);
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.getCache().remove("garde_lastProtected");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez protégé personne.", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§cVous n'avez protégé personne cette nuit.");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerKill(LGNightPlayerPreKilledEvent e) {
|
||||
if (e.getGame() == getGame() && reasonsProtected.contains(e.getReason()) && e.getKilled().getCache().getBoolean("garde_protected")) {
|
||||
e.getKilled().getCache().remove("garde_protected");
|
||||
e.setReason(Reason.DONT_DIE);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onVampired(LGVampiredEvent e) {
|
||||
if (e.getGame() == getGame() && e.getPlayer().getCache().getBoolean("garde_protected"))
|
||||
e.setProtect(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDayStart(LGPreDayStartEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
for (LGPlayer lgp : getGame().getInGame())
|
||||
lgp.getCache().remove("garde_protected");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,106 +1,108 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
public class RGrandMechantLoup extends Role{
|
||||
public class RGrandMechantLoup extends Role {
|
||||
|
||||
public RGrandMechantLoup(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
boolean lgDied;
|
||||
Runnable callback;
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§c§lGrand Méchant Loup";
|
||||
}
|
||||
public RGrandMechantLoup(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§c§lGrand Méchant Loup";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec les §c§lLoups-Garous";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec les §c§lLoups-Garous§f. Chaque nuit, tu te réunis avec tes compères pour décider d'une victime à éliminer... Tant qu'aucun autre §c§lLoup§f n'est mort, tu peux, chaque nuit, dévorer une victime supplémentaire.";
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec les §c§lLoups-Garous";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis un joueur à dévorer.";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec les §c§lLoups-Garous§f. Chaque nuit, tu te réunis avec tes compères pour décider d'une victime à éliminer... Tant qu'aucun autre §c§lLoup§f n'est mort, tu peux, chaque nuit, dévorer une victime supplémentaire.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le §c§lGrand Méchant Loup§9 n'en a pas terminé...";
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.LOUP_GAROU;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.LOUP_GAROU;
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis un joueur à dévorer.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le §c§lGrand Méchant Loup§9 n'en a pas terminé...";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
return super.hasPlayersLeft() && !lgDied;
|
||||
}
|
||||
boolean lgDied;
|
||||
Runnable callback;
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
this.callback = callback;
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.LOUP_GAROU;
|
||||
}
|
||||
|
||||
player.showView();
|
||||
player.choose(choosen -> {
|
||||
if(choosen != null && choosen != player) {
|
||||
player.sendActionBarMessage("§e§l"+choosen.getName()+"§6 va mourir cette nuit");
|
||||
player.sendMessage("§6Tu as choisi de manger §7§l"+choosen.getName()+"§6.");
|
||||
getGame().kill(choosen, getGame().getDeaths().containsKey(Reason.LOUP_GAROU) ? Reason.GM_LOUP_GAROU : Reason.LOUP_GAROU);
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.LOUP_GAROU;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerDie(LGPlayerKilledEvent e) {//Quand un Loup-Garou meurt, les grands méchants loups ne peuvent plus jouer.
|
||||
if(e.getGame() == getGame())
|
||||
if(e.getKilled().getRoleType() == RoleType.LOUP_GAROU)
|
||||
lgDied = true;
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
return super.hasPlayersLeft() && !lgDied;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
this.callback = callback;
|
||||
|
||||
player.showView();
|
||||
player.choose(choosen -> {
|
||||
if (choosen != null && choosen != player) {
|
||||
player.sendActionBarMessage("§e§l" + choosen.getName() + "§6 va mourir cette nuit");
|
||||
player.sendMessage("§6Tu as choisi de manger §7§l" + choosen.getName() + "§6.");
|
||||
getGame().kill(choosen, getGame().getDeaths().containsKey(Reason.LOUP_GAROU) ? Reason.GM_LOUP_GAROU : Reason.LOUP_GAROU);
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerDie(LGPlayerKilledEvent e) {//Quand un Loup-Garou meurt, les grands méchants loups ne peuvent plus jouer.
|
||||
if (e.getGame() == getGame())
|
||||
if (e.getKilled().getRoleType() == RoleType.LOUP_GAROU)
|
||||
lgDied = true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
player.sendMessage("§6Tu n'as tué personne.");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
player.sendMessage("§6Tu n'as tué personne.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
super.join(player, sendMessage);
|
||||
for(Role role : getGame().getRoles())
|
||||
if(role instanceof RLoupGarou)
|
||||
role.join(player, false);
|
||||
}
|
||||
@Override
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
super.join(player, sendMessage);
|
||||
for (Role role : getGame().getRoles())
|
||||
if (role instanceof RLoupGarou)
|
||||
role.join(player, false);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,193 +1,190 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerScoreboardTeam;
|
||||
import fr.leomelki.loupgarou.classes.*;
|
||||
import fr.leomelki.loupgarou.classes.chat.LGChat;
|
||||
import fr.leomelki.loupgarou.events.*;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
public class RLoupGarou extends Role {
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerScoreboardTeam;
|
||||
import fr.leomelki.loupgarou.classes.LGCustomSkin;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGVote;
|
||||
import fr.leomelki.loupgarou.classes.LGWinType;
|
||||
import fr.leomelki.loupgarou.classes.chat.LGChat;
|
||||
import fr.leomelki.loupgarou.events.LGDayEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGGameEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGNightEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import fr.leomelki.loupgarou.events.LGSkinLoadEvent;
|
||||
import fr.leomelki.loupgarou.events.LGUpdatePrefixEvent;
|
||||
import lombok.Getter;
|
||||
@Getter
|
||||
private final LGChat chat = new LGChat((sender, message) -> "§c" + sender.getName() + " §6» §f" + message);
|
||||
boolean showSkins = false;
|
||||
LGVote vote;
|
||||
|
||||
public class RLoupGarou extends Role{
|
||||
public RLoupGarou(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
public RLoupGarou(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§c§lLoup-Garou";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§c§lLoup-Garou";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "des §c§lLoups-Garous";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "des §c§lLoups-Garous";
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec les §c§lLoups-Garous";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec les §c§lLoups-Garous";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec les §c§lLoups-Garous§f. Chaque nuit, tu te réunis avec tes compères pour décider d'une victime à éliminer.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec les §c§lLoups-Garous§f. Chaque nuit, tu te réunis avec tes compères pour décider d'une victime à éliminer.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Vote pour la cible à tuer.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Vote pour la cible à tuer.";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Les §c§lLoups-Garous§9 choisissent leur cible.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Les §c§lLoups-Garous§9 choisissent leur cible.";
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.LOUP_GAROU;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.LOUP_GAROU;
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.LOUP_GAROU;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 30;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.LOUP_GAROU;
|
||||
}
|
||||
|
||||
@Getter private final LGChat chat = new LGChat((sender, message) -> "§c"+sender.getName()+" §6» §f"+message);
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 30;
|
||||
}
|
||||
|
||||
boolean showSkins = false;
|
||||
LGVote vote;
|
||||
@Override
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
super.join(player, sendMessage);
|
||||
//On peut créer des cheats grâce à ça (qui permettent de savoir qui est lg/inf)
|
||||
for(LGPlayer p : getPlayers())
|
||||
p.updatePrefix();
|
||||
}
|
||||
@Override
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
super.join(player, sendMessage);
|
||||
//On peut créer des cheats grâce à ça (qui permettent de savoir qui est lg/inf)
|
||||
for (LGPlayer p : getPlayers())
|
||||
p.updatePrefix();
|
||||
}
|
||||
|
||||
public void onNightTurn(Runnable callback) {
|
||||
vote = new LGVote(getTimeout(), getTimeout()/3, getGame(), false, false, (player, secondsLeft)-> !getPlayers().contains(player) ? "§6C'est au tour "+getFriendlyName()+" §6(§e"+secondsLeft+" s§6)" : player.getCache().has("vote") ? "§l§9Vous votez contre §c§l"+player.getCache().<LGPlayer>get("vote").getName() : "§6Il vous reste §e"+secondsLeft+" seconde"+(secondsLeft > 1 ? "s" : "")+"§6 pour voter");
|
||||
for(LGPlayer lgp : getGame().getAlive())
|
||||
if(lgp.getRoleType() == RoleType.LOUP_GAROU)
|
||||
lgp.showView();
|
||||
for(LGPlayer player : getPlayers()) {
|
||||
player.sendMessage("§6"+getTask());
|
||||
// player.sendTitle("§6C'est à vous de jouer", "§a"+getTask(), 100);
|
||||
player.joinChat(chat);
|
||||
}
|
||||
vote.start(getPlayers(), getPlayers(), ()->{
|
||||
onNightTurnEnd();
|
||||
callback.run();
|
||||
});
|
||||
}
|
||||
private void onNightTurnEnd() {
|
||||
for(LGPlayer lgp : getGame().getAlive())
|
||||
if(lgp.getRoleType() == RoleType.LOUP_GAROU)
|
||||
lgp.hideView();
|
||||
for(LGPlayer player : getPlayers()) {
|
||||
player.leaveChat();
|
||||
}
|
||||
public void onNightTurn(Runnable callback) {
|
||||
vote = new LGVote(getTimeout(), getTimeout() / 3, getGame(), false, false, (player, secondsLeft) -> !getPlayers().contains(player) ? "§6C'est au tour " + getFriendlyName() + " §6(§e" + secondsLeft + " s§6)" : player.getCache().has("vote") ? "§l§9Vous votez contre §c§l" + player.getCache().<LGPlayer>get("vote").getName() : "§6Il vous reste §e" + secondsLeft + " seconde" + (secondsLeft > 1 ? "s" : "") + "§6 pour voter");
|
||||
for (LGPlayer lgp : getGame().getAlive())
|
||||
if (lgp.getRoleType() == RoleType.LOUP_GAROU)
|
||||
lgp.showView();
|
||||
for (LGPlayer player : getPlayers()) {
|
||||
player.sendMessage("§6" + getTask());
|
||||
// player.sendTitle("§6C'est à vous de jouer", "§a"+getTask(), 100);
|
||||
player.joinChat(chat);
|
||||
}
|
||||
vote.start(getPlayers(), getPlayers(), () -> {
|
||||
onNightTurnEnd();
|
||||
callback.run();
|
||||
});
|
||||
}
|
||||
|
||||
LGPlayer choosen = vote.getChoosen();
|
||||
if(choosen == null) {
|
||||
if(vote.getVotes().size() > 0) {
|
||||
int max = 0;
|
||||
boolean equal = false;
|
||||
for(Entry<LGPlayer, List<LGPlayer>> entry : vote.getVotes().entrySet())
|
||||
if(entry.getValue().size() > max) {
|
||||
equal = false;
|
||||
max = entry.getValue().size();
|
||||
choosen = entry.getKey();
|
||||
}else if(entry.getValue().size() == max)
|
||||
equal = true;
|
||||
if(equal) {
|
||||
choosen = null;
|
||||
ArrayList<LGPlayer> choosable = new ArrayList<>();
|
||||
for(Entry<LGPlayer, List<LGPlayer>> entry : vote.getVotes().entrySet())
|
||||
if(entry.getValue().size() == max && entry.getKey().getRoleType() != RoleType.LOUP_GAROU)
|
||||
choosable.add(entry.getKey());
|
||||
if(choosable.size() > 0)
|
||||
choosen = choosable.get(getGame().getRandom().nextInt(choosable.size()));
|
||||
}
|
||||
}
|
||||
}
|
||||
if(choosen != null) {
|
||||
getGame().kill(choosen, Reason.LOUP_GAROU);
|
||||
for(LGPlayer player : getPlayers())
|
||||
player.sendMessage("§6Les §c§lLoups§6 ont décidé de tuer §7§l"+choosen.getName()+"§6.");
|
||||
}else
|
||||
for(LGPlayer player : getPlayers())
|
||||
player.sendMessage("§6Personne n'a été désigné pour mourir.");
|
||||
}
|
||||
private void onNightTurnEnd() {
|
||||
for (LGPlayer lgp : getGame().getAlive())
|
||||
if (lgp.getRoleType() == RoleType.LOUP_GAROU)
|
||||
lgp.hideView();
|
||||
for (LGPlayer player : getPlayers()) {
|
||||
player.leaveChat();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onGameJoin(LGGameEndEvent e) {
|
||||
if(e.getGame() == getGame()) {
|
||||
WrapperPlayServerScoreboardTeam teamDelete = new WrapperPlayServerScoreboardTeam();
|
||||
teamDelete.setMode(1);
|
||||
teamDelete.setName("loup_garou_list");
|
||||
LGPlayer choosen = vote.getChoosen();
|
||||
if (choosen == null) {
|
||||
if (vote.getVotes().size() > 0) {
|
||||
int max = 0;
|
||||
boolean equal = false;
|
||||
for (Entry<LGPlayer, List<LGPlayer>> entry : vote.getVotes().entrySet())
|
||||
if (entry.getValue().size() > max) {
|
||||
equal = false;
|
||||
max = entry.getValue().size();
|
||||
choosen = entry.getKey();
|
||||
} else if (entry.getValue().size() == max)
|
||||
equal = true;
|
||||
if (equal) {
|
||||
choosen = null;
|
||||
ArrayList<LGPlayer> choosable = new ArrayList<>();
|
||||
for (Entry<LGPlayer, List<LGPlayer>> entry : vote.getVotes().entrySet())
|
||||
if (entry.getValue().size() == max && entry.getKey().getRoleType() != RoleType.LOUP_GAROU)
|
||||
choosable.add(entry.getKey());
|
||||
if (choosable.size() > 0)
|
||||
choosen = choosable.get(getGame().getRandom().nextInt(choosable.size()));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (choosen != null) {
|
||||
getGame().kill(choosen, Reason.LOUP_GAROU);
|
||||
for (LGPlayer player : getPlayers())
|
||||
player.sendMessage("§6Les §c§lLoups§6 ont décidé de tuer §7§l" + choosen.getName() + "§6.");
|
||||
} else
|
||||
for (LGPlayer player : getPlayers())
|
||||
player.sendMessage("§6Personne n'a été désigné pour mourir.");
|
||||
}
|
||||
|
||||
for(LGPlayer lgp : getGame().getInGame())
|
||||
teamDelete.sendPacket(lgp.getPlayer());
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onGameJoin(LGGameEndEvent e) {
|
||||
if (e.getGame() == getGame()) {
|
||||
WrapperPlayServerScoreboardTeam teamDelete = new WrapperPlayServerScoreboardTeam();
|
||||
teamDelete.setMode(1);
|
||||
teamDelete.setName("loup_garou_list");
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onSkinChange(LGSkinLoadEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
if(getPlayers().contains(e.getPlayer()) && getPlayers().contains(e.getTo()) && showSkins) {
|
||||
e.getProfile().getProperties().removeAll("textures");
|
||||
e.getProfile().getProperties().put("textures", LGCustomSkin.WEREWOLF.getProperty());
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onGameEnd(LGGameEndEvent e) {
|
||||
if(e.getGame() == getGame() && e.getWinType() == LGWinType.LOUPGAROU)
|
||||
for(LGPlayer lgp : getGame().getInGame())
|
||||
if(lgp.getRoleWinType() == RoleWinType.LOUP_GAROU)//Changed to wintype
|
||||
e.getWinners().add(lgp);
|
||||
}
|
||||
for (LGPlayer lgp : getGame().getInGame())
|
||||
teamDelete.sendPacket(lgp.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onUpdatePrefix (LGUpdatePrefixEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
if(getPlayers().contains(e.getTo()) && getPlayers().contains(e.getPlayer()))
|
||||
e.setPrefix(e.getPrefix()+"§c");
|
||||
}
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onSkinChange(LGSkinLoadEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
if (getPlayers().contains(e.getPlayer()) && getPlayers().contains(e.getTo()) && showSkins) {
|
||||
e.getProfile().getProperties().removeAll("textures");
|
||||
e.getProfile().getProperties().put("textures", LGCustomSkin.WEREWOLF.getProperty());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDay(LGNightEndEvent e) {
|
||||
if(e.getGame() == getGame()) {
|
||||
showSkins = false;
|
||||
for(LGPlayer player : getPlayers())
|
||||
player.updateOwnSkin();
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onNight(LGDayEndEvent e) {
|
||||
if(e.getGame() == getGame()) {
|
||||
showSkins = true;
|
||||
for(LGPlayer player : getPlayers())
|
||||
player.updateOwnSkin();
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onGameEnd(LGGameEndEvent e) {
|
||||
if (e.getGame() == getGame() && e.getWinType() == LGWinType.LOUPGAROU)
|
||||
for (LGPlayer lgp : getGame().getInGame())
|
||||
if (lgp.getRoleWinType() == RoleWinType.LOUP_GAROU)//Changed to wintype
|
||||
e.getWinners().add(lgp);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onUpdatePrefix(LGUpdatePrefixEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
if (getPlayers().contains(e.getTo()) && getPlayers().contains(e.getPlayer()))
|
||||
e.setPrefix(e.getPrefix() + "§c");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDay(LGNightEndEvent e) {
|
||||
if (e.getGame() == getGame()) {
|
||||
showSkins = false;
|
||||
for (LGPlayer player : getPlayers())
|
||||
player.updateOwnSkin();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onNight(LGDayEndEvent e) {
|
||||
if (e.getGame() == getGame()) {
|
||||
showSkins = true;
|
||||
for (LGPlayer player : getPlayers())
|
||||
player.updateOwnSkin();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGWinType;
|
||||
import fr.leomelki.loupgarou.events.LGEndCheckEvent;
|
||||
import fr.leomelki.loupgarou.events.LGGameEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
@ -10,154 +14,156 @@ import org.bukkit.event.player.PlayerInteractEvent;
|
|||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGWinType;
|
||||
import fr.leomelki.loupgarou.events.LGEndCheckEvent;
|
||||
import fr.leomelki.loupgarou.events.LGGameEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import java.util.Collections;
|
||||
|
||||
public class RLoupGarouBlanc extends Role{
|
||||
private static final ItemStack skip;
|
||||
static {
|
||||
skip = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = skip.getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
meta.setLore(Collections.singletonList("§8Passez votre tour"));
|
||||
skip.setItemMeta(meta);
|
||||
}
|
||||
public class RLoupGarouBlanc extends Role {
|
||||
private static final ItemStack skip;
|
||||
|
||||
public RLoupGarouBlanc(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
static {
|
||||
skip = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = skip.getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
meta.setLore(Collections.singletonList("§8Passez votre tour"));
|
||||
skip.setItemMeta(meta);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§c§lLoup Blanc";
|
||||
}
|
||||
Runnable callback;
|
||||
RLoupGarou lg;
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
public RLoupGarouBlanc(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes §7§lSEUL";
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§c§lLoup Blanc";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes §7§lSEUL§f. Les autres §c§lLoups§f croient que tu es un loup normal, mais une nuit sur deux, tu peux assassiner l'un d'eux au choix.";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Tu peux choisir un §c§lLoup-Garou§6 à éliminer, ou te rendormir.";
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes §7§lSEUL";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le "+getName()+"§9 pourrait faire un ravage cette nuit...";
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.LOUP_GAROU;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.SEUL;
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes §7§lSEUL§f. Les autres §c§lLoups§f croient que tu es un loup normal, mais une nuit sur deux, tu peux assassiner l'un d'eux au choix.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Tu peux choisir un §c§lLoup-Garou§6 à éliminer, ou te rendormir.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
return super.hasPlayersLeft() && getGame().getNight()%2 == 0;
|
||||
}
|
||||
Runnable callback;
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
this.callback = callback;
|
||||
RLoupGarou lg_ = null;
|
||||
for(Role role : getGame().getRoles())
|
||||
if(role instanceof RLoupGarou) {
|
||||
lg_ = (RLoupGarou)role;
|
||||
break;
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le " + getName() + "§9 pourrait faire un ravage cette nuit...";
|
||||
}
|
||||
|
||||
RLoupGarou lg = lg_;
|
||||
player.showView();
|
||||
player.getPlayer().getInventory().setItem(8, skip);
|
||||
player.choose(choosen -> {
|
||||
if(choosen != null && choosen != player) {
|
||||
if(!lg.getPlayers().contains(choosen)) {
|
||||
player.sendMessage("§7§l"+choosen.getName()+"§4 n'est pas un Loup-Garou.");
|
||||
return;
|
||||
}
|
||||
player.sendActionBarMessage("§e§l"+choosen.getName()+"§6 va mourir cette nuit");
|
||||
player.sendMessage("§6Tu as choisi de dévorer §7§l"+choosen.getName()+"§6.");
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.getPlayer().updateInventory();
|
||||
getGame().kill(choosen, Reason.LOUP_BLANC);
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
@EventHandler
|
||||
public void onClick(PlayerInteractEvent e) {
|
||||
Player p = e.getPlayer();
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), p);
|
||||
if(e.getItem() != null && e.getItem().getType() == Material.IRON_NUGGET && player.getRole() == this) {
|
||||
player.stopChoosing();
|
||||
p.getInventory().setItem(8, null);
|
||||
p.updateInventory();
|
||||
player.hideView();
|
||||
player.sendMessage("§6Tu n'as tué personne.");
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.getPlayer().updateInventory();
|
||||
player.hideView();
|
||||
player.sendMessage("§6Tu n'as tué personne.");
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.LOUP_GAROU;
|
||||
}
|
||||
|
||||
RLoupGarou lg;
|
||||
@Override
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
super.join(player, sendMessage);
|
||||
for(Role role : getGame().getRoles())
|
||||
if(role instanceof RLoupGarou)
|
||||
(lg = (RLoupGarou) role).join(player, false);
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.SEUL;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEndgameCheck(LGEndCheckEvent e) {
|
||||
if(e.getGame() == getGame() && e.getWinType() == LGWinType.SOLO) {
|
||||
if(getPlayers().size() > 0) {
|
||||
if(lg.getPlayers().size() > getPlayers().size())
|
||||
e.setWinType(LGWinType.NONE);
|
||||
else if(lg.getPlayers().size() == getPlayers().size())
|
||||
e.setWinType(LGWinType.LOUPGAROUBLANC);
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onEndGame(LGGameEndEvent e) {
|
||||
if(e.getWinType() == LGWinType.LOUPGAROUBLANC) {
|
||||
e.getWinners().clear();
|
||||
e.getWinners().addAll(getPlayers());
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
return super.hasPlayersLeft() && getGame().getNight() % 2 == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
this.callback = callback;
|
||||
RLoupGarou lg_ = null;
|
||||
for (Role role : getGame().getRoles())
|
||||
if (role instanceof RLoupGarou) {
|
||||
lg_ = (RLoupGarou) role;
|
||||
break;
|
||||
}
|
||||
|
||||
RLoupGarou lg = lg_;
|
||||
player.showView();
|
||||
player.getPlayer().getInventory().setItem(8, skip);
|
||||
player.choose(choosen -> {
|
||||
if (choosen != null && choosen != player) {
|
||||
if (!lg.getPlayers().contains(choosen)) {
|
||||
player.sendMessage("§7§l" + choosen.getName() + "§4 n'est pas un Loup-Garou.");
|
||||
return;
|
||||
}
|
||||
player.sendActionBarMessage("§e§l" + choosen.getName() + "§6 va mourir cette nuit");
|
||||
player.sendMessage("§6Tu as choisi de dévorer §7§l" + choosen.getName() + "§6.");
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.getPlayer().updateInventory();
|
||||
getGame().kill(choosen, Reason.LOUP_BLANC);
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onClick(PlayerInteractEvent e) {
|
||||
Player p = e.getPlayer();
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), p);
|
||||
if (e.getItem() != null && e.getItem().getType() == Material.IRON_NUGGET && player.getRole() == this) {
|
||||
player.stopChoosing();
|
||||
p.getInventory().setItem(8, null);
|
||||
p.updateInventory();
|
||||
player.hideView();
|
||||
player.sendMessage("§6Tu n'as tué personne.");
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.getPlayer().updateInventory();
|
||||
player.hideView();
|
||||
player.sendMessage("§6Tu n'as tué personne.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
super.join(player, sendMessage);
|
||||
for (Role role : getGame().getRoles())
|
||||
if (role instanceof RLoupGarou)
|
||||
(lg = (RLoupGarou) role).join(player, false);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEndgameCheck(LGEndCheckEvent e) {
|
||||
if (e.getGame() == getGame() && e.getWinType() == LGWinType.SOLO) {
|
||||
if (getPlayers().size() > 0) {
|
||||
if (lg.getPlayers().size() > getPlayers().size())
|
||||
e.setWinType(LGWinType.NONE);
|
||||
else if (lg.getPlayers().size() == getPlayers().size())
|
||||
e.setWinType(LGWinType.LOUPGAROUBLANC);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onEndGame(LGGameEndEvent e) {
|
||||
if (e.getWinType() == LGWinType.LOUPGAROUBLANC) {
|
||||
e.getWinners().clear();
|
||||
e.getWinners().addAll(getPlayers());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,8 +1,14 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGCustomItems;
|
||||
import fr.leomelki.loupgarou.classes.LGCustomItems.LGCustomItemsConstraints;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGVote;
|
||||
import fr.leomelki.loupgarou.events.LGCustomItemChangeEvent;
|
||||
import fr.leomelki.loupgarou.events.LGNightEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventoryCustom;
|
||||
|
@ -16,213 +22,212 @@ import org.bukkit.inventory.ItemStack;
|
|||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGCustomItems;
|
||||
import fr.leomelki.loupgarou.classes.LGCustomItems.LGCustomItemsConstraints;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGVote;
|
||||
import fr.leomelki.loupgarou.events.LGCustomItemChangeEvent;
|
||||
import fr.leomelki.loupgarou.events.LGNightEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
public class RLoupGarouNoir extends Role{
|
||||
static final ItemStack[] items = new ItemStack[9];
|
||||
static final ItemStack[] skip = new ItemStack[9];
|
||||
static {
|
||||
items[3] = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = items[3].getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
meta.setLore(Collections.singletonList("§8Passez votre tour"));
|
||||
items[3].setItemMeta(meta);
|
||||
items[5] = new ItemStack(Material.ROTTEN_FLESH);
|
||||
meta = items[5].getItemMeta();
|
||||
meta.setDisplayName("§c§lInfecter");
|
||||
meta.setLore(Arrays.asList(
|
||||
"§8Tu peux infecter la cible du vote.",
|
||||
"§8Le joueur tiendra avec les Loups."));
|
||||
items[5].setItemMeta(meta);
|
||||
skip[4] = items[3];
|
||||
}
|
||||
public class RLoupGarouNoir extends Role {
|
||||
static final ItemStack[] items = new ItemStack[9];
|
||||
static final ItemStack[] skip = new ItemStack[9];
|
||||
|
||||
public RLoupGarouNoir(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
static {
|
||||
items[3] = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = items[3].getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
meta.setLore(Collections.singletonList("§8Passez votre tour"));
|
||||
items[3].setItemMeta(meta);
|
||||
items[5] = new ItemStack(Material.ROTTEN_FLESH);
|
||||
meta = items[5].getItemMeta();
|
||||
meta.setDisplayName("§c§lInfecter");
|
||||
meta.setLore(Arrays.asList(
|
||||
"§8Tu peux infecter la cible du vote.",
|
||||
"§8Le joueur tiendra avec les Loups."));
|
||||
items[5].setItemMeta(meta);
|
||||
skip[4] = items[3];
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§c§lLoup Noir";
|
||||
}
|
||||
LGVote vote;
|
||||
Runnable callback;
|
||||
LGPlayer toInfect;
|
||||
boolean inMenu = false;
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
public RLoupGarouNoir(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec les §c§lLoups-Garous";
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§c§lLoup Noir";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec les §c§lLoups-Garous§f. Chaque nuit, tu te réunis avec tes compères pour décider d'une victime à éliminer... Une fois dans la partie, tu peux transformer la personne désignée en §c§lLoup§f. L'infecté conserve ses pouvoirs mais gagne désormais avec les §c§lLoups§f.";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Veux-tu infecter la cible du vote ?";
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec les §c§lLoups-Garous";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le "+getName()+"§9 décide s'il veut infecter sa cible.";
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.LOUP_GAROU;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.LOUP_GAROU;
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec les §c§lLoups-Garous§f. Chaque nuit, tu te réunis avec tes compères pour décider d'une victime à éliminer... Une fois dans la partie, tu peux transformer la personne désignée en §c§lLoup§f. L'infecté conserve ses pouvoirs mais gagne désormais avec les §c§lLoups§f.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Veux-tu infecter la cible du vote ?";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
return super.hasPlayersLeft() && getGame().getDeaths().containsKey(Reason.LOUP_GAROU);
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le " + getName() + "§9 décide s'il veut infecter sa cible.";
|
||||
}
|
||||
|
||||
LGVote vote;
|
||||
Runnable callback;
|
||||
LGPlayer toInfect;
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.LOUP_GAROU;
|
||||
}
|
||||
|
||||
public void openInventory(Player player) {
|
||||
inMenu = true;
|
||||
Inventory inventory = Bukkit.createInventory(null, 9, "§7Infecter "+toInfect.getName()+" ?");
|
||||
inventory.setContents(toInfect == null ? skip.clone() : items.clone());
|
||||
player.closeInventory();
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
toInfect = getGame().getDeaths().get(Reason.LOUP_GAROU);
|
||||
if(toInfect.getRoleType() == RoleType.LOUP_GAROU)
|
||||
toInfect = null;
|
||||
player.showView();
|
||||
this.callback = callback;
|
||||
openInventory(player.getPlayer());
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.stopChoosing();
|
||||
closeInventory(player.getPlayer());
|
||||
player.getPlayer().updateInventory();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'infectez personne", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
player.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.LOUP_GAROU;
|
||||
}
|
||||
|
||||
boolean inMenu = false;
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player)e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
return super.hasPlayersLeft() && getGame().getDeaths().containsKey(Reason.LOUP_GAROU);
|
||||
}
|
||||
|
||||
if(lgp.getRole() != this || item == null || item.getItemMeta() == null)return;
|
||||
public void openInventory(Player player) {
|
||||
inMenu = true;
|
||||
Inventory inventory = Bukkit.createInventory(null, 9, "§7Infecter " + toInfect.getName() + " ?");
|
||||
inventory.setContents(toInfect == null ? skip.clone() : items.clone());
|
||||
player.closeInventory();
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
|
||||
if(item.getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
lgp.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}else if(item.getItemMeta().getDisplayName().equals(items[5].getItemMeta().getDisplayName()) && toInfect != null) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
player.updateInventory();
|
||||
closeInventory(player);
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
toInfect = getGame().getDeaths().get(Reason.LOUP_GAROU);
|
||||
if (toInfect.getRoleType() == RoleType.LOUP_GAROU)
|
||||
toInfect = null;
|
||||
player.showView();
|
||||
this.callback = callback;
|
||||
openInventory(player.getPlayer());
|
||||
}
|
||||
|
||||
lgp.getCache().set("has_infected", true);
|
||||
toInfect.getCache().set("infected", true);
|
||||
getPlayers().remove(lgp);
|
||||
toInfect.getCache().set("just_infected", true);
|
||||
lgp.sendActionBarMessage("§9§lVous infectez §9"+toInfect.getName());
|
||||
lgp.sendMessage("§6Tu as infecté §7§l"+toInfect.getName()+"§6.");
|
||||
lgp.stopChoosing();
|
||||
getGame().getDeaths().remove(Reason.LOUP_GAROU, toInfect);
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onDayStart(LGNightEndEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
for(LGPlayer player : getGame().getAlive()) {
|
||||
if(player.getCache().getBoolean("just_infected")) {
|
||||
player.getCache().remove("just_infected");
|
||||
player.sendMessage("§6Tu as été infecté pendant la nuit.");
|
||||
player.sendMessage("§6§oTu gagnes désormais avec les §c§l§oLoups-Garous§6§o.");
|
||||
for(Role role : getGame().getRoles())
|
||||
if(role instanceof RLoupGarou)
|
||||
if(!player.isDead()) {//Si il n'a pas été tué je ne sais comment
|
||||
role.join(player, false);
|
||||
player.getPlayer().getInventory().setItemInOffHand(new ItemStack(LGCustomItems.getItem(player)));
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.stopChoosing();
|
||||
closeInventory(player.getPlayer());
|
||||
player.getPlayer().updateInventory();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'infectez personne", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
player.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
}
|
||||
|
||||
for(LGPlayer lgp : getGame().getInGame()) {
|
||||
if(lgp.getRoleType() == RoleType.LOUP_GAROU)
|
||||
lgp.sendMessage("§7§l"+player.getName()+"§6 s'est fait infecter pendant la nuit.");
|
||||
else
|
||||
lgp.sendMessage("§6Un joueur a été §c§linfecté§6 pendant la nuit.");
|
||||
}
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
|
||||
if(getGame().checkEndGame())
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player) e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
|
||||
@Override
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
super.join(player, sendMessage);
|
||||
for(Role role : getGame().getRoles())
|
||||
if(role instanceof RLoupGarou)
|
||||
role.join(player, false);
|
||||
}
|
||||
if (lgp.getRole() != this || item == null || item.getItemMeta() == null) return;
|
||||
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if(e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player)e.getPlayer());
|
||||
if(player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
if (item.getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
lgp.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
} else if (item.getItemMeta().getDisplayName().equals(items[5].getItemMeta().getDisplayName()) && toInfect != null) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
player.updateInventory();
|
||||
closeInventory(player);
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
lgp.getCache().set("has_infected", true);
|
||||
toInfect.getCache().set("infected", true);
|
||||
getPlayers().remove(lgp);
|
||||
toInfect.getCache().set("just_infected", true);
|
||||
lgp.sendActionBarMessage("§9§lVous infectez §9" + toInfect.getName());
|
||||
lgp.sendMessage("§6Tu as infecté §7§l" + toInfect.getName() + "§6.");
|
||||
lgp.stopChoosing();
|
||||
getGame().getDeaths().remove(Reason.LOUP_GAROU, toInfect);
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onCustomItemChange(LGCustomItemChangeEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
if(e.getPlayer().getCache().getBoolean("infected"))
|
||||
e.getConstraints().add(LGCustomItemsConstraints.INFECTED.getName());
|
||||
}
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onDayStart(LGNightEndEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
for (LGPlayer player : getGame().getAlive()) {
|
||||
if (player.getCache().getBoolean("just_infected")) {
|
||||
player.getCache().remove("just_infected");
|
||||
player.sendMessage("§6Tu as été infecté pendant la nuit.");
|
||||
player.sendMessage("§6§oTu gagnes désormais avec les §c§l§oLoups-Garous§6§o.");
|
||||
for (Role role : getGame().getRoles())
|
||||
if (role instanceof RLoupGarou)
|
||||
if (!player.isDead()) {//Si il n'a pas été tué je ne sais comment
|
||||
role.join(player, false);
|
||||
player.getPlayer().getInventory().setItemInOffHand(new ItemStack(LGCustomItems.getItem(player)));
|
||||
}
|
||||
|
||||
for (LGPlayer lgp : getGame().getInGame()) {
|
||||
if (lgp.getRoleType() == RoleType.LOUP_GAROU)
|
||||
lgp.sendMessage("§7§l" + player.getName() + "§6 s'est fait infecter pendant la nuit.");
|
||||
else
|
||||
lgp.sendMessage("§6Un joueur a été §c§linfecté§6 pendant la nuit.");
|
||||
}
|
||||
|
||||
if (getGame().checkEndGame())
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
super.join(player, sendMessage);
|
||||
for (Role role : getGame().getRoles())
|
||||
if (role instanceof RLoupGarou)
|
||||
role.join(player, false);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if (e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player) e.getPlayer());
|
||||
if (player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onCustomItemChange(LGCustomItemChangeEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
if (e.getPlayer().getCache().getBoolean("infected"))
|
||||
e.getConstraints().add(LGCustomItemsConstraints.INFECTED.getName());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,96 +1,105 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.chat.LGChat;
|
||||
import fr.leomelki.loupgarou.events.LGDayEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPreDayStartEvent;
|
||||
import fr.leomelki.loupgarou.events.LGRoleTurnEndEvent;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
public class RMedium extends Role{
|
||||
public RMedium(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lMédium";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu peux communiquer avec les morts pour tenter de récupérer des informations cruciales.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
public class RMedium extends Role {
|
||||
public RMedium(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onNight(LGDayEndEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
for(LGPlayer lgp : getPlayers()) {
|
||||
lgp.sendMessage("§8§oTu entres en contact avec le monde des morts...");
|
||||
joinChat(lgp);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lMédium";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu peux communiquer avec les morts pour tenter de récupérer des informations cruciales.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onNight(LGDayEndEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
for (LGPlayer lgp : getPlayers()) {
|
||||
lgp.sendMessage("§8§oTu entres en contact avec le monde des morts...");
|
||||
joinChat(lgp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void joinChat(LGPlayer lgp) {
|
||||
lgp.joinChat(getGame().getSpectatorChat(), new LGChat.LGChatCallback() {
|
||||
private void joinChat(LGPlayer lgp) {
|
||||
lgp.joinChat(getGame().getSpectatorChat(), new LGChat.LGChatCallback() {
|
||||
|
||||
@Override
|
||||
public String receive(LGPlayer sender, String message) {
|
||||
return "§7"+sender.getName()+"§6 » §f"+message;
|
||||
}
|
||||
@Override
|
||||
public String receive(LGPlayer sender, String message) {
|
||||
return "§7" + sender.getName() + "§6 » §f" + message;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String send(LGPlayer sender, String message) {
|
||||
return getName()+"§6 » §f"+message;
|
||||
}
|
||||
@Override
|
||||
public String send(LGPlayer sender, String message) {
|
||||
return getName() + "§6 » §f" + message;
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
@EventHandler
|
||||
public void onRoleTurn(LGRoleTurnEndEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
if(e.getPreviousRole() instanceof RLoupGarou)
|
||||
for(LGPlayer lgp : getPlayers())
|
||||
if(lgp.getChat() != getGame().getSpectatorChat() && lgp.isRoleActive()) {
|
||||
lgp.sendMessage("§6§oTu peux de nouveau parler aux morts...");
|
||||
joinChat(lgp);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDay(LGPreDayStartEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
for(LGPlayer lgp : getPlayers())
|
||||
if(lgp.isRoleActive())
|
||||
lgp.leaveChat();
|
||||
}
|
||||
@EventHandler
|
||||
public void onRoleTurn(LGRoleTurnEndEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
if (e.getPreviousRole() instanceof RLoupGarou)
|
||||
for (LGPlayer lgp : getPlayers())
|
||||
if (lgp.getChat() != getGame().getSpectatorChat() && lgp.isRoleActive()) {
|
||||
lgp.sendMessage("§6§oTu peux de nouveau parler aux morts...");
|
||||
joinChat(lgp);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDay(LGPreDayStartEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
for (LGPlayer lgp : getPlayers())
|
||||
if (lgp.isRoleActive())
|
||||
lgp.leaveChat();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,104 +1,112 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGDayStartEvent;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
public class RMontreurDOurs extends Role{
|
||||
public RMontreurDOurs(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lMontreur d'Ours";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque matin, ton Ours va renifler tes voisins et grognera si l'un d'eux est hostile aux Villageois.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
private static final Random random = new Random();
|
||||
private int lastNight = -1;
|
||||
public class RMontreurDOurs extends Role {
|
||||
private static final Random random = new Random();
|
||||
private int lastNight = -1;
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onDay(LGDayStartEvent e) {
|
||||
if (e.getGame() == getGame() && getPlayers().size() > 0) {
|
||||
if(lastNight == getGame().getNight())
|
||||
return;
|
||||
lastNight = getGame().getNight();
|
||||
List<?> original = MainLg.getInstance().getConfig().getList("spawns");
|
||||
for(LGPlayer target : getPlayers()) {
|
||||
if(!target.isRoleActive())
|
||||
continue;
|
||||
int size = original.size();
|
||||
int killedPlace = target.getPlace();
|
||||
public RMontreurDOurs(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
for (int i = killedPlace + 1;; i++) {
|
||||
if (i == size)
|
||||
i = 0;
|
||||
LGPlayer lgp = getGame().getPlacements().get(i);
|
||||
if (lgp != null && !lgp.isDead()) {
|
||||
if(lgp.getRoleWinType() == RoleWinType.VILLAGE || lgp.getRoleWinType() == RoleWinType.NONE)
|
||||
break;
|
||||
else{
|
||||
getGame().broadcastMessage("§6La bête du "+getName()+"§6 grogne...");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (lgp == target)// Fait un tour complet
|
||||
break;
|
||||
}
|
||||
for (int i = killedPlace - 1;; i--) {
|
||||
if (i == -1)
|
||||
i = size - 1;
|
||||
LGPlayer lgp = getGame().getPlacements().get(i);
|
||||
if (lgp != null && !lgp.isDead()) {
|
||||
if(lgp.getRoleWinType() == RoleWinType.VILLAGE || lgp.getRoleWinType() == RoleWinType.NONE)
|
||||
break;
|
||||
else{
|
||||
getGame().broadcastMessage("§6La bête du "+getName()+"§6 grogne...");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (lgp == target)// Fait un tour complet
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lMontreur d'Ours";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque matin, ton Ours va renifler tes voisins et grognera si l'un d'eux est hostile aux Villageois.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onDay(LGDayStartEvent e) {
|
||||
if (e.getGame() == getGame() && getPlayers().size() > 0) {
|
||||
if (lastNight == getGame().getNight())
|
||||
return;
|
||||
lastNight = getGame().getNight();
|
||||
List<?> original = MainLg.getInstance().getConfig().getList("spawns");
|
||||
for (LGPlayer target : getPlayers()) {
|
||||
if (!target.isRoleActive())
|
||||
continue;
|
||||
int size = original.size();
|
||||
int killedPlace = target.getPlace();
|
||||
|
||||
for (int i = killedPlace + 1; ; i++) {
|
||||
if (i == size)
|
||||
i = 0;
|
||||
LGPlayer lgp = getGame().getPlacements().get(i);
|
||||
if (lgp != null && !lgp.isDead()) {
|
||||
if (lgp.getRoleWinType() == RoleWinType.VILLAGE || lgp.getRoleWinType() == RoleWinType.NONE)
|
||||
break;
|
||||
else {
|
||||
getGame().broadcastMessage("§6La bête du " + getName() + "§6 grogne...");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (lgp == target)// Fait un tour complet
|
||||
break;
|
||||
}
|
||||
for (int i = killedPlace - 1; ; i--) {
|
||||
if (i == -1)
|
||||
i = size - 1;
|
||||
LGPlayer lgp = getGame().getPlacements().get(i);
|
||||
if (lgp != null && !lgp.isDead()) {
|
||||
if (lgp.getRoleWinType() == RoleWinType.VILLAGE || lgp.getRoleWinType() == RoleWinType.NONE)
|
||||
break;
|
||||
else {
|
||||
getGame().broadcastMessage("§6La bête du " + getName() + "§6 grogne...");
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (lgp == target)// Fait un tour complet
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,73 +1,81 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGRoleTurnEndEvent;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
public class RPetiteFille extends Role{
|
||||
public RPetiteFille(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lPetite Fille";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de la "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu peux espionner les §c§lLoups§f.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
final List<String> customNames = Arrays.asList("Loup Glouton", "Loup Méchant", "Loup Burlesque", "Loup Peureux", "Loup Malingre", "Loup Gentil", "Loup Tueur", "Loup Énervé", "Loup Docteur");
|
||||
public class RPetiteFille extends Role {
|
||||
final List<String> customNames = Arrays.asList("Loup Glouton", "Loup Méchant", "Loup Burlesque", "Loup Peureux", "Loup Malingre", "Loup Gentil", "Loup Tueur", "Loup Énervé", "Loup Docteur");
|
||||
|
||||
@EventHandler
|
||||
public void onChangeRole(LGRoleTurnEndEvent e) {
|
||||
if(e.getGame() == getGame()) {
|
||||
if(e.getNewRole() instanceof RLoupGarou)
|
||||
for(Role role : getGame().getRoles())
|
||||
if(role instanceof RLoupGarou) {
|
||||
RLoupGarou lgRole = (RLoupGarou)role;
|
||||
for(LGPlayer player : getPlayers())
|
||||
if(!player.getCache().getBoolean("infected") && player.isRoleActive())
|
||||
player.joinChat(lgRole.getChat(), (sender, message)-> "§c"+customNames.get(lgRole.getPlayers().indexOf(sender))+" §6» §f"+message, true);
|
||||
break;
|
||||
}
|
||||
if(e.getPreviousRole() instanceof RLoupGarou)
|
||||
for(LGPlayer player : getPlayers())
|
||||
if(!player.getCache().getBoolean("infected") && player.isRoleActive())
|
||||
player.leaveChat();
|
||||
}
|
||||
}
|
||||
public RPetiteFille(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lPetite Fille";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de la " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu peux espionner les §c§lLoups§f.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onChangeRole(LGRoleTurnEndEvent e) {
|
||||
if (e.getGame() == getGame()) {
|
||||
if (e.getNewRole() instanceof RLoupGarou)
|
||||
for (Role role : getGame().getRoles())
|
||||
if (role instanceof RLoupGarou) {
|
||||
RLoupGarou lgRole = (RLoupGarou) role;
|
||||
for (LGPlayer player : getPlayers())
|
||||
if (!player.getCache().getBoolean("infected") && player.isRoleActive())
|
||||
player.joinChat(lgRole.getChat(), (sender, message) -> "§c" + customNames.get(lgRole.getPlayers().indexOf(sender)) + " §6» §f" + message, true);
|
||||
break;
|
||||
}
|
||||
if (e.getPreviousRole() instanceof RLoupGarou)
|
||||
for (LGPlayer player : getPlayers())
|
||||
if (!player.getCache().getBoolean("infected") && player.isRoleActive())
|
||||
player.leaveChat();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerHeldItemSlot;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventoryCustom;
|
||||
|
@ -17,193 +20,196 @@ import org.bukkit.inventory.ItemStack;
|
|||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerHeldItemSlot;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
public class RPirate extends Role{
|
||||
static final ItemStack[] items = new ItemStack[9];
|
||||
static {
|
||||
items[3] = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = items[3].getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
meta.setLore(Collections.singletonList("§8Passez votre tour"));
|
||||
items[3].setItemMeta(meta);
|
||||
items[5] = new ItemStack(Material.ROTTEN_FLESH);
|
||||
meta = items[5].getItemMeta();
|
||||
meta.setDisplayName("§6§lPrendre un otage");
|
||||
meta.setLore(Arrays.asList(
|
||||
"§8Tu peux prendre un joueur en otage",
|
||||
"§8Si tu meurs du vote, il mourra à ta place."));
|
||||
items[5].setItemMeta(meta);
|
||||
}
|
||||
public class RPirate extends Role {
|
||||
static final ItemStack[] items = new ItemStack[9];
|
||||
|
||||
public RPirate(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
static {
|
||||
items[3] = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = items[3].getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
meta.setLore(Collections.singletonList("§8Passez votre tour"));
|
||||
items[3].setItemMeta(meta);
|
||||
items[5] = new ItemStack(Material.ROTTEN_FLESH);
|
||||
meta = items[5].getItemMeta();
|
||||
meta.setDisplayName("§6§lPrendre un otage");
|
||||
meta.setLore(Arrays.asList(
|
||||
"§8Tu peux prendre un joueur en otage",
|
||||
"§8Si tu meurs du vote, il mourra à ta place."));
|
||||
items[5].setItemMeta(meta);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lPirate";
|
||||
}
|
||||
Runnable callback;
|
||||
boolean inMenu = false;
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
public RPirate(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lPirate";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Une fois dans la partie, tu peux prendre en otage un autre joueur. Si tu es désigné à l'issue du vote de jour, ton §lotage§f mourra à ta place et ton rôle sera dévoilé au reste du village";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Veux-tu prendre quelqu'un en otage ?";
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le "+getName()+"§9 aiguise son crochet...";
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Une fois dans la partie, tu peux prendre en otage un autre joueur. Si tu es désigné à l'issue du vote de jour, ton §lotage§f mourra à ta place et ton rôle sera dévoilé au reste du village";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Veux-tu prendre quelqu'un en otage ?";
|
||||
}
|
||||
|
||||
Runnable callback;
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le " + getName() + "§9 aiguise son crochet...";
|
||||
}
|
||||
|
||||
public void openInventory(Player player) {
|
||||
inMenu = true;
|
||||
Inventory inventory = Bukkit.createInventory(null, 9, "§7Veux-tu prendre un otage ?");
|
||||
inventory.setContents(items.clone());
|
||||
player.closeInventory();
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
this.callback = callback;
|
||||
openInventory(player.getPlayer());
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.stopChoosing();
|
||||
closeInventory(player.getPlayer());
|
||||
player.getPlayer().updateInventory();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'infectez personne", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
player.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
boolean inMenu = false;
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player)e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
if(lgp.getRole() != this || item == null || item.getItemMeta() == null)return;
|
||||
public void openInventory(Player player) {
|
||||
inMenu = true;
|
||||
Inventory inventory = Bukkit.createInventory(null, 9, "§7Veux-tu prendre un otage ?");
|
||||
inventory.setContents(items.clone());
|
||||
player.closeInventory();
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
|
||||
if(item.getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
lgp.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}else if(item.getItemMeta().getDisplayName().equals(items[5].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
player.getInventory().setItem(8, items[3]);
|
||||
player.updateInventory();
|
||||
//Pour éviter les missclick
|
||||
WrapperPlayServerHeldItemSlot held = new WrapperPlayServerHeldItemSlot();
|
||||
held.setSlot(0);
|
||||
held.sendPacket(player);
|
||||
lgp.sendMessage("§6Choisissez votre otage.");
|
||||
lgp.choose(choosen -> {
|
||||
if(choosen != null) {
|
||||
player.getInventory().setItem(8, null);
|
||||
player.updateInventory();
|
||||
lgp.stopChoosing();
|
||||
lgp.sendMessage("§6Tu as pris §7§l"+choosen.getName()+"§6 en otage.");
|
||||
lgp.sendActionBarMessage("§7§l"+choosen.getName()+"§6 est ton otage");
|
||||
lgp.getCache().set("pirate_otage", choosen);
|
||||
choosen.getCache().set("pirate_otage_d", lgp);
|
||||
getPlayers().remove(lgp);//Pour éviter qu'il puisse prendre plusieurs otages
|
||||
choosen.sendMessage("§7§l"+lgp.getName()+"§6 t'a pris en otage, il est "+getName()+"§6.");
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}, lgp);
|
||||
}
|
||||
}
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onPlayerKilled(LGPlayerKilledEvent e) {
|
||||
if(e.getGame() == getGame() && e.getReason() == Reason.VOTE)
|
||||
if(e.getKilled().getCache().has("pirate_otage") && e.getKilled().isRoleActive()) {
|
||||
LGPlayer otage = e.getKilled().getCache().remove("pirate_otage");
|
||||
if(!otage.isDead() && otage.getCache().get("pirate_otage_d") == e.getKilled()) {
|
||||
getGame().broadcastMessage("§7§l"+e.getKilled().getName()+"§6 est "+getName()+"§6, c'est son otage qui va mourir.");
|
||||
e.setKilled(otage);
|
||||
e.setReason(Reason.PIRATE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
this.callback = callback;
|
||||
openInventory(player.getPlayer());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onClick(PlayerInteractEvent e) {
|
||||
Player player = e.getPlayer();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
if(lgp.getRole() == this) {
|
||||
if(e.getItem() != null && e.getItem().hasItemMeta() && e.getItem().getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
player.getInventory().setItem(8, null);
|
||||
player.updateInventory();
|
||||
lgp.stopChoosing();
|
||||
lgp.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if(e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player)e.getPlayer());
|
||||
if(player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.stopChoosing();
|
||||
closeInventory(player.getPlayer());
|
||||
player.getPlayer().updateInventory();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'infectez personne", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
player.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player) e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
|
||||
if (lgp.getRole() != this || item == null || item.getItemMeta() == null) return;
|
||||
|
||||
if (item.getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
lgp.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
} else if (item.getItemMeta().getDisplayName().equals(items[5].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
player.getInventory().setItem(8, items[3]);
|
||||
player.updateInventory();
|
||||
//Pour éviter les missclick
|
||||
WrapperPlayServerHeldItemSlot held = new WrapperPlayServerHeldItemSlot();
|
||||
held.setSlot(0);
|
||||
held.sendPacket(player);
|
||||
lgp.sendMessage("§6Choisissez votre otage.");
|
||||
lgp.choose(choosen -> {
|
||||
if (choosen != null) {
|
||||
player.getInventory().setItem(8, null);
|
||||
player.updateInventory();
|
||||
lgp.stopChoosing();
|
||||
lgp.sendMessage("§6Tu as pris §7§l" + choosen.getName() + "§6 en otage.");
|
||||
lgp.sendActionBarMessage("§7§l" + choosen.getName() + "§6 est ton otage");
|
||||
lgp.getCache().set("pirate_otage", choosen);
|
||||
choosen.getCache().set("pirate_otage_d", lgp);
|
||||
getPlayers().remove(lgp);//Pour éviter qu'il puisse prendre plusieurs otages
|
||||
choosen.sendMessage("§7§l" + lgp.getName() + "§6 t'a pris en otage, il est " + getName() + "§6.");
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}, lgp);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onPlayerKilled(LGPlayerKilledEvent e) {
|
||||
if (e.getGame() == getGame() && e.getReason() == Reason.VOTE)
|
||||
if (e.getKilled().getCache().has("pirate_otage") && e.getKilled().isRoleActive()) {
|
||||
LGPlayer otage = e.getKilled().getCache().remove("pirate_otage");
|
||||
if (!otage.isDead() && otage.getCache().get("pirate_otage_d") == e.getKilled()) {
|
||||
getGame().broadcastMessage("§7§l" + e.getKilled().getName() + "§6 est " + getName() + "§6, c'est son otage qui va mourir.");
|
||||
e.setKilled(otage);
|
||||
e.setReason(Reason.PIRATE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onClick(PlayerInteractEvent e) {
|
||||
Player player = e.getPlayer();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
if (lgp.getRole() == this) {
|
||||
if (e.getItem() != null && e.getItem().hasItemMeta() && e.getItem().getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
player.getInventory().setItem(8, null);
|
||||
player.updateInventory();
|
||||
lgp.stopChoosing();
|
||||
lgp.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if (e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player) e.getPlayer());
|
||||
if (player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,9 +1,16 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher.WrappedDataWatcherObject;
|
||||
import com.comphenix.protocol.wrappers.WrappedWatchableObject;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerEntityMetadata;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerHeldItemSlot;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGCustomItems;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGPreDayStartEvent;
|
||||
import fr.leomelki.loupgarou.utils.VariousUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventoryCustom;
|
||||
|
@ -19,268 +26,267 @@ import org.bukkit.inventory.meta.ItemMeta;
|
|||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher.WrappedDataWatcherObject;
|
||||
import com.comphenix.protocol.wrappers.WrappedWatchableObject;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerEntityMetadata;
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerHeldItemSlot;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGCustomItems;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGPreDayStartEvent;
|
||||
import fr.leomelki.loupgarou.utils.VariousUtils;
|
||||
public class RPretre extends Role {
|
||||
static final ItemStack[] items = new ItemStack[9];
|
||||
|
||||
public class RPretre extends Role{
|
||||
static final ItemStack[] items = new ItemStack[9];
|
||||
static {
|
||||
items[3] = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = items[3].getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
meta.setLore(Collections.singletonList("§8Passez votre tour"));
|
||||
items[3].setItemMeta(meta);
|
||||
items[5] = new ItemStack(Material.ROTTEN_FLESH);
|
||||
meta = items[5].getItemMeta();
|
||||
meta.setDisplayName("§2§lRessuciter");
|
||||
meta.setLore(Arrays.asList(
|
||||
"§8Tu peux ressusciter un §a§lVillageois",
|
||||
"§8mort précédemment pendant la partie."));
|
||||
items[5].setItemMeta(meta);
|
||||
}
|
||||
static {
|
||||
items[3] = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = items[3].getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
meta.setLore(Collections.singletonList("§8Passez votre tour"));
|
||||
items[3].setItemMeta(meta);
|
||||
items[5] = new ItemStack(Material.ROTTEN_FLESH);
|
||||
meta = items[5].getItemMeta();
|
||||
meta.setDisplayName("§2§lRessuciter");
|
||||
meta.setLore(Arrays.asList(
|
||||
"§8Tu peux ressusciter un §a§lVillageois",
|
||||
"§8mort précédemment pendant la partie."));
|
||||
items[5].setItemMeta(meta);
|
||||
}
|
||||
|
||||
public RPretre(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
final WrappedDataWatcherObject invisible = new WrappedDataWatcherObject(0, WrappedDataWatcher.Registry.get(Byte.class));
|
||||
final ArrayList<LGPlayer> ressucited = new ArrayList<>();
|
||||
Runnable callback;
|
||||
boolean inMenu = false;
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lPrêtre";
|
||||
}
|
||||
public RPretre(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lPrêtre";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Une fois dans la partie, tu peux ressusciter parmi les morts un membre du §a§lVillage§f, qui reviendra à la vie sans ses pouvoirs.";
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Veux-tu ressusciter un allié défunt ?";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Une fois dans la partie, tu peux ressusciter parmi les morts un membre du §a§lVillage§f, qui reviendra à la vie sans ses pouvoirs.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le "+getName()+"§9 récite ses ouvrages...";
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Veux-tu ressusciter un allié défunt ?";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 30;
|
||||
}
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
for(LGPlayer pretre : getPlayers())
|
||||
for(LGPlayer lgp : getGame().getInGame())
|
||||
if(lgp.isDead() && (lgp.getRoleType() == RoleType.VILLAGER || lgp.getRoleType() == pretre.getRoleType()))
|
||||
return super.hasPlayersLeft();
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le " + getName() + "§9 récite ses ouvrages...";
|
||||
}
|
||||
|
||||
Runnable callback;
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
public void openInventory(Player player) {
|
||||
inMenu = true;
|
||||
Inventory inventory = Bukkit.createInventory(null, 9, "§7Veux-tu réssusciter quelqu'un ?");
|
||||
inventory.setContents(items.clone());
|
||||
player.closeInventory();
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
final WrappedDataWatcherObject invisible = new WrappedDataWatcherObject(0, WrappedDataWatcher.Registry.get(Byte.class));
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
for(LGPlayer lgp : getGame().getInGame())
|
||||
if(lgp.isDead() && (lgp.getRoleType() == RoleType.VILLAGER || lgp.getRoleType() == player.getRoleType())){
|
||||
if(lgp.getPlayer() != null) {
|
||||
player.getPlayer().showPlayer(getGame().getPlugin(), lgp.getPlayer());
|
||||
WrapperPlayServerEntityMetadata meta = new WrapperPlayServerEntityMetadata();
|
||||
meta.setEntityID(lgp.getPlayer().getEntityId());
|
||||
meta.setMetadata(Collections.singletonList(new WrappedWatchableObject(invisible, (byte) 0)));
|
||||
meta.sendPacket(player.getPlayer());
|
||||
}
|
||||
}else
|
||||
player.getPlayer().hidePlayer(getGame().getPlugin(), lgp.getPlayer());
|
||||
this.callback = callback;
|
||||
openInventory(player.getPlayer());
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.stopChoosing();
|
||||
closeInventory(player.getPlayer());
|
||||
player.canSelectDead = false;
|
||||
player.getPlayer().updateInventory();
|
||||
hidePlayers(player);
|
||||
//player.sendTitle("§cVous n'infectez personne", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
player.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
private void hidePlayers(LGPlayer player) {
|
||||
if(player.getPlayer() != null) {
|
||||
for(LGPlayer lgp : getGame().getInGame())
|
||||
if(lgp.getPlayer() != null && lgp != player)
|
||||
player.getPlayer().hidePlayer(getGame().getPlugin(), lgp.getPlayer());
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 30;
|
||||
}
|
||||
|
||||
boolean inMenu = false;
|
||||
final ArrayList<LGPlayer> ressucited = new ArrayList<>();
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
for (LGPlayer pretre : getPlayers())
|
||||
for (LGPlayer lgp : getGame().getInGame())
|
||||
if (lgp.isDead() && (lgp.getRoleType() == RoleType.VILLAGER || lgp.getRoleType() == pretre.getRoleType()))
|
||||
return super.hasPlayersLeft();
|
||||
return false;
|
||||
}
|
||||
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player)e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
public void openInventory(Player player) {
|
||||
inMenu = true;
|
||||
Inventory inventory = Bukkit.createInventory(null, 9, "§7Veux-tu réssusciter quelqu'un ?");
|
||||
inventory.setContents(items.clone());
|
||||
player.closeInventory();
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
|
||||
if(lgp.getRole() != this || item == null || item.getItemMeta() == null)return;
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
for (LGPlayer lgp : getGame().getInGame())
|
||||
if (lgp.isDead() && (lgp.getRoleType() == RoleType.VILLAGER || lgp.getRoleType() == player.getRoleType())) {
|
||||
if (lgp.getPlayer() != null) {
|
||||
player.getPlayer().showPlayer(getGame().getPlugin(), lgp.getPlayer());
|
||||
WrapperPlayServerEntityMetadata meta = new WrapperPlayServerEntityMetadata();
|
||||
meta.setEntityID(lgp.getPlayer().getEntityId());
|
||||
meta.setMetadata(Collections.singletonList(new WrappedWatchableObject(invisible, (byte) 0)));
|
||||
meta.sendPacket(player.getPlayer());
|
||||
}
|
||||
} else
|
||||
player.getPlayer().hidePlayer(getGame().getPlugin(), lgp.getPlayer());
|
||||
this.callback = callback;
|
||||
openInventory(player.getPlayer());
|
||||
}
|
||||
|
||||
if(item.getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
lgp.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
hidePlayers(lgp);
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}else if(item.getItemMeta().getDisplayName().equals(items[5].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
player.getInventory().setItem(8, items[3]);
|
||||
player.updateInventory();
|
||||
//Pour éviter les missclick
|
||||
WrapperPlayServerHeldItemSlot held = new WrapperPlayServerHeldItemSlot();
|
||||
held.setSlot(0);
|
||||
held.sendPacket(player);
|
||||
lgp.sendMessage("§6Choisissez qui réssusciter.");
|
||||
lgp.canSelectDead = true;
|
||||
lgp.choose(choosen -> {
|
||||
if(choosen != null) {
|
||||
if(!choosen.isDead())
|
||||
lgp.sendMessage("§7§l"+choosen.getName()+"§c n'est pas mort.");
|
||||
else if(lgp.getRoleType() == RoleType.LOUP_GAROU && choosen.getRoleType() == RoleType.NEUTRAL) {
|
||||
lgp.sendMessage("§7§l"+choosen.getName()+"§c ne faisait ni partie du §a§lVillage§6 ni des §c§lLoups§6.");
|
||||
}else if(lgp.getRoleType() != RoleType.LOUP_GAROU && choosen.getRoleType() != RoleType.VILLAGER) {
|
||||
lgp.sendMessage("§7§l"+choosen.getName()+"§c ne faisait pas partie du §a§lVillage§6.");
|
||||
} else {
|
||||
player.getInventory().setItem(8, null);
|
||||
player.updateInventory();
|
||||
lgp.stopChoosing();
|
||||
lgp.canSelectDead = false;
|
||||
lgp.sendMessage("§6Tu as ramené §7§l"+choosen.getName()+"§6 à la vie.");
|
||||
lgp.sendActionBarMessage("§7§l"+choosen.getName()+"§6 sera réssuscité");
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.stopChoosing();
|
||||
closeInventory(player.getPlayer());
|
||||
player.canSelectDead = false;
|
||||
player.getPlayer().updateInventory();
|
||||
hidePlayers(player);
|
||||
//player.sendTitle("§cVous n'infectez personne", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
player.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
}
|
||||
|
||||
private void hidePlayers(LGPlayer player) {
|
||||
if (player.getPlayer() != null) {
|
||||
for (LGPlayer lgp : getGame().getInGame())
|
||||
if (lgp.getPlayer() != null && lgp != player)
|
||||
player.getPlayer().hidePlayer(getGame().getPlugin(), lgp.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player) e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
|
||||
if (lgp.getRole() != this || item == null || item.getItemMeta() == null) return;
|
||||
|
||||
if (item.getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
lgp.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
hidePlayers(lgp);
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
} else if (item.getItemMeta().getDisplayName().equals(items[5].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
player.getInventory().setItem(8, items[3]);
|
||||
player.updateInventory();
|
||||
//Pour éviter les missclick
|
||||
WrapperPlayServerHeldItemSlot held = new WrapperPlayServerHeldItemSlot();
|
||||
held.setSlot(0);
|
||||
held.sendPacket(player);
|
||||
lgp.sendMessage("§6Choisissez qui réssusciter.");
|
||||
lgp.canSelectDead = true;
|
||||
lgp.choose(choosen -> {
|
||||
if (choosen != null) {
|
||||
if (!choosen.isDead())
|
||||
lgp.sendMessage("§7§l" + choosen.getName() + "§c n'est pas mort.");
|
||||
else if (lgp.getRoleType() == RoleType.LOUP_GAROU && choosen.getRoleType() == RoleType.NEUTRAL) {
|
||||
lgp.sendMessage("§7§l" + choosen.getName() + "§c ne faisait ni partie du §a§lVillage§6 ni des §c§lLoups§6.");
|
||||
} else if (lgp.getRoleType() != RoleType.LOUP_GAROU && choosen.getRoleType() != RoleType.VILLAGER) {
|
||||
lgp.sendMessage("§7§l" + choosen.getName() + "§c ne faisait pas partie du §a§lVillage§6.");
|
||||
} else {
|
||||
player.getInventory().setItem(8, null);
|
||||
player.updateInventory();
|
||||
lgp.stopChoosing();
|
||||
lgp.canSelectDead = false;
|
||||
lgp.sendMessage("§6Tu as ramené §7§l" + choosen.getName() + "§6 à la vie.");
|
||||
lgp.sendActionBarMessage("§7§l" + choosen.getName() + "§6 sera réssuscité");
|
||||
|
||||
|
||||
ressucited.add(choosen);
|
||||
getPlayers().remove(lgp);//Pour éviter qu'il puisse sauver plusieurs personnes.
|
||||
choosen.sendMessage("§6Tu vas être réssuscité en tant que §a§lVillageois§6.");
|
||||
hidePlayers(lgp);
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
}, lgp);
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onClick(PlayerInteractEvent e) {
|
||||
Player player = e.getPlayer();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
if(lgp.getRole() == this) {
|
||||
if(e.getItem() != null && e.getItem().hasItemMeta() && e.getItem().getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
player.getInventory().setItem(8, null);
|
||||
player.updateInventory();
|
||||
lgp.stopChoosing();
|
||||
lgp.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
lgp.canSelectDead = false;
|
||||
hidePlayers(lgp);
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
ressucited.add(choosen);
|
||||
getPlayers().remove(lgp);//Pour éviter qu'il puisse sauver plusieurs personnes.
|
||||
choosen.sendMessage("§6Tu vas être réssuscité en tant que §a§lVillageois§6.");
|
||||
hidePlayers(lgp);
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
}, lgp);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onDayStart(LGPreDayStartEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
if(ressucited.size() > 0) {
|
||||
for(LGPlayer lgp : ressucited) {
|
||||
if(lgp.getPlayer() == null || !lgp.isDead())
|
||||
continue;
|
||||
lgp.setDead(false);
|
||||
lgp.getCache().reset();
|
||||
RVillageois villagers = null;
|
||||
for(Role role : getGame().getRoles())
|
||||
if(role instanceof RVillageois)
|
||||
villagers = (RVillageois)role;
|
||||
if(villagers == null)
|
||||
getGame().getRoles().add(villagers = new RVillageois(getGame()));
|
||||
villagers.join(lgp, false);//Le joueur réssuscité rejoint les villageois.
|
||||
lgp.setRole(villagers);
|
||||
lgp.getPlayer().removePotionEffect(PotionEffectType.INVISIBILITY);
|
||||
lgp.getPlayer().getInventory().setHelmet(null);
|
||||
lgp.getPlayer().updateInventory();
|
||||
LGCustomItems.updateItem(lgp);
|
||||
@EventHandler
|
||||
public void onClick(PlayerInteractEvent e) {
|
||||
Player player = e.getPlayer();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
if (lgp.getRole() == this) {
|
||||
if (e.getItem() != null && e.getItem().hasItemMeta() && e.getItem().getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
player.getInventory().setItem(8, null);
|
||||
player.updateInventory();
|
||||
lgp.stopChoosing();
|
||||
lgp.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
lgp.canSelectDead = false;
|
||||
hidePlayers(lgp);
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
lgp.joinChat(getGame().getDayChat());//Pour qu'il ne parle plus dans le chat des morts (et ne le voit plus) et qu'il parle dans le chat des vivants
|
||||
VariousUtils.setWarning(lgp.getPlayer(), true);
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onDayStart(LGPreDayStartEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
if (ressucited.size() > 0) {
|
||||
for (LGPlayer lgp : ressucited) {
|
||||
if (lgp.getPlayer() == null || !lgp.isDead())
|
||||
continue;
|
||||
lgp.setDead(false);
|
||||
lgp.getCache().reset();
|
||||
RVillageois villagers = null;
|
||||
for (Role role : getGame().getRoles())
|
||||
if (role instanceof RVillageois)
|
||||
villagers = (RVillageois) role;
|
||||
if (villagers == null)
|
||||
getGame().getRoles().add(villagers = new RVillageois(getGame()));
|
||||
villagers.join(lgp, false);//Le joueur réssuscité rejoint les villageois.
|
||||
lgp.setRole(villagers);
|
||||
lgp.getPlayer().removePotionEffect(PotionEffectType.INVISIBILITY);
|
||||
lgp.getPlayer().getInventory().setHelmet(null);
|
||||
lgp.getPlayer().updateInventory();
|
||||
LGCustomItems.updateItem(lgp);
|
||||
|
||||
getGame().updateRoleScoreboard();
|
||||
lgp.joinChat(getGame().getDayChat());//Pour qu'il ne parle plus dans le chat des morts (et ne le voit plus) et qu'il parle dans le chat des vivants
|
||||
VariousUtils.setWarning(lgp.getPlayer(), true);
|
||||
|
||||
getGame().broadcastMessage("§7§l"+lgp.getName()+"§6 a été ressuscité cette nuit.");
|
||||
getGame().updateRoleScoreboard();
|
||||
|
||||
for(LGPlayer player : getGame().getInGame())
|
||||
if(player.getPlayer() != null && player != lgp) {
|
||||
player.getPlayer().showPlayer(getGame().getPlugin(), lgp.getPlayer());
|
||||
}
|
||||
}
|
||||
ressucited.clear();
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if(e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player)e.getPlayer());
|
||||
if(player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
getGame().broadcastMessage("§7§l" + lgp.getName() + "§6 a été ressuscité cette nuit.");
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (LGPlayer player : getGame().getInGame())
|
||||
if (player.getPlayer() != null && player != lgp) {
|
||||
player.getPlayer().showPlayer(getGame().getPlugin(), lgp.getPlayer());
|
||||
}
|
||||
}
|
||||
ressucited.clear();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if (e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player) e.getPlayer());
|
||||
if (player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -3,66 +3,76 @@ package fr.leomelki.loupgarou.roles;
|
|||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
|
||||
public class RPronostiqueur extends Role{
|
||||
public RPronostiqueur(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lPronostiqueur";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu peux espionner un joueur et découvrir s'il est gentil ou non. Cependant, dans certaines parties, vos pronostiques ne sont pas exacts...";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis un joueur sur lequel pronostiquer.";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le "+getName()+"§9 s'apprête à pronostiquer...";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
public class RPronostiqueur extends Role {
|
||||
public RPronostiqueur(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
player.choose(choosen -> {
|
||||
if(choosen != null && choosen != player) {
|
||||
//player.sendTitle("§6Vous avez regardé un rôle", "§e§l"+choosen.getName()+"§6§l est §e§l"+choosen.getRole().getName(), 5*20);
|
||||
String gentilMechant = choosen.getRoleWinType() == RoleWinType.VILLAGE || choosen.getRoleWinType() == RoleWinType.NONE ? "§a§lgentil" : "§c§lméchant";
|
||||
player.sendActionBarMessage("§e§l"+choosen.getName()+"§6 est "+gentilMechant);
|
||||
player.sendMessage("§6Votre instinct vous dit que §7§l"+choosen.getName()+"§6 est "+gentilMechant+"§6.");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lPronostiqueur";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu peux espionner un joueur et découvrir s'il est gentil ou non. Cependant, dans certaines parties, vos pronostiques ne sont pas exacts...";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis un joueur sur lequel pronostiquer.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le " + getName() + "§9 s'apprête à pronostiquer...";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
|
||||
player.choose(choosen -> {
|
||||
if (choosen != null && choosen != player) {
|
||||
//player.sendTitle("§6Vous avez regardé un rôle", "§e§l"+choosen.getName()+"§6§l est §e§l"+choosen.getRole().getName(), 5*20);
|
||||
String gentilMechant = choosen.getRoleWinType() == RoleWinType.VILLAGE || choosen.getRoleWinType() == RoleWinType.NONE ? "§a§lgentil" : "§c§lméchant";
|
||||
player.sendActionBarMessage("§e§l" + choosen.getName() + "§6 est " + gentilMechant);
|
||||
player.sendMessage("§6Votre instinct vous dit que §7§l" + choosen.getName() + "§6 est " + gentilMechant + "§6.");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerHeldItemSlot;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGWinType;
|
||||
import fr.leomelki.loupgarou.events.LGEndCheckEvent;
|
||||
import fr.leomelki.loupgarou.events.LGGameEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import fr.leomelki.loupgarou.events.LGPyromaneGasoilEvent;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventoryCustom;
|
||||
|
@ -19,287 +24,290 @@ import org.bukkit.inventory.ItemStack;
|
|||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerHeldItemSlot;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGWinType;
|
||||
import fr.leomelki.loupgarou.events.LGEndCheckEvent;
|
||||
import fr.leomelki.loupgarou.events.LGGameEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPyromaneGasoilEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class RPyromane extends Role{
|
||||
static final ItemStack[] items = new ItemStack[9];
|
||||
static final ItemStack cancel;
|
||||
static final ItemStack nothing;
|
||||
static {
|
||||
cancel = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = cancel.getItemMeta();
|
||||
meta.setDisplayName("§7§lAnnuler");
|
||||
meta.setLore(Collections.singletonList("§8Rouvrir le menu"));
|
||||
cancel.setItemMeta(meta);
|
||||
nothing = new ItemStack(Material.IRON_NUGGET);
|
||||
meta = nothing.getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
nothing.setItemMeta(meta);
|
||||
items[3] = new ItemStack(Material.FLINT_AND_STEEL);
|
||||
meta = items[3].getItemMeta();
|
||||
meta.setDisplayName("§e§lMettre le feu");
|
||||
meta.setLore(Arrays.asList(
|
||||
"§8Tuez les joueurs que vous avez",
|
||||
"§8Précédemment recouvert de gasoil."));
|
||||
items[3].setItemMeta(meta);
|
||||
items[5] = new ItemStack(Material.LAVA_BUCKET);
|
||||
meta = items[5].getItemMeta();
|
||||
meta.setDisplayName("§c§lRecouvrir d'essence");
|
||||
meta.setLore(Collections.singletonList(
|
||||
"§8Recouvres deux joueurs d'essence"));
|
||||
items[5].setItemMeta(meta);
|
||||
}
|
||||
public class RPyromane extends Role {
|
||||
static final ItemStack[] items = new ItemStack[9];
|
||||
static final ItemStack cancel;
|
||||
static final ItemStack nothing;
|
||||
|
||||
public RPyromane(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
static {
|
||||
cancel = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = cancel.getItemMeta();
|
||||
meta.setDisplayName("§7§lAnnuler");
|
||||
meta.setLore(Collections.singletonList("§8Rouvrir le menu"));
|
||||
cancel.setItemMeta(meta);
|
||||
nothing = new ItemStack(Material.IRON_NUGGET);
|
||||
meta = nothing.getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
nothing.setItemMeta(meta);
|
||||
items[3] = new ItemStack(Material.FLINT_AND_STEEL);
|
||||
meta = items[3].getItemMeta();
|
||||
meta.setDisplayName("§e§lMettre le feu");
|
||||
meta.setLore(Arrays.asList(
|
||||
"§8Tuez les joueurs que vous avez",
|
||||
"§8Précédemment recouvert de gasoil."));
|
||||
items[3].setItemMeta(meta);
|
||||
items[5] = new ItemStack(Material.LAVA_BUCKET);
|
||||
meta = items[5].getItemMeta();
|
||||
meta.setDisplayName("§c§lRecouvrir d'essence");
|
||||
meta.setLore(Collections.singletonList(
|
||||
"§8Recouvres deux joueurs d'essence"));
|
||||
items[5].setItemMeta(meta);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§6§lPyromane";
|
||||
}
|
||||
Runnable callback;
|
||||
boolean inMenu = false;
|
||||
LGPlayer first;
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
public RPyromane(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes §7§lSEUL";
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§6§lPyromane";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes §7§lSEUL§f. Chaque nuit, tu peux recouvrir de gasoil deux joueurs au choix, ou immoler tous ceux que tu as précédemment visités. Les joueurs sauront qu'ils ont été recouverts de gasoil.";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Que veux-tu faire cette nuit ?";
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes §7§lSEUL";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le "+getName()+"§9 joue avec une allumette...";
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.NEUTRAL;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.SEUL;
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes §7§lSEUL§f. Chaque nuit, tu peux recouvrir de gasoil deux joueurs au choix, ou immoler tous ceux que tu as précédemment visités. Les joueurs sauront qu'ils ont été recouverts de gasoil.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 30;
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Que veux-tu faire cette nuit ?";
|
||||
}
|
||||
|
||||
Runnable callback;
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le " + getName() + "§9 joue avec une allumette...";
|
||||
}
|
||||
|
||||
public void openInventory(Player player) {
|
||||
inMenu = true;
|
||||
Inventory inventory = Bukkit.createInventory(null, 9, "§7Que veux-tu faire ?");
|
||||
ItemStack[] content = items.clone();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
if(!lgp.getCache().has("pyromane_essence"))
|
||||
lgp.getCache().set("pyromane_essence", new ArrayList<>());
|
||||
if(lgp.getCache().<List<LGPlayer>>get("pyromane_essence").size() == 0)
|
||||
content[3] = nothing;
|
||||
inventory.setContents(content);
|
||||
player.closeInventory();
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
first = null;
|
||||
player.showView();
|
||||
this.callback = callback;
|
||||
openInventory(player.getPlayer());
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
if(first != null) {
|
||||
List<LGPlayer> liste = player.getCache().get("pyromane_essence");
|
||||
LGPyromaneGasoilEvent event = new LGPyromaneGasoilEvent(getGame(), first);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if(event.isCancelled())
|
||||
player.sendMessage("§7§l"+event.getPlayer().getName()+"§c est immunisé.");
|
||||
else {
|
||||
event.getPlayer().sendMessage("§6Tu es recouvert de gasoil...");
|
||||
liste.add(event.getPlayer());
|
||||
}
|
||||
}
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.stopChoosing();
|
||||
closeInventory(player.getPlayer());
|
||||
player.getPlayer().updateInventory();
|
||||
player.hideView();
|
||||
player.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.NEUTRAL;
|
||||
}
|
||||
|
||||
boolean inMenu = false;
|
||||
LGPlayer first;
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.SEUL;
|
||||
}
|
||||
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player)e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 30;
|
||||
}
|
||||
|
||||
if(lgp.getRole() != this || item == null || item.getItemMeta() == null)return;
|
||||
if(item.getItemMeta().getDisplayName().equals(nothing.getItemMeta().getDisplayName())) {
|
||||
lgp.stopChoosing();
|
||||
closeInventory(player);
|
||||
lgp.hideView();
|
||||
lgp.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
callback.run();
|
||||
}else if(item.getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
if(lgp.getCache().<List<LGPlayer>>get("pyromane_essence").size() != 0) {
|
||||
List<LGPlayer> liste = lgp.getCache().get("pyromane_essence");
|
||||
for(LGPlayer scndPlayer : liste) {
|
||||
if(!scndPlayer.isDead() && scndPlayer.getPlayer() != null) {
|
||||
getGame().kill(scndPlayer, Reason.PYROMANE);
|
||||
}
|
||||
}
|
||||
liste.clear();
|
||||
lgp.sendMessage("§6§lTu as décidé de brûler tes victimes ce soir.");
|
||||
lgp.sendActionBarMessage("§6Tes victimes brûleront ce soir.");
|
||||
}else
|
||||
lgp.sendMessage("§6§lPersonne n'a pris feu.");
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}else if(item.getItemMeta().getDisplayName().equals(items[5].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
player.getInventory().setItem(8, cancel);
|
||||
player.updateInventory();
|
||||
//Pour éviter les missclick
|
||||
WrapperPlayServerHeldItemSlot held = new WrapperPlayServerHeldItemSlot();
|
||||
held.setSlot(0);
|
||||
held.sendPacket(player);
|
||||
lgp.sendMessage("§6Choisis deux joueurs à recouvrir de gasoil.");
|
||||
lgp.choose(choosen -> {
|
||||
if(choosen != null) {
|
||||
if(choosen == first) {
|
||||
lgp.sendMessage("§cTu as déjà versé du gasoil sur §7§l"+choosen.getName()+"§6.");
|
||||
return;
|
||||
}
|
||||
List<LGPlayer> liste = lgp.getCache().get("pyromane_essence");
|
||||
if(liste.contains(choosen)) {
|
||||
lgp.sendMessage("§7§l"+choosen.getName()+"§c est déjà recouvert de gasoil.");
|
||||
return;
|
||||
}
|
||||
if(first == choosen) {
|
||||
lgp.sendMessage("§cVous avez déjà sélectionné §7§l"+choosen.getName()+"§c.");
|
||||
return;
|
||||
}
|
||||
player.getInventory().setItem(8, null);
|
||||
player.updateInventory();
|
||||
lgp.sendMessage("§6Tu as versé du gasoil sur §7§l"+choosen.getName()+"§6.");
|
||||
lgp.sendActionBarMessage("§6§7§l"+choosen.getName()+"§6 est recouvert de gasoil");
|
||||
if(first != null || getGame().getAlive().size() == 2) {
|
||||
lgp.hideView();
|
||||
lgp.stopChoosing();
|
||||
LGPyromaneGasoilEvent event = new LGPyromaneGasoilEvent(getGame(), choosen);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if(event.isCancelled())
|
||||
lgp.sendMessage("§7§l"+event.getPlayer().getName()+"§c est immunisée.");
|
||||
else {
|
||||
event.getPlayer().sendMessage("§6Tu es recouvert de gasoil...");
|
||||
liste.add(event.getPlayer());
|
||||
}
|
||||
if(first != null) {
|
||||
event = new LGPyromaneGasoilEvent(getGame(), first);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if(event.isCancelled())
|
||||
lgp.sendMessage("§7§l"+event.getPlayer().getName()+"§c est immunisée.");
|
||||
else {
|
||||
event.getPlayer().sendMessage("§6Tu es recouvert de gasoil...");
|
||||
liste.add(event.getPlayer());
|
||||
}
|
||||
}
|
||||
callback.run();
|
||||
} else {
|
||||
lgp.sendMessage("§6Choisis un deuxième joueur à recouvrir de gasoil.");
|
||||
first = choosen;
|
||||
}
|
||||
}
|
||||
}, lgp);
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onClick(PlayerInteractEvent e) {
|
||||
Player player = e.getPlayer();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
if(lgp.getRole() == this) {
|
||||
if(e.getItem() != null && e.getItem().hasItemMeta() && e.getItem().getItemMeta().getDisplayName().equals(cancel.getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
player.getInventory().setItem(8, null);
|
||||
player.updateInventory();
|
||||
lgp.stopChoosing();
|
||||
openInventory(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onKilled(LGPlayerKilledEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
for(LGPlayer lgp : getPlayers())
|
||||
if(lgp.getCache().has("pyromane_essence")) {
|
||||
List<LGPlayer> liste = lgp.getCache().get("pyromane_essence");
|
||||
//Au cas où le mec soit rez
|
||||
liste.remove(e.getKilled());
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if(e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player)e.getPlayer());
|
||||
if(player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
public void openInventory(Player player) {
|
||||
inMenu = true;
|
||||
Inventory inventory = Bukkit.createInventory(null, 9, "§7Que veux-tu faire ?");
|
||||
ItemStack[] content = items.clone();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
if (!lgp.getCache().has("pyromane_essence"))
|
||||
lgp.getCache().set("pyromane_essence", new ArrayList<>());
|
||||
if (lgp.getCache().<List<LGPlayer>>get("pyromane_essence").size() == 0)
|
||||
content[3] = nothing;
|
||||
inventory.setContents(content);
|
||||
player.closeInventory();
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
first = null;
|
||||
player.showView();
|
||||
this.callback = callback;
|
||||
openInventory(player.getPlayer());
|
||||
}
|
||||
|
||||
//Win condition
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
if (first != null) {
|
||||
List<LGPlayer> liste = player.getCache().get("pyromane_essence");
|
||||
LGPyromaneGasoilEvent event = new LGPyromaneGasoilEvent(getGame(), first);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if (event.isCancelled())
|
||||
player.sendMessage("§7§l" + event.getPlayer().getName() + "§c est immunisé.");
|
||||
else {
|
||||
event.getPlayer().sendMessage("§6Tu es recouvert de gasoil...");
|
||||
liste.add(event.getPlayer());
|
||||
}
|
||||
}
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.stopChoosing();
|
||||
closeInventory(player.getPlayer());
|
||||
player.getPlayer().updateInventory();
|
||||
player.hideView();
|
||||
player.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEndgameCheck(LGEndCheckEvent e) {
|
||||
if(e.getGame() == getGame() && e.getWinType() == LGWinType.SOLO) {
|
||||
if(getPlayers().size() > 0)
|
||||
e.setWinType(LGWinType.PYROMANE);
|
||||
}
|
||||
}
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onEndGame(LGGameEndEvent e) {
|
||||
if(e.getWinType() == LGWinType.PYROMANE) {
|
||||
e.getWinners().clear();
|
||||
e.getWinners().addAll(getPlayers());
|
||||
}
|
||||
}
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player) e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
|
||||
if (lgp.getRole() != this || item == null || item.getItemMeta() == null) return;
|
||||
if (item.getItemMeta().getDisplayName().equals(nothing.getItemMeta().getDisplayName())) {
|
||||
lgp.stopChoosing();
|
||||
closeInventory(player);
|
||||
lgp.hideView();
|
||||
lgp.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
callback.run();
|
||||
} else if (item.getItemMeta().getDisplayName().equals(items[3].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
if (lgp.getCache().<List<LGPlayer>>get("pyromane_essence").size() != 0) {
|
||||
List<LGPlayer> liste = lgp.getCache().get("pyromane_essence");
|
||||
for (LGPlayer scndPlayer : liste) {
|
||||
if (!scndPlayer.isDead() && scndPlayer.getPlayer() != null) {
|
||||
getGame().kill(scndPlayer, Reason.PYROMANE);
|
||||
}
|
||||
}
|
||||
liste.clear();
|
||||
lgp.sendMessage("§6§lTu as décidé de brûler tes victimes ce soir.");
|
||||
lgp.sendActionBarMessage("§6Tes victimes brûleront ce soir.");
|
||||
} else
|
||||
lgp.sendMessage("§6§lPersonne n'a pris feu.");
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
} else if (item.getItemMeta().getDisplayName().equals(items[5].getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
player.getInventory().setItem(8, cancel);
|
||||
player.updateInventory();
|
||||
//Pour éviter les missclick
|
||||
WrapperPlayServerHeldItemSlot held = new WrapperPlayServerHeldItemSlot();
|
||||
held.setSlot(0);
|
||||
held.sendPacket(player);
|
||||
lgp.sendMessage("§6Choisis deux joueurs à recouvrir de gasoil.");
|
||||
lgp.choose(choosen -> {
|
||||
if (choosen != null) {
|
||||
if (choosen == first) {
|
||||
lgp.sendMessage("§cTu as déjà versé du gasoil sur §7§l" + choosen.getName() + "§6.");
|
||||
return;
|
||||
}
|
||||
List<LGPlayer> liste = lgp.getCache().get("pyromane_essence");
|
||||
if (liste.contains(choosen)) {
|
||||
lgp.sendMessage("§7§l" + choosen.getName() + "§c est déjà recouvert de gasoil.");
|
||||
return;
|
||||
}
|
||||
if (first == choosen) {
|
||||
lgp.sendMessage("§cVous avez déjà sélectionné §7§l" + choosen.getName() + "§c.");
|
||||
return;
|
||||
}
|
||||
player.getInventory().setItem(8, null);
|
||||
player.updateInventory();
|
||||
lgp.sendMessage("§6Tu as versé du gasoil sur §7§l" + choosen.getName() + "§6.");
|
||||
lgp.sendActionBarMessage("§6§7§l" + choosen.getName() + "§6 est recouvert de gasoil");
|
||||
if (first != null || getGame().getAlive().size() == 2) {
|
||||
lgp.hideView();
|
||||
lgp.stopChoosing();
|
||||
LGPyromaneGasoilEvent event = new LGPyromaneGasoilEvent(getGame(), choosen);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if (event.isCancelled())
|
||||
lgp.sendMessage("§7§l" + event.getPlayer().getName() + "§c est immunisée.");
|
||||
else {
|
||||
event.getPlayer().sendMessage("§6Tu es recouvert de gasoil...");
|
||||
liste.add(event.getPlayer());
|
||||
}
|
||||
if (first != null) {
|
||||
event = new LGPyromaneGasoilEvent(getGame(), first);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if (event.isCancelled())
|
||||
lgp.sendMessage("§7§l" + event.getPlayer().getName() + "§c est immunisée.");
|
||||
else {
|
||||
event.getPlayer().sendMessage("§6Tu es recouvert de gasoil...");
|
||||
liste.add(event.getPlayer());
|
||||
}
|
||||
}
|
||||
callback.run();
|
||||
} else {
|
||||
lgp.sendMessage("§6Choisis un deuxième joueur à recouvrir de gasoil.");
|
||||
first = choosen;
|
||||
}
|
||||
}
|
||||
}, lgp);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onClick(PlayerInteractEvent e) {
|
||||
Player player = e.getPlayer();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
if (lgp.getRole() == this) {
|
||||
if (e.getItem() != null && e.getItem().hasItemMeta() && e.getItem().getItemMeta().getDisplayName().equals(cancel.getItemMeta().getDisplayName())) {
|
||||
e.setCancelled(true);
|
||||
player.getInventory().setItem(8, null);
|
||||
player.updateInventory();
|
||||
lgp.stopChoosing();
|
||||
openInventory(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onKilled(LGPlayerKilledEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
for (LGPlayer lgp : getPlayers())
|
||||
if (lgp.getCache().has("pyromane_essence")) {
|
||||
List<LGPlayer> liste = lgp.getCache().get("pyromane_essence");
|
||||
//Au cas où le mec soit rez
|
||||
liste.remove(e.getKilled());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if (e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player) e.getPlayer());
|
||||
if (player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Win condition
|
||||
|
||||
@EventHandler
|
||||
public void onEndgameCheck(LGEndCheckEvent e) {
|
||||
if (e.getGame() == getGame() && e.getWinType() == LGWinType.SOLO) {
|
||||
if (getPlayers().size() > 0)
|
||||
e.setWinType(LGWinType.PYROMANE);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onEndGame(LGGameEndEvent e) {
|
||||
if (e.getWinType() == LGWinType.PYROMANE) {
|
||||
e.getWinners().clear();
|
||||
e.getWinners().addAll(getPlayers());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerHeldItemSlot;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventoryCustom;
|
||||
|
@ -16,208 +19,218 @@ import org.bukkit.inventory.ItemStack;
|
|||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import fr.leomelki.com.comphenix.packetwrapper.WrapperPlayServerHeldItemSlot;
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import java.util.Collections;
|
||||
|
||||
public class RSorciere extends Role{
|
||||
private static final ItemStack[] items = new ItemStack[4];
|
||||
private static final ItemStack cancel;
|
||||
static {
|
||||
items[0] = new ItemStack(Material.PURPLE_DYE, 1);
|
||||
ItemMeta meta = items[0].getItemMeta();
|
||||
meta.setDisplayName("§a§lPotion de vie");
|
||||
meta.setLore(Collections.singletonList("§2Sauve la cible des §c§lLoups§2."));
|
||||
items[0].setItemMeta(meta);
|
||||
items[1] = new ItemStack(Material.IRON_NUGGET);
|
||||
meta = items[1].getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
items[1].setItemMeta(meta);
|
||||
items[2] = new ItemStack(Material.LIGHT_BLUE_DYE, 1);
|
||||
meta = items[2].getItemMeta();
|
||||
meta.setDisplayName("§c§lPotion de mort");
|
||||
meta.setLore(Collections.singletonList("§cTue la personne de ton choix."));
|
||||
items[2].setItemMeta(meta);
|
||||
cancel = new ItemStack(Material.IRON_NUGGET);
|
||||
meta = cancel.getItemMeta();
|
||||
meta.setDisplayName("§c§lRevenir au choix des potions");
|
||||
cancel.setItemMeta(meta);
|
||||
}
|
||||
public class RSorciere extends Role {
|
||||
private static final ItemStack[] items = new ItemStack[4];
|
||||
private static final ItemStack cancel;
|
||||
|
||||
static {
|
||||
items[0] = new ItemStack(Material.PURPLE_DYE, 1);
|
||||
ItemMeta meta = items[0].getItemMeta();
|
||||
meta.setDisplayName("§a§lPotion de vie");
|
||||
meta.setLore(Collections.singletonList("§2Sauve la cible des §c§lLoups§2."));
|
||||
items[0].setItemMeta(meta);
|
||||
items[1] = new ItemStack(Material.IRON_NUGGET);
|
||||
meta = items[1].getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
items[1].setItemMeta(meta);
|
||||
items[2] = new ItemStack(Material.LIGHT_BLUE_DYE, 1);
|
||||
meta = items[2].getItemMeta();
|
||||
meta.setDisplayName("§c§lPotion de mort");
|
||||
meta.setLore(Collections.singletonList("§cTue la personne de ton choix."));
|
||||
items[2].setItemMeta(meta);
|
||||
cancel = new ItemStack(Material.IRON_NUGGET);
|
||||
meta = cancel.getItemMeta();
|
||||
meta.setDisplayName("§c§lRevenir au choix des potions");
|
||||
cancel.setItemMeta(meta);
|
||||
}
|
||||
|
||||
public RSorciere(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lSorcière";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de la "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Tu disposes de deux potions : une §e§o§lpotion de vie§f pour sauver la victime des §c§lLoups§f, et une §e§o§lpotion de mort§f pour assassiner quelqu'un.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Que veux-tu faire cette nuit ?";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "La "+getName()+"§9 est en train de concocter un nouvel élixir.";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 30;
|
||||
}
|
||||
boolean inMenu = false;
|
||||
private LGPlayer sauver;
|
||||
private Runnable callback;
|
||||
|
||||
private LGPlayer sauver;
|
||||
private Runnable callback;
|
||||
public RSorciere(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
this.callback = callback;
|
||||
sauver = getGame().getDeaths().get(Reason.LOUP_GAROU);
|
||||
if(sauver == null)
|
||||
sauver = getGame().getDeaths().get(Reason.DONT_DIE);
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
openInventory(player);
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.stopChoosing();
|
||||
closeInventory(player.getPlayer());
|
||||
player.getPlayer().updateInventory();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez utilisé aucune potion", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
}
|
||||
private void openInventory(LGPlayer player) {
|
||||
inMenu = true;
|
||||
Inventory inventory = Bukkit.createInventory(null, InventoryType.BREWING, sauver == null ? "§7Personne n'a été ciblé" : "§7§l"+sauver.getName()+" §7est ciblé");
|
||||
inventory.setContents(items.clone());//clone au cas où Bukkit prenne directement la liste pour éviter de la modifier avec setItem (jsp)
|
||||
if(sauver == null || player.getCache().getBoolean("witch_used_life"))
|
||||
inventory.setItem(0, null);
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
if(sauver != null) {
|
||||
ItemStack head = new ItemStack(Material.ARROW);
|
||||
ItemMeta meta = head.getItemMeta();
|
||||
meta.setDisplayName("§7§l"+sauver.getName()+"§c est ciblé");
|
||||
head.setItemMeta(meta);
|
||||
inventory.setItem(4, head);
|
||||
}
|
||||
if(player.getCache().getBoolean("witch_used_death"))
|
||||
inventory.setItem(2, null);
|
||||
player.getPlayer().closeInventory();
|
||||
player.getPlayer().openInventory(inventory);
|
||||
}
|
||||
boolean inMenu = false;
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lSorcière";
|
||||
}
|
||||
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player) e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de la " + getName();
|
||||
}
|
||||
|
||||
if (lgp.getRole() != this || item == null || item.getItemMeta() == null)
|
||||
return;
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
if (item.getItemMeta().getDisplayName().equals(items[0].getItemMeta().getDisplayName()) && sauver != null) {// Potion de vie
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
saveLife(lgp);
|
||||
} else if (item.getItemMeta().getDisplayName().equals(items[1].getItemMeta().getDisplayName())) {// Cancel
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
lgp.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
} else if (item.getItemMeta().getDisplayName().equals(items[2].getItemMeta().getDisplayName())) {// Potion de mort
|
||||
e.setCancelled(true);
|
||||
player.getInventory().setItem(8, cancel);
|
||||
player.updateInventory();
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Tu disposes de deux potions : une §e§o§lpotion de vie§f pour sauver la victime des §c§lLoups§f, et une §e§o§lpotion de mort§f pour assassiner quelqu'un.";
|
||||
}
|
||||
|
||||
//On le met sur le slot 0 pour éviter un missclick sur la croix
|
||||
WrapperPlayServerHeldItemSlot hold = new WrapperPlayServerHeldItemSlot();
|
||||
hold.setSlot(0);
|
||||
hold.sendPacket(lgp.getPlayer());
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Que veux-tu faire cette nuit ?";
|
||||
}
|
||||
|
||||
closeInventory(player);
|
||||
lgp.choose((choosen) -> {
|
||||
if (choosen != null) {
|
||||
lgp.stopChoosing();
|
||||
kill(choosen, lgp);
|
||||
}
|
||||
}/*, sauver*/);//On peut tuer la personne qui a été tué par les loups (bien que cela ne serve à rien)
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "La " + getName() + "§9 est en train de concocter un nouvel élixir.";
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onClick(PlayerInteractEvent e) {
|
||||
Player p = e.getPlayer();
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), p);
|
||||
if(e.getItem() != null && e.getItem().getType() == Material.IRON_NUGGET && player.getRole() == this) {
|
||||
player.stopChoosing();
|
||||
p.getInventory().setItem(8, null);
|
||||
p.updateInventory();
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 30;
|
||||
}
|
||||
|
||||
openInventory(player);
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if(e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player)e.getPlayer());
|
||||
if(player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
this.callback = callback;
|
||||
sauver = getGame().getDeaths().get(Reason.LOUP_GAROU);
|
||||
if (sauver == null)
|
||||
sauver = getGame().getDeaths().get(Reason.DONT_DIE);
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
openInventory(player);
|
||||
}
|
||||
|
||||
private void kill(LGPlayer choosen, LGPlayer player) {
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.getPlayer().updateInventory();
|
||||
player.getCache().set("witch_used_death", true);
|
||||
getGame().kill(choosen, Reason.SORCIERE);
|
||||
player.sendMessage("§6Tu as décidé d'assassiner §7§l"+choosen.getName()+"§6.");
|
||||
player.sendActionBarMessage("§7§l"+choosen.getName()+"§9 a été tué.");
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
private void saveLife(LGPlayer player) {
|
||||
player.getCache().set("witch_used_life", true);
|
||||
getGame().getDeaths().remove(Reason.LOUP_GAROU, sauver);
|
||||
player.sendMessage("§6Tu as décidé de sauver §7§l"+sauver.getName()+"§6.");
|
||||
player.sendActionBarMessage("§7§l"+sauver.getName()+"§9 a été sauvé.");
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.stopChoosing();
|
||||
closeInventory(player.getPlayer());
|
||||
player.getPlayer().updateInventory();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez utilisé aucune potion", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
}
|
||||
|
||||
private void openInventory(LGPlayer player) {
|
||||
inMenu = true;
|
||||
Inventory inventory = Bukkit.createInventory(null, InventoryType.BREWING, sauver == null ? "§7Personne n'a été ciblé" : "§7§l" + sauver.getName() + " §7est ciblé");
|
||||
inventory.setContents(items.clone());//clone au cas où Bukkit prenne directement la liste pour éviter de la modifier avec setItem (jsp)
|
||||
if (sauver == null || player.getCache().getBoolean("witch_used_life"))
|
||||
inventory.setItem(0, null);
|
||||
|
||||
if (sauver != null) {
|
||||
ItemStack head = new ItemStack(Material.ARROW);
|
||||
ItemMeta meta = head.getItemMeta();
|
||||
meta.setDisplayName("§7§l" + sauver.getName() + "§c est ciblé");
|
||||
head.setItemMeta(meta);
|
||||
inventory.setItem(4, head);
|
||||
}
|
||||
if (player.getCache().getBoolean("witch_used_death"))
|
||||
inventory.setItem(2, null);
|
||||
player.getPlayer().closeInventory();
|
||||
player.getPlayer().openInventory(inventory);
|
||||
}
|
||||
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player) e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
|
||||
if (lgp.getRole() != this || item == null || item.getItemMeta() == null)
|
||||
return;
|
||||
|
||||
if (item.getItemMeta().getDisplayName().equals(items[0].getItemMeta().getDisplayName()) && sauver != null) {// Potion de vie
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
saveLife(lgp);
|
||||
} else if (item.getItemMeta().getDisplayName().equals(items[1].getItemMeta().getDisplayName())) {// Cancel
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
lgp.sendMessage("§6Tu n'as rien fait cette nuit.");
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
} else if (item.getItemMeta().getDisplayName().equals(items[2].getItemMeta().getDisplayName())) {// Potion de mort
|
||||
e.setCancelled(true);
|
||||
player.getInventory().setItem(8, cancel);
|
||||
player.updateInventory();
|
||||
|
||||
//On le met sur le slot 0 pour éviter un missclick sur la croix
|
||||
WrapperPlayServerHeldItemSlot hold = new WrapperPlayServerHeldItemSlot();
|
||||
hold.setSlot(0);
|
||||
hold.sendPacket(lgp.getPlayer());
|
||||
|
||||
closeInventory(player);
|
||||
lgp.choose((choosen) -> {
|
||||
if (choosen != null) {
|
||||
lgp.stopChoosing();
|
||||
kill(choosen, lgp);
|
||||
}
|
||||
}/*, sauver*/);//On peut tuer la personne qui a été tué par les loups (bien que cela ne serve à rien)
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onClick(PlayerInteractEvent e) {
|
||||
Player p = e.getPlayer();
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), p);
|
||||
if (e.getItem() != null && e.getItem().getType() == Material.IRON_NUGGET && player.getRole() == this) {
|
||||
player.stopChoosing();
|
||||
p.getInventory().setItem(8, null);
|
||||
p.updateInventory();
|
||||
|
||||
openInventory(player);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if (e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player) e.getPlayer());
|
||||
if (player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void kill(LGPlayer choosen, LGPlayer player) {
|
||||
player.getPlayer().getInventory().setItem(8, null);
|
||||
player.getPlayer().updateInventory();
|
||||
player.getCache().set("witch_used_death", true);
|
||||
getGame().kill(choosen, Reason.SORCIERE);
|
||||
player.sendMessage("§6Tu as décidé d'assassiner §7§l" + choosen.getName() + "§6.");
|
||||
player.sendActionBarMessage("§7§l" + choosen.getName() + "§9 a été tué.");
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
|
||||
private void saveLife(LGPlayer player) {
|
||||
player.getCache().set("witch_used_life", true);
|
||||
getGame().getDeaths().remove(Reason.LOUP_GAROU, sauver);
|
||||
player.sendMessage("§6Tu as décidé de sauver §7§l" + sauver.getName() + "§6.");
|
||||
player.sendActionBarMessage("§7§l" + sauver.getName() + "§9 a été sauvé.");
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,15 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGWinType;
|
||||
import fr.leomelki.loupgarou.events.LGGameEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGNightPlayerPreKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import fr.leomelki.loupgarou.events.LGPreDayStartEvent;
|
||||
import fr.leomelki.loupgarou.events.LGVampiredEvent;
|
||||
import fr.leomelki.loupgarou.utils.VariableCache;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventoryCustom;
|
||||
|
@ -15,188 +22,193 @@ import org.bukkit.inventory.ItemStack;
|
|||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGWinType;
|
||||
import fr.leomelki.loupgarou.events.LGGameEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGNightPlayerPreKilledEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import fr.leomelki.loupgarou.events.LGPreDayStartEvent;
|
||||
import fr.leomelki.loupgarou.events.LGVampiredEvent;
|
||||
import fr.leomelki.loupgarou.utils.VariableCache;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
public class RSurvivant extends Role{
|
||||
public RSurvivant(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.NEUTRAL;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.NONE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§d§lSurvivant";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes si tu remplis ton objectif";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu es §d§lNeutre§f et tu gagnes si tu remplis ton objectif. Ton objectif est de survivre. Tu disposes de §l2§f protections. Chaque nuit, tu peux utiliser une protection pour ne pas être tué par les §c§lLoups§f. Tu peux gagner aussi bien avec les §a§lVillageois§f qu'avec les §c§lLoups§f, tu dois juste rester en vie jusqu'à la fin de la partie.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Veux-tu utiliser une protection cette nuit ?";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le "+getName()+"§9 décide s'il veut se protéger.";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
boolean inMenu;
|
||||
public void openInventory(Player player) {
|
||||
inMenu = true;
|
||||
Inventory inventory = Bukkit.createInventory(null, 9, "§7Veux-tu te protéger ?");
|
||||
ItemStack[] items = new ItemStack[9];
|
||||
VariableCache cache = LGPlayer.thePlayer(getGame().getPlugin(), player).getCache();
|
||||
if(cache.<Integer>get("survivant_left") > 0) {
|
||||
items[3] = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = items[3].getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
meta.setLore(Collections.singletonList("§8Passez votre tour"));
|
||||
items[3].setItemMeta(meta);
|
||||
items[5] = new ItemStack(Material.GOLD_NUGGET);
|
||||
meta = items[5].getItemMeta();
|
||||
meta.setDisplayName("§2§lSe protéger (§6§l"+cache.<Integer>get("survivant_left")+"§2§l restant)");
|
||||
meta.setLore(Arrays.asList(
|
||||
"§8Tu ne pourras pas être tué par",
|
||||
"§8 les §c§lLoups§8 cette nuit."));
|
||||
items[5].setItemMeta(meta);
|
||||
} else {
|
||||
items[4] = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = items[4].getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
meta.setLore(Collections.singletonList("§8Passez votre tour"));
|
||||
items[4].setItemMeta(meta);
|
||||
}
|
||||
player.closeInventory();
|
||||
inventory.setContents(items);
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
@Override
|
||||
public void join(LGPlayer player) {
|
||||
super.join(player);
|
||||
player.getCache().set("survivant_left", 2);
|
||||
}
|
||||
public class RSurvivant extends Role {
|
||||
boolean inMenu;
|
||||
Runnable callback;
|
||||
|
||||
Runnable callback;
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
this.callback = callback;
|
||||
openInventory(player.getPlayer());
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.hideView();
|
||||
closeInventory(player.getPlayer());
|
||||
player.sendMessage("§4§oTu es sans défense...");
|
||||
}
|
||||
public RSurvivant(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player)e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.NEUTRAL;
|
||||
}
|
||||
|
||||
if(lgp.getRole() != this || item == null || item.getItemMeta() == null)return;
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.NONE;
|
||||
}
|
||||
|
||||
if(item.getType() == Material.IRON_NUGGET) {
|
||||
e.setCancelled(true);
|
||||
lgp.sendMessage("§4§oTu es sans défense...");
|
||||
closeInventory(player);
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}else if(item.getType() == Material.GOLD_NUGGET) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
lgp.sendActionBarMessage("§9§lTu as décidé de te protéger.");
|
||||
lgp.sendMessage("§6Tu as décidé de te protéger.");
|
||||
lgp.getCache().set("survivant_left", lgp.getCache().<Integer>get("survivant_left")-1);
|
||||
lgp.getCache().set("survivant_protected", true);
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§d§lSurvivant";
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerKill(LGNightPlayerPreKilledEvent e) {
|
||||
if(e.getGame() == getGame() && (e.getReason() == Reason.LOUP_GAROU || e.getReason() == Reason.LOUP_BLANC || e.getReason() == Reason.GM_LOUP_GAROU || e.getReason() == Reason.ASSASSIN) && e.getKilled().getCache().getBoolean("survivant_protected") && e.getKilled().isRoleActive()) {
|
||||
e.setReason(Reason.DONT_DIE);
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onVampired(LGVampiredEvent e) {
|
||||
if(e.getGame() == getGame() && e.getPlayer().getCache().getBoolean("survivant_protected"))
|
||||
e.setProtect(true);
|
||||
}
|
||||
@EventHandler
|
||||
public void onDayStart(LGPreDayStartEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
for(LGPlayer lgp : getGame().getInGame())
|
||||
if(lgp.isRoleActive())
|
||||
lgp.getCache().remove("survivant_protected");
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "du " + getName();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if(e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player)e.getPlayer());
|
||||
if(player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes si tu remplis ton objectif";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu es §d§lNeutre§f et tu gagnes si tu remplis ton objectif. Ton objectif est de survivre. Tu disposes de §l2§f protections. Chaque nuit, tu peux utiliser une protection pour ne pas être tué par les §c§lLoups§f. Tu peux gagner aussi bien avec les §a§lVillageois§f qu'avec les §c§lLoups§f, tu dois juste rester en vie jusqu'à la fin de la partie.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Veux-tu utiliser une protection cette nuit ?";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Le " + getName() + "§9 décide s'il veut se protéger.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
public void openInventory(Player player) {
|
||||
inMenu = true;
|
||||
Inventory inventory = Bukkit.createInventory(null, 9, "§7Veux-tu te protéger ?");
|
||||
ItemStack[] items = new ItemStack[9];
|
||||
VariableCache cache = LGPlayer.thePlayer(getGame().getPlugin(), player).getCache();
|
||||
if (cache.<Integer>get("survivant_left") > 0) {
|
||||
items[3] = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = items[3].getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
meta.setLore(Collections.singletonList("§8Passez votre tour"));
|
||||
items[3].setItemMeta(meta);
|
||||
items[5] = new ItemStack(Material.GOLD_NUGGET);
|
||||
meta = items[5].getItemMeta();
|
||||
meta.setDisplayName("§2§lSe protéger (§6§l" + cache.<Integer>get("survivant_left") + "§2§l restant)");
|
||||
meta.setLore(Arrays.asList(
|
||||
"§8Tu ne pourras pas être tué par",
|
||||
"§8 les §c§lLoups§8 cette nuit."));
|
||||
items[5].setItemMeta(meta);
|
||||
} else {
|
||||
items[4] = new ItemStack(Material.IRON_NUGGET);
|
||||
ItemMeta meta = items[4].getItemMeta();
|
||||
meta.setDisplayName("§7§lNe rien faire");
|
||||
meta.setLore(Collections.singletonList("§8Passez votre tour"));
|
||||
items[4].setItemMeta(meta);
|
||||
}
|
||||
player.closeInventory();
|
||||
inventory.setContents(items);
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void join(LGPlayer player) {
|
||||
super.join(player);
|
||||
player.getCache().set("survivant_left", 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
this.callback = callback;
|
||||
openInventory(player.getPlayer());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.hideView();
|
||||
closeInventory(player.getPlayer());
|
||||
player.sendMessage("§4§oTu es sans défense...");
|
||||
}
|
||||
|
||||
private void closeInventory(Player p) {
|
||||
inMenu = false;
|
||||
p.closeInventory();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onInventoryClick(InventoryClickEvent e) {
|
||||
ItemStack item = e.getCurrentItem();
|
||||
Player player = (Player) e.getWhoClicked();
|
||||
LGPlayer lgp = LGPlayer.thePlayer(getGame().getPlugin(), player);
|
||||
|
||||
if (lgp.getRole() != this || item == null || item.getItemMeta() == null) return;
|
||||
|
||||
if (item.getType() == Material.IRON_NUGGET) {
|
||||
e.setCancelled(true);
|
||||
lgp.sendMessage("§4§oTu es sans défense...");
|
||||
closeInventory(player);
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
} else if (item.getType() == Material.GOLD_NUGGET) {
|
||||
e.setCancelled(true);
|
||||
closeInventory(player);
|
||||
lgp.sendActionBarMessage("§9§lTu as décidé de te protéger.");
|
||||
lgp.sendMessage("§6Tu as décidé de te protéger.");
|
||||
lgp.getCache().set("survivant_left", lgp.getCache().<Integer>get("survivant_left") - 1);
|
||||
lgp.getCache().set("survivant_protected", true);
|
||||
lgp.hideView();
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerKill(LGNightPlayerPreKilledEvent e) {
|
||||
if (e.getGame() == getGame() && (e.getReason() == Reason.LOUP_GAROU || e.getReason() == Reason.LOUP_BLANC || e.getReason() == Reason.GM_LOUP_GAROU || e.getReason() == Reason.ASSASSIN) && e.getKilled().getCache().getBoolean("survivant_protected") && e.getKilled().isRoleActive()) {
|
||||
e.setReason(Reason.DONT_DIE);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onVampired(LGVampiredEvent e) {
|
||||
if (e.getGame() == getGame() && e.getPlayer().getCache().getBoolean("survivant_protected"))
|
||||
e.setProtect(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDayStart(LGPreDayStartEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
for (LGPlayer lgp : getGame().getInGame())
|
||||
if (lgp.isRoleActive())
|
||||
lgp.getCache().remove("survivant_protected");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuitInventory(InventoryCloseEvent e) {
|
||||
if (e.getInventory() instanceof CraftInventoryCustom) {
|
||||
LGPlayer player = LGPlayer.thePlayer(getGame().getPlugin(), (Player) e.getPlayer());
|
||||
if (player.getRole() == this && inMenu) {
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
e.getPlayer().openInventory(e.getInventory());
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void onWin(LGGameEndEvent e) {
|
||||
if (e.getGame() == getGame() && getPlayers().size() > 0 && e.getWinType() != LGWinType.ANGE) {
|
||||
for (LGPlayer lgp : getPlayers())
|
||||
e.getWinners().add(lgp);
|
||||
new BukkitRunnable() {
|
||||
|
||||
|
||||
|
||||
@EventHandler
|
||||
public void onWin(LGGameEndEvent e) {
|
||||
if(e.getGame() == getGame() && getPlayers().size() > 0 && e.getWinType() != LGWinType.ANGE) {
|
||||
for(LGPlayer lgp : getPlayers())
|
||||
e.getWinners().add(lgp);
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
getGame().broadcastMessage("§6§oLe "+getName()+"§6§o a rempli son objectif.");
|
||||
}
|
||||
}.runTaskAsynchronously(MainLg.getInstance());
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void run() {
|
||||
getGame().broadcastMessage("§6§oLe " + getName() + "§6§o a rempli son objectif.");
|
||||
}
|
||||
}.runTaskAsynchronously(MainLg.getInstance());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,219 +1,217 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import fr.leomelki.loupgarou.classes.*;
|
||||
import fr.leomelki.loupgarou.classes.LGCustomItems.LGCustomItemsConstraints;
|
||||
import fr.leomelki.loupgarou.classes.chat.LGChat;
|
||||
import fr.leomelki.loupgarou.events.*;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
public class RVampire extends Role {
|
||||
|
||||
import fr.leomelki.loupgarou.classes.LGCustomItems;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import fr.leomelki.loupgarou.classes.LGVote;
|
||||
import fr.leomelki.loupgarou.classes.LGWinType;
|
||||
import fr.leomelki.loupgarou.classes.LGCustomItems.LGCustomItemsConstraints;
|
||||
import fr.leomelki.loupgarou.classes.chat.LGChat;
|
||||
import fr.leomelki.loupgarou.events.LGCustomItemChangeEvent;
|
||||
import fr.leomelki.loupgarou.events.LGGameEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGNightEndEvent;
|
||||
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
|
||||
import fr.leomelki.loupgarou.events.LGUpdatePrefixEvent;
|
||||
import fr.leomelki.loupgarou.events.LGVampiredEvent;
|
||||
import lombok.Getter;
|
||||
@Getter
|
||||
private final LGChat chat = new LGChat((sender, message) -> "§5" + sender.getName() + " §6» §f" + message);
|
||||
int nextCanInfect = 0;
|
||||
LGVote vote;
|
||||
|
||||
public class RVampire extends Role{
|
||||
public RVampire(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
public RVampire(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§5§lVampire";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§5§lVampire";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "des §5§lVampires";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "des §5§lVampires";
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec les §5§lVampires";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec les §5§lVampires";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec les §5§lVampires§f. Chaque nuit, tu te réunis avec tes compères pour décider d'une victime à transformer en §5§lVampire§f... Lorsqu'une transformation a lieu, tous les §5§lVampires§f doivent se reposer la nuit suivante. Un joueur transformé perd tous les pouvoirs liés à son ancien rôle, et gagne avec les §5§lVampires§f.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec les §5§lVampires§f. Chaque nuit, tu te réunis avec tes compères pour décider d'une victime à transformer en §5§lVampire§f... Lorsqu'une transformation a lieu, tous les §5§lVampires§f doivent se reposer la nuit suivante. Un joueur transformé perd tous les pouvoirs liés à son ancien rôle, et gagne avec les §5§lVampires§f.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Votez pour une cible à mordre.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Votez pour une cible à mordre.";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Les §5§lVampires§9 choisissent leur cible.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "Les §5§lVampires§9 choisissent leur cible.";
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VAMPIRE;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VAMPIRE;
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VAMPIRE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 30;
|
||||
}
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
return nextCanInfect < getGame().getNight() && super.hasPlayersLeft();
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VAMPIRE;
|
||||
}
|
||||
|
||||
@Getter private final LGChat chat = new LGChat((sender, message) -> "§5"+sender.getName()+" §6» §f"+message);
|
||||
int nextCanInfect = 0;
|
||||
LGVote vote;
|
||||
@Override
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
super.join(player, sendMessage);
|
||||
for(LGPlayer p : getPlayers())
|
||||
p.updatePrefix();
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 30;
|
||||
}
|
||||
|
||||
public void onNightTurn(Runnable callback) {
|
||||
vote = new LGVote(getTimeout(), getTimeout()/3, getGame(), false, false, (player, secondsLeft)-> !getPlayers().contains(player) ? "§6C'est au tour "+getFriendlyName()+" §6(§e"+secondsLeft+" s§6)" : player.getCache().has("vote") ? "§l§9Vous votez pour §c§l"+player.getCache().<LGPlayer>get("vote").getName() : "§6Il vous reste §e"+secondsLeft+" seconde"+(secondsLeft > 1 ? "s" : "")+"§6 pour voter");
|
||||
for(LGPlayer lgp : getGame().getAlive())
|
||||
if(lgp.getRoleType() == RoleType.VAMPIRE)
|
||||
lgp.showView();
|
||||
for(LGPlayer player : getPlayers()) {
|
||||
player.sendMessage("§6"+getTask());
|
||||
// player.sendTitle("§6C'est à vous de jouer", "§a"+getTask(), 100);
|
||||
player.joinChat(chat);
|
||||
}
|
||||
vote.start(getPlayers(), getPlayers(), ()->{
|
||||
onNightTurnEnd();
|
||||
callback.run();
|
||||
}, getPlayers());
|
||||
}
|
||||
private void onNightTurnEnd() {
|
||||
for(LGPlayer lgp : getGame().getAlive())
|
||||
if(lgp.getRoleType() == RoleType.VAMPIRE)
|
||||
lgp.hideView();
|
||||
for(LGPlayer player : getPlayers())
|
||||
player.leaveChat();
|
||||
@Override
|
||||
public boolean hasPlayersLeft() {
|
||||
return nextCanInfect < getGame().getNight() && super.hasPlayersLeft();
|
||||
}
|
||||
|
||||
LGPlayer choosen = vote.getChoosen();
|
||||
if(choosen == null) {
|
||||
if(vote.getVotes().size() > 0) {
|
||||
int max = 0;
|
||||
boolean equal = false;
|
||||
for(Entry<LGPlayer, List<LGPlayer>> entry : vote.getVotes().entrySet())
|
||||
if(entry.getValue().size() > max) {
|
||||
equal = false;
|
||||
max = entry.getValue().size();
|
||||
choosen = entry.getKey();
|
||||
}else if(entry.getValue().size() == max)
|
||||
equal = true;
|
||||
if(equal) {
|
||||
choosen = null;
|
||||
ArrayList<LGPlayer> choosable = new ArrayList<>();
|
||||
for(Entry<LGPlayer, List<LGPlayer>> entry : vote.getVotes().entrySet())
|
||||
if(entry.getValue().size() == max && entry.getKey().getRoleType() != RoleType.VAMPIRE)
|
||||
choosable.add(entry.getKey());
|
||||
if(choosable.size() > 0)
|
||||
choosen = choosable.get(getGame().getRandom().nextInt(choosable.size()));
|
||||
}
|
||||
}
|
||||
}
|
||||
if(choosen != null) {
|
||||
if(choosen.getRoleType() == RoleType.LOUP_GAROU || choosen.getRoleType() == RoleType.VAMPIRE) {
|
||||
for(LGPlayer player : getPlayers())
|
||||
player.sendMessage("§cVotre cible est immunisée.");
|
||||
return;
|
||||
}else if(choosen.getRole() instanceof RChasseurDeVampire) {
|
||||
for(LGPlayer player : getPlayers())
|
||||
player.sendMessage("§cVotre cible est immunisée.");
|
||||
getGame().kill(getPlayers().get(getPlayers().size()-1), Reason.CHASSEUR_DE_VAMPIRE);
|
||||
return;
|
||||
}
|
||||
@Override
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
super.join(player, sendMessage);
|
||||
for (LGPlayer p : getPlayers())
|
||||
p.updatePrefix();
|
||||
}
|
||||
|
||||
LGVampiredEvent event = new LGVampiredEvent(getGame(), choosen);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if(event.isImmuned()) {
|
||||
for(LGPlayer player : getPlayers())
|
||||
player.sendMessage("§cVotre cible est immunisée.");
|
||||
return;
|
||||
}else if(event.isProtect()) {
|
||||
for(LGPlayer player : getPlayers())
|
||||
player.sendMessage("§cVotre cible est protégée.");
|
||||
return;
|
||||
}
|
||||
for(LGPlayer player : getPlayers())
|
||||
player.sendMessage("§7§l"+choosen.getName()+" s'est transformé en §5§lVampire§6.");
|
||||
choosen.sendMessage("§6Tu as été infecté par les §5§lVampires §6pendant la nuit. Tu as perdu tes pouvoirs.");
|
||||
choosen.sendMessage("§6§oTu gagnes désormais avec les §5§l§oVampires§6§o.");
|
||||
choosen.getCache().set("vampire", true);
|
||||
choosen.getCache().set("just_vampire", true);
|
||||
nextCanInfect = getGame().getNight()+1;
|
||||
join(choosen, false);
|
||||
LGCustomItems.updateItem(choosen);
|
||||
}else
|
||||
for(LGPlayer player : getPlayers())
|
||||
player.sendMessage("§6Personne n'a été infecté.");
|
||||
}
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onDayStart(LGNightEndEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
for(LGPlayer player : getGame().getAlive()) {
|
||||
if(player.getCache().getBoolean("just_vampire")) {
|
||||
player.getCache().remove("just_vampire");
|
||||
for(LGPlayer lgp : getGame().getInGame()) {
|
||||
if(lgp.getRoleType() == RoleType.VAMPIRE)
|
||||
lgp.sendMessage("§7§l"+player.getName()+"§6 s'est transformé en §5§lVampire§6...");
|
||||
else
|
||||
lgp.sendMessage("§6Quelqu'un s'est transformé en §5§lVampire§6...");
|
||||
}
|
||||
public void onNightTurn(Runnable callback) {
|
||||
vote = new LGVote(getTimeout(), getTimeout() / 3, getGame(), false, false, (player, secondsLeft) -> !getPlayers().contains(player) ? "§6C'est au tour " + getFriendlyName() + " §6(§e" + secondsLeft + " s§6)" : player.getCache().has("vote") ? "§l§9Vous votez pour §c§l" + player.getCache().<LGPlayer>get("vote").getName() : "§6Il vous reste §e" + secondsLeft + " seconde" + (secondsLeft > 1 ? "s" : "") + "§6 pour voter");
|
||||
for (LGPlayer lgp : getGame().getAlive())
|
||||
if (lgp.getRoleType() == RoleType.VAMPIRE)
|
||||
lgp.showView();
|
||||
for (LGPlayer player : getPlayers()) {
|
||||
player.sendMessage("§6" + getTask());
|
||||
// player.sendTitle("§6C'est à vous de jouer", "§a"+getTask(), 100);
|
||||
player.joinChat(chat);
|
||||
}
|
||||
vote.start(getPlayers(), getPlayers(), () -> {
|
||||
onNightTurnEnd();
|
||||
callback.run();
|
||||
}, getPlayers());
|
||||
}
|
||||
|
||||
if(getGame().checkEndGame())
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
private void onNightTurnEnd() {
|
||||
for (LGPlayer lgp : getGame().getAlive())
|
||||
if (lgp.getRoleType() == RoleType.VAMPIRE)
|
||||
lgp.hideView();
|
||||
for (LGPlayer player : getPlayers())
|
||||
player.leaveChat();
|
||||
|
||||
/* @EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onSkinChange(LGSkinLoadEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
if(getPlayers().contains(e.getPlayer()) && getPlayers().contains(e.getTo()) && showSkins) {
|
||||
e.getProfile().getProperties().removeAll("textures");
|
||||
e.getProfile().getProperties().put("textures", LGCustomSkin.WEREWOLF.getProperty());
|
||||
}
|
||||
}*/
|
||||
@EventHandler
|
||||
public void onGameEnd(LGGameEndEvent e) {
|
||||
if(e.getGame() == getGame() && e.getWinType() == LGWinType.VAMPIRE)
|
||||
for(LGPlayer lgp : getGame().getInGame())
|
||||
if(lgp.getRoleWinType() == RoleWinType.VAMPIRE)//Changed to wintype
|
||||
e.getWinners().add(lgp);
|
||||
}
|
||||
LGPlayer choosen = vote.getChoosen();
|
||||
if (choosen == null) {
|
||||
if (vote.getVotes().size() > 0) {
|
||||
int max = 0;
|
||||
boolean equal = false;
|
||||
for (Entry<LGPlayer, List<LGPlayer>> entry : vote.getVotes().entrySet())
|
||||
if (entry.getValue().size() > max) {
|
||||
equal = false;
|
||||
max = entry.getValue().size();
|
||||
choosen = entry.getKey();
|
||||
} else if (entry.getValue().size() == max)
|
||||
equal = true;
|
||||
if (equal) {
|
||||
choosen = null;
|
||||
ArrayList<LGPlayer> choosable = new ArrayList<>();
|
||||
for (Entry<LGPlayer, List<LGPlayer>> entry : vote.getVotes().entrySet())
|
||||
if (entry.getValue().size() == max && entry.getKey().getRoleType() != RoleType.VAMPIRE)
|
||||
choosable.add(entry.getKey());
|
||||
if (choosable.size() > 0)
|
||||
choosen = choosable.get(getGame().getRandom().nextInt(choosable.size()));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (choosen != null) {
|
||||
if (choosen.getRoleType() == RoleType.LOUP_GAROU || choosen.getRoleType() == RoleType.VAMPIRE) {
|
||||
for (LGPlayer player : getPlayers())
|
||||
player.sendMessage("§cVotre cible est immunisée.");
|
||||
return;
|
||||
} else if (choosen.getRole() instanceof RChasseurDeVampire) {
|
||||
for (LGPlayer player : getPlayers())
|
||||
player.sendMessage("§cVotre cible est immunisée.");
|
||||
getGame().kill(getPlayers().get(getPlayers().size() - 1), Reason.CHASSEUR_DE_VAMPIRE);
|
||||
return;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onUpdatePrefix (LGUpdatePrefixEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
if(getPlayers().contains(e.getTo()) && getPlayers().contains(e.getPlayer()))
|
||||
e.setPrefix(e.getPrefix()+"§5");
|
||||
}
|
||||
LGVampiredEvent event = new LGVampiredEvent(getGame(), choosen);
|
||||
Bukkit.getPluginManager().callEvent(event);
|
||||
if (event.isImmuned()) {
|
||||
for (LGPlayer player : getPlayers())
|
||||
player.sendMessage("§cVotre cible est immunisée.");
|
||||
return;
|
||||
} else if (event.isProtect()) {
|
||||
for (LGPlayer player : getPlayers())
|
||||
player.sendMessage("§cVotre cible est protégée.");
|
||||
return;
|
||||
}
|
||||
for (LGPlayer player : getPlayers())
|
||||
player.sendMessage("§7§l" + choosen.getName() + " s'est transformé en §5§lVampire§6.");
|
||||
choosen.sendMessage("§6Tu as été infecté par les §5§lVampires §6pendant la nuit. Tu as perdu tes pouvoirs.");
|
||||
choosen.sendMessage("§6§oTu gagnes désormais avec les §5§l§oVampires§6§o.");
|
||||
choosen.getCache().set("vampire", true);
|
||||
choosen.getCache().set("just_vampire", true);
|
||||
nextCanInfect = getGame().getNight() + 1;
|
||||
join(choosen, false);
|
||||
LGCustomItems.updateItem(choosen);
|
||||
} else
|
||||
for (LGPlayer player : getPlayers())
|
||||
player.sendMessage("§6Personne n'a été infecté.");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onCustomItemChange(LGCustomItemChangeEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
if(e.getPlayer().getCache().getBoolean("vampire"))
|
||||
e.getConstraints().add(LGCustomItemsConstraints.VAMPIRE_INFECTE.getName());
|
||||
}
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onDayStart(LGNightEndEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
for (LGPlayer player : getGame().getAlive()) {
|
||||
if (player.getCache().getBoolean("just_vampire")) {
|
||||
player.getCache().remove("just_vampire");
|
||||
for (LGPlayer lgp : getGame().getInGame()) {
|
||||
if (lgp.getRoleType() == RoleType.VAMPIRE)
|
||||
lgp.sendMessage("§7§l" + player.getName() + "§6 s'est transformé en §5§lVampire§6...");
|
||||
else
|
||||
lgp.sendMessage("§6Quelqu'un s'est transformé en §5§lVampire§6...");
|
||||
}
|
||||
|
||||
if (getGame().checkEndGame())
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* @EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onSkinChange(LGSkinLoadEvent e) {
|
||||
if(e.getGame() == getGame())
|
||||
if(getPlayers().contains(e.getPlayer()) && getPlayers().contains(e.getTo()) && showSkins) {
|
||||
e.getProfile().getProperties().removeAll("textures");
|
||||
e.getProfile().getProperties().put("textures", LGCustomSkin.WEREWOLF.getProperty());
|
||||
}
|
||||
}*/
|
||||
@EventHandler
|
||||
public void onGameEnd(LGGameEndEvent e) {
|
||||
if (e.getGame() == getGame() && e.getWinType() == LGWinType.VAMPIRE)
|
||||
for (LGPlayer lgp : getGame().getInGame())
|
||||
if (lgp.getRoleWinType() == RoleWinType.VAMPIRE)//Changed to wintype
|
||||
e.getWinners().add(lgp);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onUpdatePrefix(LGUpdatePrefixEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
if (getPlayers().contains(e.getTo()) && getPlayers().contains(e.getPlayer()))
|
||||
e.setPrefix(e.getPrefix() + "§5");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onCustomItemChange(LGCustomItemChangeEvent e) {
|
||||
if (e.getGame() == getGame())
|
||||
if (e.getPlayer().getCache().getBoolean("vampire"))
|
||||
e.getConstraints().add(LGCustomItemsConstraints.VAMPIRE_INFECTE.getName());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,44 +2,53 @@ package fr.leomelki.loupgarou.roles;
|
|||
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
|
||||
public class RVillageois extends Role{
|
||||
public RVillageois(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lVillageois";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "des "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Tu ne disposes d'aucun pouvoir particulier, uniquement ta perspicacité et ta force de persuasion.";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
public class RVillageois extends Role {
|
||||
public RVillageois(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lVillageois";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "des " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Tu ne disposes d'aucun pouvoir particulier, uniquement ta perspicacité et ta force de persuasion.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,68 +3,77 @@ package fr.leomelki.loupgarou.roles;
|
|||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
|
||||
public class RVoyante extends Role{
|
||||
public RVoyante(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lVoyante";
|
||||
}
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de la "+getName();
|
||||
}
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
public class RVoyante extends Role {
|
||||
public RVoyante(LGGame game) {
|
||||
super(game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu peux espionner un joueur et découvrir sa véritable identité...";
|
||||
}
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis un joueur dont tu veux connnaître l'identité.";
|
||||
}
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "La "+getName()+"§9 s'apprête à sonder un joueur...";
|
||||
}
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
@Override
|
||||
public RoleType getType() {
|
||||
return RoleType.VILLAGER;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
@Override
|
||||
public RoleWinType getWinType() {
|
||||
return RoleWinType.VILLAGE;
|
||||
}
|
||||
|
||||
player.choose(choosen -> {
|
||||
if(choosen != null && choosen != player) {
|
||||
//player.sendTitle("§6Vous avez regardé un rôle", "§e§l"+choosen.getName()+"§6§l est §e§l"+choosen.getRole().getName(), 5*20);
|
||||
player.sendActionBarMessage("§e§l"+choosen.getName()+"§6 est §e§l"+choosen.getRole().getName());
|
||||
player.sendMessage("§6Tu découvres que §7§l"+choosen.getName()+"§6 est "+choosen.getRole().getName()+"§6.");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez regardé aucun rôle", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§cVous n'avez pas utilisé votre pouvoir cette nuit.");
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return "§a§lVoyante";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFriendlyName() {
|
||||
return "de la " + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "Tu gagnes avec le §a§lVillage§f. Chaque nuit, tu peux espionner un joueur et découvrir sa véritable identité...";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTask() {
|
||||
return "Choisis un joueur dont tu veux connnaître l'identité.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBroadcastedTask() {
|
||||
return "La " + getName() + "§9 s'apprête à sonder un joueur...";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
player.showView();
|
||||
|
||||
player.choose(choosen -> {
|
||||
if (choosen != null && choosen != player) {
|
||||
//player.sendTitle("§6Vous avez regardé un rôle", "§e§l"+choosen.getName()+"§6§l est §e§l"+choosen.getRole().getName(), 5*20);
|
||||
player.sendActionBarMessage("§e§l" + choosen.getName() + "§6 est §e§l" + choosen.getRole().getName());
|
||||
player.sendMessage("§6Tu découvres que §7§l" + choosen.getName() + "§6 est " + choosen.getRole().getName() + "§6.");
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
player.stopChoosing();
|
||||
player.hideView();
|
||||
//player.sendTitle("§cVous n'avez regardé aucun rôle", "§4Vous avez mis trop de temps à vous décider...", 80);
|
||||
//player.sendMessage("§cVous n'avez pas utilisé votre pouvoir cette nuit.");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,123 +1,150 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import fr.leomelki.loupgarou.MainLg;
|
||||
import fr.leomelki.loupgarou.classes.LGCustomItems;
|
||||
import fr.leomelki.loupgarou.classes.LGGame;
|
||||
import fr.leomelki.loupgarou.classes.LGPlayer;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
public abstract class Role implements Listener{
|
||||
@Getter @Setter private int waitedPlayers;
|
||||
@Getter private final ArrayList<LGPlayer> players = new ArrayList<>();
|
||||
@Getter private final LGGame game;
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
public Role(LGGame game) {
|
||||
this.game = game;
|
||||
Bukkit.getPluginManager().registerEvents(this, MainLg.getInstance());
|
||||
FileConfiguration config = MainLg.getInstance().getConfig();
|
||||
String roleConfigName = "role."+getClass().getSimpleName().substring(1);
|
||||
if(config.contains(roleConfigName))
|
||||
waitedPlayers = config.getInt(roleConfigName);
|
||||
}
|
||||
public abstract class Role implements Listener {
|
||||
@Getter
|
||||
private final ArrayList<LGPlayer> players = new ArrayList<>();
|
||||
@Getter
|
||||
private final LGGame game;
|
||||
@Getter
|
||||
@Setter
|
||||
private int waitedPlayers;
|
||||
|
||||
public Role(LGGame game) {
|
||||
this.game = game;
|
||||
Bukkit.getPluginManager().registerEvents(this, MainLg.getInstance());
|
||||
FileConfiguration config = MainLg.getInstance().getConfig();
|
||||
String roleConfigName = "role." + getClass().getSimpleName().substring(1);
|
||||
if (config.contains(roleConfigName))
|
||||
waitedPlayers = config.getInt(roleConfigName);
|
||||
}
|
||||
|
||||
|
||||
public abstract String getName();
|
||||
public abstract String getFriendlyName();
|
||||
public abstract String getShortDescription();
|
||||
public abstract String getDescription();
|
||||
public abstract String getTask();
|
||||
public abstract String getBroadcastedTask();
|
||||
public RoleType getType(LGPlayer lgp) {
|
||||
return getType();
|
||||
}
|
||||
public RoleWinType getWinType(LGPlayer lgp) {
|
||||
return getWinType();
|
||||
}
|
||||
public RoleType getType() {return null;}
|
||||
public RoleWinType getWinType() {return null;}
|
||||
/**
|
||||
* @return Timeout in second for this role
|
||||
*/
|
||||
public abstract int getTimeout();
|
||||
public abstract String getName();
|
||||
|
||||
public void onNightTurn(Runnable callback) {
|
||||
ArrayList<LGPlayer> players = (ArrayList<LGPlayer>) getPlayers().clone();
|
||||
new Runnable() {
|
||||
public abstract String getFriendlyName();
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
getGame().cancelWait();
|
||||
if(players.size() == 0) {
|
||||
onTurnFinish(callback);
|
||||
return;
|
||||
}
|
||||
LGPlayer player = players.remove(0);
|
||||
if(player.isRoleActive()) {
|
||||
getGame().wait(getTimeout(), ()->{
|
||||
try {
|
||||
Role.this.onNightTurnTimeout(player);
|
||||
}catch(Exception err) {
|
||||
System.out.println("Error when timeout role");
|
||||
err.printStackTrace();
|
||||
}
|
||||
this.run();
|
||||
}, (currentPlayer, secondsLeft)-> currentPlayer == player ? "§9§lC'est à ton tour !" : "§6C'est au tour "+getFriendlyName()+" §6(§e"+secondsLeft+" s§6)");
|
||||
player.sendMessage("§6"+getTask());
|
||||
// player.sendTitle("§6C'est à vous de jouer", "§a"+getTask(), 100);
|
||||
onNightTurn(player, this);
|
||||
} else {
|
||||
getGame().wait(getTimeout(), ()->{}, (currentPlayer, secondsLeft)-> currentPlayer == player ? "§c§lTu ne peux pas jouer" : "§6C'est au tour "+getFriendlyName()+" §6(§e"+secondsLeft+" s§6)");
|
||||
Runnable run = this;
|
||||
new BukkitRunnable() {
|
||||
public abstract String getShortDescription();
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
run.run();
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 20*(ThreadLocalRandom.current().nextInt(getTimeout()/3*2-4)+4));
|
||||
}
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
System.out.println(player.getName()+" est "+getName());
|
||||
players.add(player);
|
||||
if(player.getRole() == null)
|
||||
player.setRole(this);
|
||||
waitedPlayers--;
|
||||
if(sendMessage) {
|
||||
player.sendTitle("§6Tu es "+getName(), "§e"+getShortDescription(), 200);
|
||||
player.sendMessage("§6Tu es "+getName()+"§6.");
|
||||
player.sendMessage("§6Description : §f"+getDescription());
|
||||
}
|
||||
}
|
||||
public void join(LGPlayer player) {
|
||||
join(player, !getGame().isStarted());
|
||||
LGCustomItems.updateItem(player);
|
||||
}
|
||||
public boolean hasPlayersLeft() {
|
||||
return getPlayers().size() > 0;
|
||||
}
|
||||
protected void onNightTurnTimeout(LGPlayer player) {}
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {}
|
||||
protected void onTurnFinish(Runnable callback) {
|
||||
callback.run();
|
||||
}
|
||||
public int getTurnOrder() {
|
||||
try {
|
||||
RoleSort role = RoleSort.valueOf(getClass().getSimpleName().substring(1));
|
||||
return role == null ? -1 : role.ordinal();
|
||||
}catch(Throwable e) {
|
||||
return -1;
|
||||
}
|
||||
}//En combientième ce rôle doit être appellé
|
||||
public abstract String getDescription();
|
||||
|
||||
public abstract String getTask();
|
||||
|
||||
public abstract String getBroadcastedTask();
|
||||
|
||||
public RoleType getType(LGPlayer lgp) {
|
||||
return getType();
|
||||
}
|
||||
|
||||
public RoleWinType getWinType(LGPlayer lgp) {
|
||||
return getWinType();
|
||||
}
|
||||
|
||||
public RoleType getType() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public RoleWinType getWinType() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Timeout in second for this role
|
||||
*/
|
||||
public abstract int getTimeout();
|
||||
|
||||
public void onNightTurn(Runnable callback) {
|
||||
ArrayList<LGPlayer> players = (ArrayList<LGPlayer>) getPlayers().clone();
|
||||
new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
getGame().cancelWait();
|
||||
if (players.size() == 0) {
|
||||
onTurnFinish(callback);
|
||||
return;
|
||||
}
|
||||
LGPlayer player = players.remove(0);
|
||||
if (player.isRoleActive()) {
|
||||
getGame().wait(getTimeout(), () -> {
|
||||
try {
|
||||
Role.this.onNightTurnTimeout(player);
|
||||
} catch (Exception err) {
|
||||
System.out.println("Error when timeout role");
|
||||
err.printStackTrace();
|
||||
}
|
||||
this.run();
|
||||
}, (currentPlayer, secondsLeft) -> currentPlayer == player ? "§9§lC'est à ton tour !" : "§6C'est au tour " + getFriendlyName() + " §6(§e" + secondsLeft + " s§6)");
|
||||
player.sendMessage("§6" + getTask());
|
||||
// player.sendTitle("§6C'est à vous de jouer", "§a"+getTask(), 100);
|
||||
onNightTurn(player, this);
|
||||
} else {
|
||||
getGame().wait(getTimeout(), () -> {
|
||||
}, (currentPlayer, secondsLeft) -> currentPlayer == player ? "§c§lTu ne peux pas jouer" : "§6C'est au tour " + getFriendlyName() + " §6(§e" + secondsLeft + " s§6)");
|
||||
Runnable run = this;
|
||||
new BukkitRunnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
run.run();
|
||||
}
|
||||
}.runTaskLater(MainLg.getInstance(), 20 * (ThreadLocalRandom.current().nextInt(getTimeout() / 3 * 2 - 4) + 4));
|
||||
}
|
||||
}
|
||||
}.run();
|
||||
}
|
||||
|
||||
public void join(LGPlayer player, boolean sendMessage) {
|
||||
System.out.println(player.getName() + " est " + getName());
|
||||
players.add(player);
|
||||
if (player.getRole() == null)
|
||||
player.setRole(this);
|
||||
waitedPlayers--;
|
||||
if (sendMessage) {
|
||||
player.sendTitle("§6Tu es " + getName(), "§e" + getShortDescription(), 200);
|
||||
player.sendMessage("§6Tu es " + getName() + "§6.");
|
||||
player.sendMessage("§6Description : §f" + getDescription());
|
||||
}
|
||||
}
|
||||
|
||||
public void join(LGPlayer player) {
|
||||
join(player, !getGame().isStarted());
|
||||
LGCustomItems.updateItem(player);
|
||||
}
|
||||
|
||||
public boolean hasPlayersLeft() {
|
||||
return getPlayers().size() > 0;
|
||||
}
|
||||
|
||||
protected void onNightTurnTimeout(LGPlayer player) {
|
||||
}
|
||||
|
||||
protected void onNightTurn(LGPlayer player, Runnable callback) {
|
||||
}
|
||||
|
||||
protected void onTurnFinish(Runnable callback) {
|
||||
callback.run();
|
||||
}
|
||||
|
||||
public int getTurnOrder() {
|
||||
try {
|
||||
RoleSort role = RoleSort.valueOf(getClass().getSimpleName().substring(1));
|
||||
return role == null ? -1 : role.ordinal();
|
||||
} catch (Throwable e) {
|
||||
return -1;
|
||||
}
|
||||
}//En combientième ce rôle doit être appellé
|
||||
}
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
package fr.leomelki.loupgarou.roles;
|
||||
|
||||
public enum RoleSort {
|
||||
ChienLoup,
|
||||
EnfantSauvage,
|
||||
Cupidon,
|
||||
Garde,
|
||||
Survivant,
|
||||
Voyante,
|
||||
Detective,
|
||||
Dictateur,
|
||||
Pretre,
|
||||
LoupGarou,
|
||||
LoupGarouNoir,
|
||||
GrandMechantLoup,
|
||||
LoupGarouBlanc,
|
||||
Assassin,
|
||||
Pyromane,
|
||||
ChasseurDeVampire,
|
||||
Vampire,
|
||||
Pirate,
|
||||
Bouffon,
|
||||
Sorciere,
|
||||
Corbeau
|
||||
ChienLoup,
|
||||
EnfantSauvage,
|
||||
Cupidon,
|
||||
Garde,
|
||||
Survivant,
|
||||
Voyante,
|
||||
Detective,
|
||||
Dictateur,
|
||||
Pretre,
|
||||
LoupGarou,
|
||||
LoupGarouNoir,
|
||||
GrandMechantLoup,
|
||||
LoupGarouBlanc,
|
||||
Assassin,
|
||||
Pyromane,
|
||||
ChasseurDeVampire,
|
||||
Vampire,
|
||||
Pirate,
|
||||
Bouffon,
|
||||
Sorciere,
|
||||
Corbeau
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue