Thread: Better way of calling and removing ground items?

Results 1 to 9 of 9
  1. #1 Better way of calling and removing ground items? 
    Registered Member
    Join Date
    Feb 2014
    Posts
    62
    Thanks given
    15
    Thanks received
    5
    Rep Power
    25
    Currently i have a setup where a loot will cycle ontop of a chest and this is the current method im using... works 100% and effectively, just the code is not written effectively. Was thinking about enums but i got lost a few times. Could someone help me guide me in the correct direction?

    Code:
    	public static void loopLoot(Player c) {
    	CycleEventHandler.getSingleton().addEvent(c, new CycleEvent() {
    		@Override
    		public void execute(CycleEventContainer container5) {
    			i = i + 1;
    			int loot = Misc.random(29);
    			c.getPA().createPlayersStillGfx(385, c.absX, c.absY-1, 110, 0);
    			
    			if (loot >= 0 && loot < 4) {
    				
    			Server.itemHandler.removeGroundItem(c, 386, c.absX, c.absY-1, c.getHeight(), false);	
    			Server.itemHandler.createGroundItem(c, 386, c.absX, c.absY-1, c.getHeight(), 150);
    			Server.itemHandler.removeGroundItem(c, 990, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 995, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2435, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 3025, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2528, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 4151, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2491, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2497, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2503, c.absX, c.absY-1, c.getHeight(), false);
    			}
    			
    			if (loot >= 4 && loot < 9) {
    				
    			Server.itemHandler.removeGroundItem(c, 990, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.createGroundItem(c, 990, c.absX, c.absY-1, c.getHeight(), 3);
    			Server.itemHandler.removeGroundItem(c, 386, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 995, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2435, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 3025, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2528, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 4151, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2491, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2497, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2503, c.absX, c.absY-1, c.getHeight(), false);
    			}
    			
    			if (loot >= 9 && loot < 13) {
    				
    			Server.itemHandler.removeGroundItem(c, 995, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.createGroundItem(c, 995, c.absX, c.absY-1, c.getHeight(), 500000);
    			Server.itemHandler.removeGroundItem(c, 990, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 386, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2435, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 3025, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2528, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 4151, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2491, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2497, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2503, c.absX, c.absY-1, c.getHeight(), false);
    			}
    			
    			if (loot >= 13 && loot < 16) {
    				
    			Server.itemHandler.removeGroundItem(c, 2435, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.createGroundItem(c, 2435, c.absX, c.absY-1, c.getHeight(), 15);
    			Server.itemHandler.removeGroundItem(c, 990, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 995, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 386, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 3025, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2528, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 4151, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2491, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2497, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2503, c.absX, c.absY-1, c.getHeight(), false);
    			}
    			
    			if (loot >= 16 && loot < 19) {
    				
    			Server.itemHandler.removeGroundItem(c, 3025, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.createGroundItem(c, 3025, c.absX, c.absY-1, c.getHeight(), 10);
    			Server.itemHandler.removeGroundItem(c, 990, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 995, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2435, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 386, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2528, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 4151, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2491, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2497, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2503, c.absX, c.absY-1, c.getHeight(), false);
    			}
    			
    			if (loot >= 19 && loot < 23) {
    				
    			Server.itemHandler.removeGroundItem(c, 2528, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.createGroundItem(c, 2528, c.absX, c.absY-1, c.getHeight(), Misc.random(1) + 1);
    			Server.itemHandler.removeGroundItem(c, 990, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 995, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2435, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 3025, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 284, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 4151, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2491, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2497, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2503, c.absX, c.absY-1, c.getHeight(), false);
    			}
    			
    			if (loot == 23) {
    				
    			Server.itemHandler.removeGroundItem(c, 4151, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.createGroundItem(c, 4151, c.absX, c.absY-1, c.getHeight(), 1);
    			Server.itemHandler.removeGroundItem(c, 990, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 995, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2435, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 3025, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2528, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 386, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2491, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2497, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2503, c.absX, c.absY-1, c.getHeight(), false);
    			}
    			
    			if (loot >= 24 && loot < 26) {
    				
    			Server.itemHandler.removeGroundItem(c, 2491, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.createGroundItem(c, 2491, c.absX, c.absY-1, c.getHeight(), 1);
    			Server.itemHandler.removeGroundItem(c, 990, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 995, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2435, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 3025, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2528, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 4151, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 386, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2497, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2503, c.absX, c.absY-1, c.getHeight(), false);
    			}
    			
    			if (loot >= 26 && loot < 28) {
    				
    			Server.itemHandler.removeGroundItem(c, 2497, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.createGroundItem(c, 2497, c.absX, c.absY-1, c.getHeight(), 1);
    			Server.itemHandler.removeGroundItem(c, 990, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 995, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2435, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 3025, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2528, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 4151, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2491, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 386, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2503, c.absX, c.absY-1, c.getHeight(), false);
    			}
    			
    			if (loot >= 28 && loot < 30) {
    				
    			Server.itemHandler.removeGroundItem(c, 2503, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.createGroundItem(c, 2503, c.absX, c.absY-1, c.getHeight(), 1);
    			Server.itemHandler.removeGroundItem(c, 990, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 995, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2435, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 3025, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2528, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 4151, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2491, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 2497, c.absX, c.absY-1, c.getHeight(), false);
    			Server.itemHandler.removeGroundItem(c, 386, c.absX, c.absY-1, c.getHeight(), false);
    			}
    			
    			if (i == 6) {
    				stopAll(c);
    				container5.stop();
    			}
    
    		}
    		@Override
    		public void stop() {
    		}
    	}, 2);
    	}
    Reply With Quote  
     

  2. #2  
    Myre


    Join Date
    Apr 2012
    Age
    26
    Posts
    1,519
    Thanks given
    407
    Thanks received
    367
    Rep Power
    475
    By first glance the easiest way for them would be to make a removeGround Array and an addGround Array and run through it with a for loop as such:
    Code:
     for(int i = 0; i < removeGround.length; i++) {
         Server.itemHandler.removeGroundItem(c, i, c.absX, c.absY-1, c.getHeight(), false);
    }
    Then afterwards doing somewhat of the same for your ground item. Although there probably is a way better way then what I suggested.
    Reply With Quote  
     

  3. #3  
    Community Veteran


    Arch337's Avatar
    Join Date
    Sep 2008
    Posts
    2,950
    Thanks given
    210
    Thanks received
    349
    Rep Power
    1376
    Why are you removing items you have not even added?


    "A fail act is something you do regular, but a dumb act is something you can learn from"
    Spoiler for Problem?:
    Reply With Quote  
     

  4. #4  
    Registered Member
    Join Date
    Feb 2014
    Posts
    62
    Thanks given
    15
    Thanks received
    5
    Rep Power
    25
    Quote Originally Posted by arch337 View Post
    Why are you removing items you have not even added?
    Because it'll cycle 6 times, let's say i get 2 crystal keys then it goes to the money drop. it has to remove the c keys and add the money, so i make it remove all ground drops that the loot chest spawns. Then i also remove the same ground drop before adding it so in case it cycles the same drop twice in a row. A lot of debug went into this and it's written pretty sloppy but it works. Just trying to find an easier way to go about it that would make changing the loot fairly easy
    Reply With Quote  
     

  5. #5  
    Community Veteran


    Arch337's Avatar
    Join Date
    Sep 2008
    Posts
    2,950
    Thanks given
    210
    Thanks received
    349
    Rep Power
    1376
    Quote Originally Posted by bionicangel109 View Post
    Because it'll cycle 6 times, let's say i get 2 crystal keys then it goes to the money drop. it has to remove the c keys and add the money, so i make it remove all ground drops that the loot chest spawns. Then i also remove the same ground drop before adding it so in case it cycles the same drop twice in a row. A lot of debug went into this and it's written pretty sloppy but it works. Just trying to find an easier way to go about it that would make changing the loot fairly easy
    Feels quite unneccasary when you can just have it stored what item it should display and remove that specific item.


    "A fail act is something you do regular, but a dumb act is something you can learn from"
    Spoiler for Problem?:
    Reply With Quote  
     

  6. #6  
    Registered Member
    Join Date
    Feb 2014
    Posts
    62
    Thanks given
    15
    Thanks received
    5
    Rep Power
    25
    Quote Originally Posted by arch337 View Post
    Feels quite unneccasary when you can just have it stored what item it should display and remove that specific item.
    Is there a way to remvoe any ground item via coords?
    Reply With Quote  
     

  7. #7  
    Community Veteran


    Arch337's Avatar
    Join Date
    Sep 2008
    Posts
    2,950
    Thanks given
    210
    Thanks received
    349
    Rep Power
    1376
    Quote Originally Posted by bionicangel109 View Post
    Is there a way to remvoe any ground item via coords?
    You are already doing that.


    "A fail act is something you do regular, but a dumb act is something you can learn from"
    Spoiler for Problem?:
    Reply With Quote  
     

  8. #8  
    Registered Member
    Join Date
    Feb 2014
    Posts
    62
    Thanks given
    15
    Thanks received
    5
    Rep Power
    25
    Quote Originally Posted by arch337 View Post
    You are already doing that.

    I have to remove each and every one, is there a way to do it in a line of code?
    Reply With Quote  
     

  9. #9  
    Donator


    Join Date
    Jan 2010
    Age
    29
    Posts
    4,122
    Thanks given
    274
    Thanks received
    551
    Rep Power
    738
    Quote Originally Posted by bionicangel109 View Post
    I have to remove each and every one, is there a way to do it in a line of code?
    No you cannot do it with a single line of code, you would need to have an array of all the ground items in the player's region. then loop though all those ground items and skip em if its not the coords you looking for. else remove that ground item

    Something along these lines.
    Code:
    		player.getGroundItems().stream().forEach(groundItem -> {
    			if(!groundItem.getPosition().copy().equals(new Position(x, y, z)))
    				return;
    			
    			//Remove the ground item here
    		});
    Last edited by Nighel; 10-06-2018 at 07:19 PM.
    Reply With Quote  
     


Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. Replies: 1
    Last Post: 10-25-2012, 09:57 PM
  2. Replies: 0
    Last Post: 07-07-2012, 05:24 PM
  3. [any base] Better way of adding starter items.
    By thim slug in forum Snippets
    Replies: 3
    Last Post: 07-20-2011, 11:09 PM
  4. Better ways of handling item equiping?
    By Underoath in forum Help
    Replies: 2
    Last Post: 12-24-2009, 10:55 AM
  5. Better way of loading stackable items
    By Sean in forum Tutorials
    Replies: 19
    Last Post: 11-02-2008, 12:54 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •