Archiviert
13
0

Converted ItemDisguise to a maven project.

Dieser Commit ist enthalten in:
Kristian S. Stangeland 2012-10-11 09:09:42 +02:00
Ursprung ff0cd06b2e
Commit 3af9196740
9 geänderte Dateien mit 351 neuen und 267 gelöschten Zeilen

Datei anzeigen

@ -1,8 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<classpath> <classpath>
<classpathentry kind="src" path="src"/> <classpathentry including="**/*.java" kind="src" path="src/main/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/> <classpathentry combineaccessrules="false" kind="src" path="/ProtocolLib"/>
<classpathentry kind="lib" path="D:/Games/Minecraft/Server Mods/API/bukkit-1.3.1-R2.0.jar"/> <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<classpathentry combineaccessrules="false" kind="src" path="/ProtocolLib"/> <attributes>
<classpathentry kind="output" path="class"/> <attribute name="maven.pomderived" value="true"/>
</classpath> </attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre6"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>

1
ItemDisguise/.gitignore vendored Normale Datei
Datei anzeigen

@ -0,0 +1 @@
target/

Datei anzeigen

@ -1,17 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<projectDescription> <projectDescription>
<name>ItemDisguise</name> <name>ItemDisguise</name>
<comment></comment> <comment></comment>
<projects> <projects>
</projects> </projects>
<buildSpec> <buildSpec>
<buildCommand> <buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name> <name>org.eclipse.jdt.core.javabuilder</name>
<arguments> <arguments>
</arguments> </arguments>
</buildCommand> </buildCommand>
</buildSpec> <buildCommand>
<natures> <name>org.eclipse.m2e.core.maven2Builder</name>
<nature>org.eclipse.jdt.core.javanature</nature> <arguments>
</natures> </arguments>
</projectDescription> </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

Datei anzeigen

@ -1,11 +1,12 @@
eclipse.preferences.version=1 eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.7 org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.7 org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.7

Datei anzeigen

@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

68
ItemDisguise/pom.xml Normale Datei
Datei anzeigen

@ -0,0 +1,68 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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>com.comphenix.itemdisguise</groupId>
<artifactId>ItemDisguise</artifactId>
<version>1.0.0</version>
<name>Item Disguise</name>
<description>Change the appearance of inventory items.</description>
<repositories>
<repository>
<id>bukkit-rep</id>
<url>http://repo.bukkit.org/content/groups/public</url>
</repository>
<repository>
<id>comphenix-releases</id>
<name>Comphenix Maven Releases</name>
<url>http://comphenix.net/maven/content/repositories/releases/</url>
</repository>
</repositories>
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<resources>
<resource>
<directory>src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<scm>
<connection>scm:git:git://github.com/aadnk/ProtocolLib.git</connection>
<developerConnection>scm:git:git@github.com:aadnk/ProtocolLib.git</developerConnection>
<url>https://github.com/aadnk/ProtocolLib</url>
</scm>
<licenses>
<license>
<name>GNU GENERAL PUBLIC LICENSE - Version 2, June 1991</name>
<url>http://www.gnu.org/licenses/gpl-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<dependencies>
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
<version>1.3.2-R1.0</version>
</dependency>
<dependency>
<groupId>com.comphenix.protocol</groupId>
<artifactId>ProtocolLib</artifactId>
<version>1.3.1</version>
</dependency>
</dependencies>
</project>

Datei anzeigen

