Jump to content
  • Home
  • Files
  • Docs
Topics
  • All Content

  • This Topic
  • This Forum

  • Advanced Search
  • Existing user? Sign In  

    Sign In



    • Not recommended on shared computers


    • Forgot your password?

  • Sign Up
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • Item that has to disappears over time
The update for 1.13 is being worked on - please be patient. (Updated 02/19/19)
1.13 Update Notes for Mod Creators
Sign in to follow this  
Followers 2
Bram_Borch

Item that has to disappears over time

Started by Bram_Borch, February 7

7 posts in this topic

Bram_Borch    0

Bram_Borch

Bram_Borch    0

  • Tree Puncher
  • Bram_Borch
  • Members
  • 0
  • 3 posts
  • Report post
Posted February 7 (edited)

Hello all,

 

I've been trying to make an item disappear for a while after a certain amount of time, this is kind of a bit of luck. It's still a bit "random" when it disappears.

 

This is my goal.

 

If I hold the item then it should disappear after 10 seconds and if the item is thrown on the floor the item should disappear after 10 seconds, so I hold the item for 3 seconds and throw it on the ground it should disappear after 7 seconds.

 

this is what I have until now only it works partly and no more.

p.s sorry if it is messy I am a bit new with coding.

 

public class OganessonBase extends Item  implements IHasModel 
{
	public int maxcount = 2;
	public int count;
	public int maxcountground = 0;
	public int countground;
	
	public OganessonBase(String name) 
	{
		setUnlocalizedName(name);
		setRegistryName(name);
		setCreativeTab(AtomicPieces.ATOMSELEMENTSTAB);
		ItemInit.ITEMS.add(this);
	}

	@Override
	public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) 
	{
		if(stack.getItem() == ItemInit.OGANESSON_ELEMENT) 
		{
			effectPlayer(entityIn, Potion.getPotionById(19), 0);
			if(count == maxcount) 
			{
				stack.shrink(1);
				entityIn.dropItem(ItemInit.TEST_TWO, 1);
				count = 0;
			}
			
		super.onUpdate(stack, worldIn, entityIn, itemSlot, isSelected);
	}
	}
		private void effectPlayer(Entity entityIn, Potion potion, int amplifier) 
		{
			EntityLivingBase player = (EntityLivingBase) entityIn;
			if (player.getActivePotionEffect(potion)== null || player.getActivePotionEffect(potion).getDuration() <=0)
			{
				player.addPotionEffect(new PotionEffect(potion.getPotionById(19), 140, amplifier, true, true));
			}
			if (player.getActivePotionEffect(potion)== null || player.getActivePotionEffect(potion).getDuration() ==10)
			{
				player.attackEntityFrom(DamageSource.DROWN, 6);
			}
			if (player.getActivePotionEffect(potion)== null || player.getActivePotionEffect(potion).getDuration() ==1)
			{
				count++;
			}
			
			}
		
		@Override
		public boolean onEntityItemUpdate(EntityItem entityItem) {
			countground++;
			
			if(countground == maxcountground)
			{
				entityItem.setDead();
				entityItem.dropItem(ItemInit.ITEM_TWO, 1);
				countground = 0;
			}
			return super.onEntityItemUpdate(entityItem);
		}
		
	@Override
	public void registerModels() 
	{
		AtomicPieces.proxy.registerItemRenderer(this, 0, "inventory");

	}

}


just to add some background if you do not quite understand what I want to go for.

The mod is based on atoms and then also the part of the "decay time" and that is what I hope to do with this topic.
thank you in advance.

Edited February 7 by Bram_Borch

Share this post


Link to post
Share on other sites

Cadiboo    145

Cadiboo

Cadiboo    145

  • World Shaper
  • Cadiboo
  • Members
  • 145
  • 2118 posts
  • Report post
Posted February 8

What: Not using an interface to register models

Why: This interface (commonly called IHasModel) is unnecessary. All items need models and nothing about model registration requires private or protected data.

Consequences: This interface makes you write 4 lines of code in each class and 2+ lines of code in your registry event, when 1 or 2 lines of code could accomplish the exact same thing. It also leads to weird bugs when you forget to make your object implement the interface.

How: Simply register each model in the registry event (1 line of code for each model) or write a loop that does it for you (1 or 2 lines depending on the implementation). For example:

Write out registerModel(item, meta, variant) for each item and variant or write a loop like this

for (Item item : allModItemsAndItemBlocks)
	    registerModel(item, meta, variant);

A list of all your items can be acquired in many ways, such as looping over registries and checking domain, keeping your own list, looping over registries and using an instanceof check etc.

Share this post


Link to post
Share on other sites

Cadiboo    145

Cadiboo

Cadiboo    145

  • World Shaper
  • Cadiboo
  • Members
  • 145
  • 2118 posts
  • Report post
Posted February 8

