Removed PacketPlayOutRecipeUpdateFix

This commit is contained in:
Auxilor
2021-01-22 19:45:29 +00:00
parent 433f9f53ab
commit 337dba23b4
7 changed files with 1 additions and 286 deletions

View File

@@ -1,57 +0,0 @@
package com.willfp.eco.proxy.v1_15_R1;
import com.willfp.eco.proxy.proxies.PacketPlayOutRecipeUpdateFixProxy;
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
import net.minecraft.server.v1_15_R1.IRecipe;
import net.minecraft.server.v1_15_R1.PacketPlayOutRecipeUpdate;
import org.jetbrains.annotations.NotNull;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@SuppressWarnings("unchecked")
public final class PacketPlayOutRecipeUpdateFix implements PacketPlayOutRecipeUpdateFixProxy {
@Override
public Object splitAndModifyPacket(@NotNull final Object object) {
if (!(object instanceof PacketPlayOutRecipeUpdate)) {
throw new IllegalArgumentException("Parameter not packet!");
}
PacketPlayOutRecipeUpdate oldPacket = (PacketPlayOutRecipeUpdate) object;
List<IRecipe<?>> recipes = new ArrayList<>();
Field f = null;
try {
f = oldPacket.getClass().getDeclaredField("a");
f.setAccessible(true);
recipes.addAll((Collection<? extends IRecipe<?>>) f.get(oldPacket));
} catch (IllegalAccessException | NoSuchFieldException e) {
e.printStackTrace();
}
if (f == null) {
return null;
}
List<IRecipe<?>> externRecipes = new ArrayList<>();
for (IRecipe<?> recipe : new ArrayList<>(recipes)) {
if (AbstractEcoPlugin.LOADED_ECO_PLUGINS.contains(recipe.getKey().getNamespace())) {
externRecipes.add(recipe);
recipes.remove(recipe);
}
}
if (recipes.isEmpty()) {
return null;
}
try {
f.set(object, recipes);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return new PacketPlayOutRecipeUpdate(externRecipes);
}
}

View File

@@ -1,57 +0,0 @@
package com.willfp.eco.proxy.v1_16_R1;
import com.willfp.eco.proxy.proxies.PacketPlayOutRecipeUpdateFixProxy;
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
import net.minecraft.server.v1_16_R1.IRecipe;
import net.minecraft.server.v1_16_R1.PacketPlayOutRecipeUpdate;
import org.jetbrains.annotations.NotNull;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@SuppressWarnings("unchecked")
public final class PacketPlayOutRecipeUpdateFix implements PacketPlayOutRecipeUpdateFixProxy {
@Override
public Object splitAndModifyPacket(@NotNull final Object object) {
if (!(object instanceof PacketPlayOutRecipeUpdate)) {
throw new IllegalArgumentException("Parameter not packet!");
}
PacketPlayOutRecipeUpdate oldPacket = (PacketPlayOutRecipeUpdate) object;
List<IRecipe<?>> recipes = new ArrayList<>();
Field f = null;
try {
f = oldPacket.getClass().getDeclaredField("a");
f.setAccessible(true);
recipes.addAll((Collection<? extends IRecipe<?>>) f.get(oldPacket));
} catch (IllegalAccessException | NoSuchFieldException e) {
e.printStackTrace();
}
if (f == null) {
return null;
}
List<IRecipe<?>> externRecipes = new ArrayList<>();
for (IRecipe<?> recipe : new ArrayList<>(recipes)) {
if (AbstractEcoPlugin.LOADED_ECO_PLUGINS.contains(recipe.getKey().getNamespace())) {
externRecipes.add(recipe);
recipes.remove(recipe);
}
}
if (recipes.isEmpty()) {
return null;
}
try {
f.set(object, recipes);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return new PacketPlayOutRecipeUpdate(externRecipes);
}
}

View File

@@ -1,57 +0,0 @@
package com.willfp.eco.proxy.v1_16_R2;
import com.willfp.eco.proxy.proxies.PacketPlayOutRecipeUpdateFixProxy;
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
import net.minecraft.server.v1_16_R2.IRecipe;
import net.minecraft.server.v1_16_R2.PacketPlayOutRecipeUpdate;
import org.jetbrains.annotations.NotNull;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@SuppressWarnings("unchecked")
public final class PacketPlayOutRecipeUpdateFix implements PacketPlayOutRecipeUpdateFixProxy {
@Override
public Object splitAndModifyPacket(@NotNull final Object object) {
if (!(object instanceof PacketPlayOutRecipeUpdate)) {
throw new IllegalArgumentException("Parameter not packet!");
}
PacketPlayOutRecipeUpdate oldPacket = (PacketPlayOutRecipeUpdate) object;
List<IRecipe<?>> recipes = new ArrayList<>();
Field f = null;
try {
f = oldPacket.getClass().getDeclaredField("a");
f.setAccessible(true);
recipes.addAll((Collection<? extends IRecipe<?>>) f.get(oldPacket));
} catch (IllegalAccessException | NoSuchFieldException e) {
e.printStackTrace();
}
if (f == null) {
return null;
}
List<IRecipe<?>> externRecipes = new ArrayList<>();
for (IRecipe<?> recipe : new ArrayList<>(recipes)) {
if (AbstractEcoPlugin.LOADED_ECO_PLUGINS.contains(recipe.getKey().getNamespace())) {
externRecipes.add(recipe);
recipes.remove(recipe);
}
}
if (recipes.isEmpty()) {
return null;
}
try {
f.set(object, recipes);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return new PacketPlayOutRecipeUpdate(externRecipes);
}
}

View File

@@ -1,57 +0,0 @@
package com.willfp.eco.proxy.v1_16_R3;
import com.willfp.eco.proxy.proxies.PacketPlayOutRecipeUpdateFixProxy;
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
import net.minecraft.server.v1_16_R3.IRecipe;
import net.minecraft.server.v1_16_R3.PacketPlayOutRecipeUpdate;
import org.jetbrains.annotations.NotNull;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@SuppressWarnings("unchecked")
public final class PacketPlayOutRecipeUpdateFix implements PacketPlayOutRecipeUpdateFixProxy {
@Override
public Object splitAndModifyPacket(@NotNull final Object object) {
if (!(object instanceof PacketPlayOutRecipeUpdate)) {
throw new IllegalArgumentException("Parameter not packet!");
}
PacketPlayOutRecipeUpdate oldPacket = (PacketPlayOutRecipeUpdate) object;
List<IRecipe<?>> recipes = new ArrayList<>();
Field f = null;
try {
f = oldPacket.getClass().getDeclaredField("a");
f.setAccessible(true);
recipes.addAll((Collection<? extends IRecipe<?>>) f.get(oldPacket));
} catch (IllegalAccessException | NoSuchFieldException e) {
e.printStackTrace();
}
if (f == null) {
return null;
}
List<IRecipe<?>> externRecipes = new ArrayList<>();
for (IRecipe<?> recipe : new ArrayList<>(recipes)) {
if (AbstractEcoPlugin.LOADED_ECO_PLUGINS.contains(recipe.getKey().getNamespace())) {
externRecipes.add(recipe);
recipes.remove(recipe);
}
}
if (recipes.isEmpty()) {
return null;
}
try {
f.set(object, recipes);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return new PacketPlayOutRecipeUpdate(externRecipes);
}
}

View File

@@ -1,6 +1,5 @@
package com.willfp.eco.spigot;
import com.comphenix.protocol.ProtocolLibrary;
import com.willfp.eco.spigot.display.packets.PacketAutoRecipe;
import com.willfp.eco.spigot.display.packets.PacketChat;
import com.willfp.eco.spigot.display.packets.PacketOpenWindowMerchant;
@@ -56,7 +55,7 @@ public class EcoPlugin extends AbstractEcoPlugin {
this.getEventManager().registerListener(new ArmorListener());
this.getEventManager().registerListener(new DispenserArmorListener());
this.getEventManager().registerListener(new EntityDeathByEntityListeners(this));
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketPlayOutRecipeUpdateFix(this));
//ProtocolLibrary.getProtocolManager().addPacketListener(new PacketPlayOutRecipeUpdateFix(this));
}
@Override

View File

@@ -1,41 +0,0 @@
package com.willfp.eco.spigot;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.events.PacketEvent;
import com.willfp.eco.proxy.proxies.PacketPlayOutRecipeUpdateFixProxy;
import com.willfp.eco.util.plugin.AbstractEcoPlugin;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.lang.reflect.InvocationTargetException;
public class PacketPlayOutRecipeUpdateFix extends PacketAdapter {
/**
* Create new fixer for PacketPlayOutRecipeUpdate.
*
* @param plugin Plugin.
*/
public PacketPlayOutRecipeUpdateFix(@NotNull final AbstractEcoPlugin plugin) {
super(plugin, PacketType.Play.Server.RECIPE_UPDATE);
}
@Override
public void onPacketSending(@NotNull final PacketEvent event) {
PacketContainer packet = event.getPacket();
Player player = event.getPlayer();
Object otherPacket = InternalProxyUtils.getProxy(PacketPlayOutRecipeUpdateFixProxy.class).splitAndModifyPacket(packet.getHandle());
if (otherPacket != null) {
event.setCancelled(true);
PacketContainer container = PacketContainer.fromPacket(otherPacket);
try {
ProtocolLibrary.getProtocolManager().sendServerPacket(player, container);
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
}

View File

@@ -1,15 +0,0 @@
package com.willfp.eco.proxy.proxies;
import com.willfp.eco.util.proxy.AbstractProxy;
import org.jetbrains.annotations.NotNull;
public interface PacketPlayOutRecipeUpdateFixProxy extends AbstractProxy {
/**
* Split recipe update packet into smaller packets.
*
* @param object The packet.
* @return The extra packet for eco recipes.
*/
Object splitAndModifyPacket(@NotNull Object object);
}