@ -1,119 +1,119 @@
/* /*
* ItemDisguise - A simple Bukkit plugin that illustrates how to use ProtocolLib. * ItemDisguise - A simple Bukkit plugin that illustrates how to use ProtocolLib.
* Copyright (C) 2012 Kristian S. Stangeland * Copyright (C) 2012 Kristian S. Stangeland
* *
* This program is free software; you can redistribute it and/or modify it under the terms of the * 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 2 of * GNU General Public License as published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version. * the License, or (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * 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. * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. * See the GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License along with this program; * You should have received a copy of the GNU General Public License along with this program;
* if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA * 02111-1307 USA
*/ */
package com.comphenix.itemdisguise; package com.comphenix.itemdisguise;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.bukkit.Server; import org.bukkit.Server;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import com.comphenix.protocol.ProtocolManager; import com.comphenix.protocol.ProtocolManager;
import com.comphenix.protocol.events.ConnectionSide; import com.comphenix.protocol.events.ConnectionSide;
import com.comphenix.protocol.events.PacketAdapter; import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.events.PacketEvent; import com.comphenix.protocol.events.PacketEvent;
import com.comphenix.protocol.reflect.FieldAccessException; import com.comphenix.protocol.reflect.FieldAccessException;
public class HideEnchantmentsListener { public class HideEnchantmentsListener {
private final Server server; private final Server server;
private final Logger logger; private final Logger logger;
public HideEnchantmentsListener(Server server, Logger logger) { public HideEnchantmentsListener(Server server, Logger logger) {
this.server = server; this.server = server;
this.logger = logger; this.logger = logger;
} }
public void addListener(ProtocolManager protocolManager, JavaPlugin plugin) { public void addListener(ProtocolManager protocolManager, JavaPlugin plugin) {
// Hide all enchantments // Hide all enchantments
protocolManager.addPacketListener(new PacketAdapter(plugin, ConnectionSide.SERVER_SIDE, 0x67, 0x68, 0x3E) { protocolManager.addPacketListener(new PacketAdapter(plugin, ConnectionSide.SERVER_SIDE, 0x67, 0x68, 0x3E) {
@Override @Override
public void onPacketSending(PacketEvent event) { public void onPacketSending(PacketEvent event) {
PacketContainer packet = event.getPacket(); PacketContainer packet = event.getPacket();
try { try {
// Item packets // Item packets
switch (event.getPacketID()) { switch (event.getPacketID()) {
case 0x67: // Set slot case 0x67: // Set slot
removeEnchantments(packet.getItemModifier().read(0)); removeEnchantments(packet.getItemModifier().read(0));
break; break;
case 0x68: // Set Window Items case 0x68: // Set Window Items
ItemStack[] elements = packet.getItemArrayModifier().read(0); ItemStack[] elements = packet.getItemArrayModifier().read(0);
for (int i = 0; i < elements.length; i++) { for (int i = 0; i < elements.length; i++) {
if (elements[i] != null) { if (elements[i] != null) {
removeEnchantments(elements[i]); removeEnchantments(elements[i]);
} }
} }
break; break;
case 0x3E: // Sound effect case 0x3E: // Sound effect
event.setCancelled(true); event.setCancelled(true);
break; break;
} }
} catch (FieldAccessException e) { } catch (FieldAccessException e) {
logger.log(Level.SEVERE, "Couldn't access field.", e); logger.log(Level.SEVERE, "Couldn't access field.", e);
} }
} }
}); });
// Censor // Censor
protocolManager.addPacketListener(new PacketAdapter(plugin, ConnectionSide.CLIENT_SIDE, 0x3) { protocolManager.addPacketListener(new PacketAdapter(plugin, ConnectionSide.CLIENT_SIDE, 0x3) {
@Override @Override
public void onPacketReceiving(PacketEvent event) { public void onPacketReceiving(PacketEvent event) {
if (event.getPacketID() == 0x3) { if (event.getPacketID() == 0x3) {
try { try {
String message = event.getPacket(). String message = event.getPacket().
getSpecificModifier(String.class).read(0); getSpecificModifier(String.class).read(0);
if (message.contains("shit") || message.contains("fuck")) { if (message.contains("shit") || message.contains("fuck")) {
event.setCancelled(true); event.setCancelled(true);
event.getPlayer().sendMessage("Bad manners!"); event.getPlayer().sendMessage("Bad manners!");
} }
} catch (FieldAccessException e) { } catch (FieldAccessException e) {
logger.log(Level.SEVERE, "Couldn't access field.", e); logger.log(Level.SEVERE, "Couldn't access field.", e);
} }
} }
} }
}); });
} }
public Server getServer() { public Server getServer() {
return server; return server;
} }
public void removeListener(ProtocolManager protocolManager, JavaPlugin plugin) { public void removeListener(ProtocolManager protocolManager, JavaPlugin plugin) {
// Just remove every adapter with this plugin // Just remove every adapter with this plugin
protocolManager.removePacketListeners(plugin); protocolManager.removePacketListeners(plugin);
} }
private void removeEnchantments(ItemStack stack) { private void removeEnchantments(ItemStack stack) {
Object[] copy = stack.getEnchantments().keySet().toArray(); Object[] copy = stack.getEnchantments().keySet().toArray();
for (Object enchantment : copy) { for (Object enchantment : copy) {
stack.removeEnchantment((Enchantment) enchantment); stack.removeEnchantment((Enchantment) enchantment);
} }
} }
} }