You need to use Capabilities on the ItemStack. Items are singletons (there is only one of each) and itemstacks are the actual things that are in your inventory.

Share this post


Link to post
Share on other sites

Bram_Borch    0

Bram_Borch

Bram_Borch    0

  • Tree Puncher
  • Bram_Borch
  • Members
  • 0
  • 3 posts
  • Report post
Posted February 8

Cadiboo thnx for your feedback i will change it i post my new code if i am done

Share this post


Link to post
Share on other sites

Cadiboo    145

Cadiboo

Cadiboo    145

  • World Shaper
  • Cadiboo
  • Members
  • 145
  • 2118 posts
  • Report post
Posted February 8

If you could post your code as a GitHub repository that would be best

Share this post


Link to post
Share on other sites

Bram_Borch    0

Bram_Borch

Bram_Borch    0

  • Tree Puncher
  • Bram_Borch
  • Members
  • 0
  • 3 posts
  • Report post
Posted February 11

i did try to upload it to GitHub but it just wont upload it i never worked whit github before so idk what i did wrong i watched 3 videos how to upload stuf but it just won't upload anything….

Share this post


Link to post
Share on other sites

Cadiboo    145

Cadiboo

Cadiboo    145

  • World Shaper
  • Cadiboo
  • Members
  • 145
  • 2118 posts
  • Report post
Posted February 11

1) download GitHub desktop or another git client

2) create a repository in the root directory of your mod (the one with /run/, /src/ build.gradle in it)

3) click the publish the repository to github button

4) post the link

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  
Followers 2
Go To Topic Listing Modder Support

  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • diesieben07
      [1.12.2] Syncing TE form GUI

      By diesieben07 · Posted 7 minutes ago

      This int is completely irrelevant for modded tile entities.   @ZigTheHedge: Your sendUpdates method is stupid, don't blindly call random methods without knowing what they do. Call World#notifyBlockUpdate on the server to send the update packet to the client. Call World#notifyBlockUpdate on the client to re-render the block. If your update packet needs the block to be re-rendered you need to call this from onDataPacket. You must call TileEntity#markDirty when any data that's serialized to NBT (writeToNbt) has changed. This is not related to networking.
    • DavidM
      [1.12] Making a TESR less laggy

      By DavidM · Posted 15 minutes ago

      If you must render 125 items every frame, them I'm afraid there is not another method that will be much more efficient AFAIK. FastTESR will boost your TESR's performance, but only to a certain extent.
    • RoyalReject
      [1.12.2] Syncing TE form GUI

      By RoyalReject · Posted 17 minutes ago

      @Override public SPacketUpdateTileEntity getUpdatePacket() { ModMain.logger.warning("getUpdatePacket()"); NBTTagCompound nbtTag = new NBTTagCompound(); this.writeToNBT(nbtTag); return new SPacketUpdateTileEntity(getPos(), 1, nbtTag); } Try setting return statement to return new SPacketUpdateTileEntity(this.pos, 3, this.getUpdateTag()); or just change 1 to 3
    • diesieben07
      Crash report

      By diesieben07 · Posted 18 minutes ago

      1.7.10 is no longer supported on this forum due to it's age. Update to a modern version of Minecraft to receive support.
    • diesieben07
      [1.13.2] Example mod fails to launch

      By diesieben07 · Posted 47 minutes ago

      Why are you running gradlew eclipse when you are using Intellij? Importing a 1.13.2 MDK into IntelliJ is dead simple: Download and extract MDK. File > Open > build.gradle > "Open as Project". Leave defaults and wait for import. Double-Ctrl ("Run anything"), type "gradle genIntellijRuns" and run it. Fix the run configurations (select main module in "use classpath of module"). This works fine for me and it also loads the example mod. No modification of any mods.toml required.
  • Topics

    • ZigTheHedge
      2
      [1.12.2] Syncing TE form GUI

      By ZigTheHedge
      Started 7 hours ago

    • BeardlessBrady
      3
      [1.12] Making a TESR less laggy

      By BeardlessBrady
      Started 7 hours ago

    • Manfro
      1
      Crash report

      By Manfro
      Started 8 hours ago

    • DoctorLOGiQ
      6
      [1.13.2] Example mod fails to launch

      By DoctorLOGiQ
      Started Monday at 01:23 PM

    • _FruitSensei
      1
      Having Troubling Locating The Exact Issue With Hosting A Server

      By _FruitSensei
      Started 1 hour ago

  • Who's Online (See full list)

    • DavidM
    • Mango106
    • adusut
    • Laike_Endaril
    • TheRam
    • diesieben07
    • RoyalReject
    • nyuppo
    • Trooprm32
    • HeberonYT
    • ButterAleks
    • DutchM
    • Terrails
    • Marcosch1337
    • TheFox801
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • Item that has to disappears over time
  • Theme
  • Contact Us

Copyright © 2017 ForgeDevelopment LLC Powered by Invision Community