За что я не люблю Custom NPCs

808
3
124
Java:
    private void server(DataInputStream dis, EntityPlayerMP player, EnumPacketType type) throws IOException {
       if (CustomNpcs.OpsOnly && !MinecraftServer.getServer().getConfigurationManager().getOps().contains(player.username.toLowerCase())) {
           MinecraftServer.getServer().logWarning(player.username + ": tried to use custom npcs without being an op");
       } else if (!type.hasPermission() || CustomNpcsPermissions.Instance.hasPermission(player.username, type.permission)) {
           EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player);
           if (!type.needsNpc || npc != null) {
               if (type == EnumPacketType.Delete) {
                   npc.delete();
                   NoppesUtilServer.deleteNpc(npc, player);
               } else {
                   int entity;
                   int list;
                   int datatype;
                   if (type == EnumPacketType.ChangeModel) {
                       npc.delete();
                       NoppesUtilServer.deleteNpc(npc, player);
                       entity = dis.readInt();
                       list = dis.readInt();
                       datatype = dis.readInt();
                       npc = (EntityNPCInterface) EntityList.createEntityFromNBT(CompressedStreamTools.read(dis), player.worldObj);
                       npc.startPos = new int[]{entity, list, datatype};
                       npc.setPosition((double) ((float) entity + 0.5F), npc.getStartYPos(), (double) ((float) datatype + 0.5F));
                       npc.setHealth(npc.getMaxHealth());
                       player.worldObj.spawnEntityInWorld(npc);
                       NoppesUtilServer.setEditingNpc(player, npc);
                   } else if (type == EnumPacketType.Bank) { //TODO: test
                       BankController.getInstance().loadBanks(dis);
                       BankController.getInstance().saveBanks();
                   } else if (type == EnumPacketType.BanksGet) {
                       NoppesUtilServer.sendBankDataAll(player);
                   } else {
                       Bank entity1;
                       if (type == EnumPacketType.BankGet) {
                           entity1 = BankController.getInstance().getBank(dis.readInt());
                           NoppesUtilServer.sendBank(player, entity1);
                       } else if (type == EnumPacketType.BankSave) {
                           entity1 = new Bank();
                           entity1.readEntityFromNBT(CompressedStreamTools.read(dis));
                           BankController.getInstance().saveBank(entity1);
                           NoppesUtilServer.sendBankDataAll(player);
                           NoppesUtilServer.sendBank(player, entity1);
                       } else if (type == EnumPacketType.BankRemove) {
                           BankController.getInstance().removeBank(dis.readInt());
                           NoppesUtilServer.sendBankDataAll(player);
                           NoppesUtilServer.sendBank(player, new Bank());
                       } else {
                           NBTTagCompound entity2;
                           if (type == EnumPacketType.SaveNpc) {
                               entity2 = CompressedStreamTools.read(dis);
                               npc.readFromNBT(entity2);
                               npc.reset();
                               NoppesUtilServer.sendDataToAll(npc, EnumPacketType.UpdateNpc, new Object[]{npc.copy()});
                           } else {
                               Entity entity3;
                               if (type == EnumPacketType.RemoteMainMenu) {
                                   entity3 = player.worldObj.getEntityByID(dis.readInt());
                                   if (entity3 == null || !(entity3 instanceof EntityNPCInterface)) {
                                       return;
                                   }

                                   NoppesUtilServer.sendOpenGui(player, EnumGuiType.MainMenuDisplay, (EntityNPCInterface) entity3);
                               } else if (type == EnumPacketType.RemoteDelete) {
                                   entity3 = player.worldObj.getEntityByID(dis.readInt());
                                   if (entity3 == null || !(entity3 instanceof EntityNPCInterface)) {
                                       return;
                                   }

                                   npc = (EntityNPCInterface) entity3;
                                   npc.delete();
                                   NoppesUtilServer.deleteNpc(npc, player);
                                   NoppesUtilServer.sendNearbyNpcs(player);
                               } else if (type == EnumPacketType.RemoteNpcsGet) {
                                   NoppesUtilServer.sendNearbyNpcs(player);
                                   NoppesUtilServer.sendData(player, EnumPacketType.ScrollSelected, new Object[]{CustomNpcs.FreezeNPCs ? "Unfreeze Npcs" : "Freeze Npcs"});
                               } else if (type == EnumPacketType.RemoteFreeze) {
                                   CustomNpcs.FreezeNPCs = !CustomNpcs.FreezeNPCs;
                                   NoppesUtilServer.sendData(player, EnumPacketType.ScrollSelected, new Object[]{CustomNpcs.FreezeNPCs ? "Unfreeze Npcs" : "Freeze Npcs"});
                               } else if (type == EnumPacketType.RemoteReset) {
                                   entity3 = player.worldObj.getEntityByID(dis.readInt());
                                   if (entity3 == null || !(entity3 instanceof EntityNPCInterface)) {
                                       return;
                                   }

                                   npc = (EntityNPCInterface) entity3;
                                   npc.reset();
                               } else if (type == EnumPacketType.RemoteTpToNpc) {
                                   entity3 = player.worldObj.getEntityByID(dis.readInt());
                                   if (entity3 == null || !(entity3 instanceof EntityNPCInterface)) {
                                       return;
                                   }

                                   npc = (EntityNPCInterface) entity3;
                                   player.playerNetServerHandler.setPlayerLocation(npc.posX, npc.posY, npc.posZ, 0.0F, 0.0F);
                               } else if (type == EnumPacketType.SpawnMob) {
                                   entity3 = EntityList.createEntityFromNBT(CompressedStreamTools.read(dis), player.worldObj);
                                   player.worldObj.spawnEntityInWorld(entity3);
                               } else if (type == EnumPacketType.SpawnNpc) {
                                   entity = dis.readInt();
                                   list = dis.readInt();
                                   datatype = dis.readInt();
                                   npc = (EntityNPCInterface) EntityList.createEntityFromNBT(CompressedStreamTools.read(dis), player.worldObj);
                                   npc.startPos = new int[]{entity, list, datatype};
                                   npc.setPosition((double) ((float) entity + 0.5F), npc.getStartYPos(), (double) ((float) datatype + 0.5F));
                                   npc.setHealth(npc.getMaxHealth());
                                   player.worldObj.spawnEntityInWorld(npc);
                                   NoppesUtilServer.setEditingNpc(player, npc);
                               } else if (type == EnumPacketType.MobSpawner) {
                                   NoppesUtilServer.createMobSpawner(dis, player);
                               } else if (type == EnumPacketType.Gui) {
                                   EnumGuiType entity5 = EnumGuiType.values()[dis.readInt()];
                                   list = dis.readInt();
                                   datatype = dis.readInt();
                                   int compound = dis.readInt();
                                   NoppesUtilServer.sendOpenGui(player, entity5, NoppesUtilServer.getEditingNpc(player), list, datatype, compound);
                               } else if (type == EnumPacketType.RecipesGet) {
                                   NoppesUtilServer.sendRecipeData(player, dis.readInt());
                               } else {
                                   RecipeCarpentry entity4;
                                   if (type == EnumPacketType.RecipeGet) {
                                       entity4 = RecipeController.instance.getRecipe(dis.readInt());
                                       NoppesUtilServer.setRecipeGui(player, entity4);
                                   } else if (type == EnumPacketType.RecipeRemove) {
                                       entity4 = RecipeController.instance.removeRecipe(dis.readInt());
                                       NoppesUtilServer.sendRecipeData(player, entity4.isGlobal ? 3 : 4);
                                       NoppesUtilServer.setRecipeGui(player, new RecipeCarpentry());
                                   } else if (type == EnumPacketType.RecipeSave) {
                                       entity4 = RecipeController.instance.saveRecipe(dis);
                                       NoppesUtilServer.sendRecipeData(player, entity4.isGlobal ? 3 : 4);
                                       NoppesUtilServer.setRecipeGui(player, entity4);
                                   } else if (type == EnumPacketType.DialogCategoriesGet) {
                                       NoppesUtilServer.sendDialogCategoryData(player);
                                   } else {
                                       DialogCategory entity6;
                                       if (type == EnumPacketType.DialogCategorySave) {
                                           entity6 = new DialogCategory();
                                           entity6.readNBT(CompressedStreamTools.read(dis));
                                           DialogController.instance.saveCategory(entity6);
                                           NoppesUtilServer.sendDialogCategoryData(player);
                                       } else if (type == EnumPacketType.DialogCategoryRemove) {
                                           DialogController.instance.removeCategory(dis);
                                           NoppesUtilServer.sendDialogCategoryData(player);
                                       } else if (type == EnumPacketType.DialogCategoryGet) {
                                           entity6 = (DialogCategory) DialogController.instance.categories.get(Integer.valueOf(dis.readInt()));
                                           if (entity6 != null) {
                                               NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{entity6.writeNBT(new NBTTagCompound())});
                                           }
                                       } else if (type == EnumPacketType.DialogsGet) {
                                           NoppesUtilServer.sendDialogData(player, (DialogCategory) DialogController.instance.categories.get(Integer.valueOf(dis.readInt())));
                                       } else {
                                           NBTTagCompound list2;
                                           Dialog entity8;
                                           if (type == EnumPacketType.DialogGet) {
                                               entity8 = (Dialog) DialogController.instance.dialogs.get(Integer.valueOf(dis.readInt()));
                                               if (entity8 != null) {
                                                   list2 = entity8.writeToNBT(new NBTTagCompound());
                                                   Quest datatype1 = (Quest) QuestController.instance.quests.get(Integer.valueOf(entity8.quest));
                                                   if (datatype1 != null) {
                                                       list2.setString("DialogQuestName", datatype1.title);
                                                   }

                                                   NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{list2});
                                               }
                                           } else if (type == EnumPacketType.DialogsGetFromDialog) {
                                               entity8 = (Dialog) DialogController.instance.dialogs.get(Integer.valueOf(dis.readInt()));
                                               if (entity8 == null) {
                                                   return;
                                               }

                                               NoppesUtilServer.sendDialogData(player, entity8.category);
                                           } else if (type == EnumPacketType.DialogSave) {
                                               entity = dis.readInt();
                                               Dialog list1 = new Dialog();
                                               list1.readNBT(CompressedStreamTools.read(dis));
                                               DialogController.instance.saveDialog(entity, list1);
                                               if (list1.category != null) {
                                                   NoppesUtilServer.sendDialogData(player, list1.category);
                                               }
                                           } else {
                                               Quest entity7;
                                               if (type == EnumPacketType.QuestOpenGui) {
                                                   entity7 = new Quest();
                                                   list = dis.readInt();
                                                   entity7.readNBT(CompressedStreamTools.read(dis));
                                                   NoppesUtilServer.setEditingQuest(player, entity7);
                                                   player.openGui(CustomNpcs.instance, list, player.worldObj, 0, 0, 0);
                                               } else if (type == EnumPacketType.DialogEdit) {
                                                   entity8 = (Dialog) DialogController.instance.dialogs.get(Integer.valueOf(dis.readInt()));
                                                   if (entity8 != null) {
                                                       NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{entity8.writeToNBT(new NBTTagCompound())});
                                                   }
                                               } else if (type == EnumPacketType.DialogRemove) {
                                                   entity8 = (Dialog) DialogController.instance.dialogs.get(Integer.valueOf(dis.readInt()));
                                                   if (entity8 != null && entity8.category != null) {
                                                       DialogController.instance.removeDialog(entity8);
                                                       NoppesUtilServer.sendDialogData(player, entity8.category);
                                                   }
                                               } else if (type == EnumPacketType.DialogNpcGet) {
                                                   NoppesUtilServer.sendNpcDialogs(player);
                                               } else if (type == EnumPacketType.DialogNpcSet) {
                                                   entity = dis.readInt();
                                                   list = dis.readInt();
                                                   DialogOption datatype3 = NoppesUtilServer.setNpcDialog(entity, list, player);
                                                   if (datatype3 != null && datatype3.hasDialog()) {
                                                       NBTTagCompound compound1 = datatype3.writeNBT();
                                                       compound1.setInteger("Position", entity);
                                                       NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{compound1});
                                                   }
                                               } else if (type == EnumPacketType.DialogNpcRemove) {
                                                   npc.dialogs.remove(Integer.valueOf(dis.readInt()));
                                               } else if (type == EnumPacketType.QuestGet) {
                                                   entity7 = (Quest) QuestController.instance.quests.get(Integer.valueOf(dis.readInt()));
                                                   if (entity7 != null) {
                                                       list2 = new NBTTagCompound();
                                                       if (entity7.hasNewQuest()) {
                                                           list2.setString("NextQuestTitle", entity7.getNextQuest().title);
                                                       }

                                                       NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{entity7.writeToNBT(list2)});
                                                   }
                                               } else {
                                                   QuestCategory entity9;
                                                   if (type == EnumPacketType.QuestCategoryGet) {
                                                       entity9 = (QuestCategory) QuestController.instance.categories.get(Integer.valueOf(dis.readInt()));
                                                       if (entity9 != null) {
                                                           NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{entity9.writeNBT(new NBTTagCompound())});
                                                       }
                                                   } else if (type == EnumPacketType.QuestCategorySave) {
                                                       entity9 = new QuestCategory();
                                                       entity9.readNBT(CompressedStreamTools.read(dis));
                                                       QuestController.instance.saveCategory(entity9);
                                                       NoppesUtilServer.sendQuestCategoryData(player);
                                                   } else if (type == EnumPacketType.QuestCategoriesGet) {
                                                       NoppesUtilServer.sendQuestCategoryData(player);
                                                   } else if (type == EnumPacketType.QuestCategoryRemove) {
                                                       QuestController.instance.removeCategory(dis);
                                                       NoppesUtilServer.sendQuestCategoryData(player);
                                                   } else if (type == EnumPacketType.QuestsGet) {
                                                       entity9 = (QuestCategory) QuestController.instance.categories.get(Integer.valueOf(dis.readInt()));
                                                       NoppesUtilServer.sendQuestData(player, entity9);
                                                   } else if (type == EnumPacketType.QuestsGetFromQuest) {
                                                       entity7 = (Quest) QuestController.instance.quests.get(Integer.valueOf(dis.readInt()));
                                                       if (entity7 == null) {
                                                           return;
                                                       }

                                                       NoppesUtilServer.sendQuestData(player, entity7.category);
                                                   } else if (type == EnumPacketType.QuestEdit) {
                                                       entity7 = (Quest) QuestController.instance.quests.get(Integer.valueOf(dis.readInt()));
                                                       if (entity7 != null) {
                                                           NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{entity7.writeToNBT(new NBTTagCompound())});
                                                       }
                                                   } else if (type == EnumPacketType.QuestSave) {
                                                       entity7 = QuestController.instance.saveQuest(dis);
                                                       if (entity7.category != null) {
                                                           NoppesUtilServer.sendQuestData(player, entity7.category);
                                                       }
                                                   } else if (type == EnumPacketType.QuestRemove) {
                                                       entity7 = (Quest) QuestController.instance.quests.get(Integer.valueOf(dis.readInt()));
                                                       if (entity7 != null) {
                                                           QuestController.instance.removeQuest(entity7);
                                                           NoppesUtilServer.sendQuestData(player, entity7.category);
                                                       }
                                                   } else if (type == EnumPacketType.TransportCategoriesGet) {
                                                       NoppesUtilServer.sendTransportCategoryData(player);
                                                   } else if (type == EnumPacketType.TransportCategorySave) {
                                                       TransportController.getInstance().saveCategory(dis);
                                                   } else if (type == EnumPacketType.TransportCategoryRemove) {
                                                       TransportController.getInstance().removeCategory(dis.readInt());
                                                       NoppesUtilServer.sendTransportCategoryData(player);
                                                   } else if (type == EnumPacketType.TransportRemove) {
                                                       entity = dis.readInt();
                                                       TransportController.getInstance().removeLocation(entity);
                                                       NoppesUtilServer.sendTransportData(player, entity);
                                                   } else if (type == EnumPacketType.TransportsGet) {
                                                       NoppesUtilServer.sendTransportData(player, dis.readInt());
                                                   } else if (type == EnumPacketType.TransportSave) {
                                                       entity = dis.readInt();
                                                       TransportLocation list3 = TransportController.getInstance().saveLocation(entity, dis, player, NoppesUtilServer.getEditingNpc(player));
                                                       if (list3 != null) {
                                                           if (npc.advanced.role != EnumRoleType.Transporter) {
                                                               return;
                                                           }

                                                           ((RoleTransporter) npc.roleInterface).setTransport(list3);
                                                           NoppesUtilServer.sendTransportData(player, entity);
                                                           NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{list3.writeNBT()});
                                                       }
                                                   } else if (type == EnumPacketType.SaveTileEntity) {
                                                       NoppesUtilServer.saveTileEntity(player, dis);
                                                   } else if (type == EnumPacketType.TransportGetLocation) {
                                                       if (npc.advanced.role != EnumRoleType.Transporter) {
                                                           return;
                                                       }

                                                       RoleTransporter entity11 = (RoleTransporter) npc.roleInterface;
                                                       if (entity11.hasTransport()) {
                                                           NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{entity11.getLocation().writeNBT()});
                                                           NoppesUtilServer.sendData(player, EnumPacketType.ScrollSelected, new Object[]{entity11.getLocation().category.title});
                                                       }
                                                   } else if (type == EnumPacketType.FactionsGet) {
                                                       NoppesUtilServer.sendFactionDataAll(player);
                                                   } else if (type == EnumPacketType.FactionSet) {
                                                       npc.setFaction(dis.readInt());
                                                   } else if (type == EnumPacketType.FactionSave) {
                                                       Faction entity10 = new Faction();
                                                       entity10.readNBT(CompressedStreamTools.read(dis));
                                                       FactionController.getInstance().saveFaction(entity10);
                                                       NoppesUtilServer.sendFactionDataAll(player);
                                                       list2 = new NBTTagCompound();
                                                       entity10.writeNBT(list2);
                                                       NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{list2});
                                                   } else if (type == EnumPacketType.FactionRemove) {
                                                       FactionController.getInstance().removeFaction(dis.readInt());
                                                       NoppesUtilServer.sendFactionDataAll(player);
                                                       entity2 = new NBTTagCompound();
                                                       (new Faction()).writeNBT(entity2);
                                                       NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{entity2});
                                                   } else if (type == EnumPacketType.FactionGet) {
                                                       entity2 = new NBTTagCompound();
                                                       Faction list4 = FactionController.getInstance().getFaction(dis.readInt());
                                                       list4.writeNBT(entity2);
                                                       NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{entity2});
                                                   } else if (type == EnumPacketType.PlayerDataGet) {
                                                       entity = dis.readInt();
                                                       if (EnumPlayerData.values().length <= entity) {
                                                           return;
                                                       }

                                                       String list5 = null;
                                                       EnumPlayerData datatype2 = EnumPlayerData.values()[entity];
                                                       if (datatype2 != EnumPlayerData.Players) {
                                                           list5 = dis.readUTF();
                                                       }

                                                       NoppesUtilServer.sendPlayerData(datatype2, player, list5);
                                                   } else if (type == EnumPacketType.PlayerDataRemove) {
                                                       NoppesUtilServer.removePlayerData(dis, player);
                                                   } else if (type == EnumPacketType.MainmenuDisplayGet) {
                                                       NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{npc.display.writeToNBT(new NBTTagCompound())});
                                                   } else if (type == EnumPacketType.MainmenuDisplaySave) {
                                                       npc.display.readToNBT(CompressedStreamTools.read(dis));
                                                       NoppesUtilServer.sendDataToAll(npc, EnumPacketType.UpdateNpc, new Object[]{npc.copy()});
                                                   } else if (type == EnumPacketType.MainmenuStatsGet) {
                                                       NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{npc.stats.writeToNBT(new NBTTagCompound())});
                                                   } else if (type == EnumPacketType.MainmenuStatsSave) {
                                                       npc.stats.readToNBT(CompressedStreamTools.read(dis));
                                                       NoppesUtilServer.sendDataToAll(npc, EnumPacketType.UpdateNpc, new Object[]{npc.copy()});
                                                   } else if (type == EnumPacketType.MainmenuInvGet) {
                                                       NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{npc.inventory.writeEntityToNBT(new NBTTagCompound())});
                                                   } else if (type == EnumPacketType.MainmenuInvSave) {
                                                       npc.inventory.readEntityFromNBT(CompressedStreamTools.read(dis));
                                                       NoppesUtilServer.sendDataToAll(npc, EnumPacketType.UpdateNpc, new Object[]{npc.copy()});
                                                   } else if (type == EnumPacketType.MainmenuAIGet) {
                                                       NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{npc.ai.writeToNBT(new NBTTagCompound())});
                                                   } else if (type == EnumPacketType.MainmenuAISave) {
                                                       npc.ai.readToNBT(CompressedStreamTools.read(dis));
                                                       NoppesUtilServer.sendDataToAll(npc, EnumPacketType.UpdateNpc, new Object[]{npc.copy()});
                                                   } else if (type == EnumPacketType.MainmenuAISave) {
                                                       npc.inventory.readEntityFromNBT(CompressedStreamTools.read(dis));
                                                       NoppesUtilServer.sendDataToAll(npc, EnumPacketType.UpdateNpc, new Object[]{npc.copy()});
                                                   } else if (type == EnumPacketType.MainmenuAdvancedGet) {
                                                       NoppesUtilServer.sendData(player, EnumPacketType.GuiData, new Object[]{npc.advanced.writeToNBT(new NBTTagCompound())});
                                                   } else if (type == EnumPacketType.MainmenuAdvancedSave) {
                                                       npc.advanced.readToNBT(CompressedStreamTools.read(dis));
                                                       NoppesUtilServer.sendDataToAll(npc, EnumPacketType.UpdateNpc, new Object[]{npc.copy()});
                                                   } else if (type == EnumPacketType.MerchantUpdate) {
                                                       entity3 = player.worldObj.getEntityByID(dis.readInt());
                                                       if (entity3 == null || !(entity3 instanceof EntityVillager)) {
                                                           return;
                                                       }

                                                       MerchantRecipeList list6 = MerchantRecipeList.readRecipiesFromStream(dis);
                                                       ((EntityVillager) entity3).setRecipes(list6);
                                                   }
                                               }
                                           }
                                       }
                                   }
                               }
                           }
                       }
                   }
               }

           }
       }
   }

Да, это один метод.
 
Последнее редактирование модератором:
329
13
Надеюсь, что вскоре я смогу предложить альтернативу.
 

CumingSoon

Местный стендапер
1,634
12
269
Дык много забугровских модов сделано похоже. Да, они неплохо работают и это главное. Юзвери не смотрят код
 
808
3
124
Про фпс ничего не знаю, а вот на баги кастома наши квестеры жалуются активно.
 
1,087
2
RedEnergy написал(а):
CoomingSoon написал(а):
Дык много забугровских модов сделано похоже. Да, они неплохо работают и это главное. Юзвери не смотрят код
Однако потом все жалуются на фпс ¯\_(ツ)_/¯
Вы там, что с планшета играете :? Я бы не сказал, что из-за него лагает.
 
643
6
14
Порадовало.
Код:
 }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

            }
        }
    }
 
GloomyFolken, привет!
Скажи, а ты не любишь cNPCs потому, что тебе, несмотря на эту неприязнь, приходится таки в нём ковыряться и что-то дописывать?)
Если да, то ты не мог бы мне подсказать как скомпилировать этот мод после правки?
 
Сверху