Datei anzeigen

@ -1,99 +1,99 @@
/* /*
* ItemDisguise - A simple Bukkit plugin that illustrates how to use ProtocolLib. * ItemDisguise - A simple Bukkit plugin that illustrates how to use ProtocolLib.
* Copyright (C) 2012 Kristian S. Stangeland * Copyright (C) 2012 Kristian S. Stangeland
* *
* This program is free software; you can redistribute it and/or modify it under the terms of the * 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 2 of * GNU General Public License as published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version. * the License, or (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * 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. * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. * See the GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License along with this program; * You should have received a copy of the GNU General Public License along with this program;
* if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA * 02111-1307 USA
*/ */
package com.comphenix.itemdisguise; package com.comphenix.itemdisguise;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.ProtocolManager; import com.comphenix.protocol.ProtocolManager;
import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.events.PacketContainer;
public class ItemDisguiseMod extends JavaPlugin { public class ItemDisguiseMod extends JavaPlugin {
private ProtocolManager protocolManager; private ProtocolManager protocolManager;
private Logger logger; private Logger logger;
private HideEnchantmentsListener enchantmentsListener; private HideEnchantmentsListener enchantmentsListener;
@Override @Override
public void onEnable() { public void onEnable() {
logger = getLoggerSafely(); logger = getLoggerSafely();
protocolManager = ProtocolLibrary.getProtocolManager(); protocolManager = ProtocolLibrary.getProtocolManager();
enchantmentsListener = new HideEnchantmentsListener(getServer(), logger); enchantmentsListener = new HideEnchantmentsListener(getServer(), logger);
enchantmentsListener.addListener(protocolManager, this); enchantmentsListener.addListener(protocolManager, this);
} }
@Override @Override
public void onDisable() { public void onDisable() {
enchantmentsListener.removeListener(protocolManager, this); enchantmentsListener.removeListener(protocolManager, this);
} }
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (sender instanceof Player) { if (sender instanceof Player) {
Player player = (Player) sender; Player player = (Player) sender;
if (label.equalsIgnoreCase("explosion")) { if (label.equalsIgnoreCase("explosion")) {
PacketContainer fakeExplosion = protocolManager.createPacket(0x3C); PacketContainer fakeExplosion = protocolManager.createPacket(0x3C);
// Set the coordinates // Set the coordinates
try { try {
fakeExplosion.getSpecificModifier(double.class). fakeExplosion.getSpecificModifier(double.class).
write(0, player.getLocation().getX()). write(0, player.getLocation().getX()).
write(1, player.getLocation().getY()). write(1, player.getLocation().getY()).
write(2, player.getLocation().getZ()); write(2, player.getLocation().getZ());
fakeExplosion.getSpecificModifier(float.class). fakeExplosion.getSpecificModifier(float.class).
write(0, 3.0F); write(0, 3.0F);
protocolManager.sendServerPacket(player, fakeExplosion); protocolManager.sendServerPacket(player, fakeExplosion);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
return true; return true;
} }
return false; return false;
} }
// Get the Bukkit logger first, before we try to create our own // Get the Bukkit logger first, before we try to create our own
private Logger getLoggerSafely() { private Logger getLoggerSafely() {
Logger log = null; Logger log = null;
try { try {
log = getLogger(); log = getLogger();
} catch (Throwable e) { } catch (Throwable e) {
// We'll handle it // We'll handle it
} }
if (log == null) if (log == null)
log = Logger.getLogger("Minecraft"); log = Logger.getLogger("Minecraft");
return log; return log;
} }
} }

Datei anzeigen

@ -1,14 +1,14 @@
name: ItemDisguiseMod name: ItemDisguiseMod
version: 1.0.0 version: 1.0.0
description: Change the appearance of inventory items. description: Change the appearance of inventory items.
author: Comphenix author: Comphenix
website: http://www.comphenix.net/ItemDisguise website: http://www.comphenix.net/ItemDisguise
main: com.comphenix.itemdisguise.ItemDisguiseMod main: com.comphenix.itemdisguise.ItemDisguiseMod
depends: [ProtocolLib] depends: [ProtocolLib]
database: false database: false
commands: commands:
explosion: explosion:
description: Creates a fake explosion around the caller. description: Creates a fake explosion around the caller.
usage: /<command> usage: /<command>