Jump to content

SuprOrel

Members
  • Posts

    2
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by SuprOrel

  1. i figured making pixelmon sidemods would be a relatively popular search so atta give it its own tutorial and since its really not much effort lets go for it. create a folder in eclipse package explorer named "libs" (you must name it libs otherwise you would'nt be able to build your mod via gradlew) in eclipse package explorer and place your mod of choice's jar file inside like you can see with pixelmon right here. then right click your mod of choice, goto build path then add to build path so your mod of choice turns to look like so now in main.java add a dependency under @Mod example: with pixelmon in " dependencies = "required-after:pixelmon" " being your mod of choice's mod id at this point you're pretty much done, now you can import from the mod.
  2. So im making a sidemod for pixelmon and i need to ban some bag items that will otherwise pose a problem. My approach has been confiscating them like this. package suprorel.nuzlocke; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Queue; import com.pixelmonmod.pixelmon.api.events.BattleStartedEvent; import com.pixelmonmod.pixelmon.api.events.battles.BattleEndEvent; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.util.text.TextComponentString; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; public class BagBans { public List<String> bans; private Map<EntityPlayerMP, Queue> conspicated; public BagBans(List<String> bans) { this.bans = bans; conspicated = new HashMap<EntityPlayerMP, Queue>(); } @SubscribeEvent public void onEnd(BattleEndEvent event) { ArrayList<EntityPlayerMP> arr = event.getPlayers(); for(int i = 0; i < arr.size(); i++) { EntityPlayerMP player = arr.get(i); Queue cons = conspicated.get(player); if(cons != null) { while(!cons.isEmpty()) { ItemStack con = (ItemStack) cons.poll(); player.inventory.addItemStackToInventory(con); } } } } @SubscribeEvent public void onStart(BattleStartedEvent event) { EntityLivingBase participant = event.participant1[0].getEntity(); if(participant instanceof EntityPlayerMP) { confiscate((EntityPlayerMP)participant); } } private void confiscate(EntityPlayerMP player) { int size = player.inventory.getSizeInventory(); for(int i = 0; i < size; i++) { ItemStack item = player.inventory.getStackInSlot(i); if(item != null) { String name = item.getItem().getRegistryName().getResourcePath(); for(int x = 0; x < bans.size(); x++) { String ban = bans.get(x); if(name.equals(ban)) { Queue cons = conspicated.get(player); if(cons == null) { cons = new LinkedList(); conspicated.put(player, cons); } cons.add(item); player.inventory.deleteStack(item); break; } } } } } } Problom is when i delete the stack it dosent sync in with other threads and i dont really know what to do. Maybe i need to send an event to the EVENT_BUS? i can calll player.inventory.notify which fixes it but it also breaks out of my code. Could there maybe be a way to unregister the items from the bag menu instead? if youre wondering why i want to do something quite specific i made a nuzlocke mod and im just trying to ban the revive items
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.