Jump to content

Recommended Posts

Posted

Okay I now have this code:

 

//Zombie Soul
@SubscribeEvent
public void addEntityDrop24(LivingDropsEvent event) {
	if (event.entity instanceof EntityZombie) {
		if (event.source != null && event.source.getEntity() instanceof EntityPlayer) {
			EntityPlayer player = ((EntityPlayer) event.source.getEntity());
			if (player != null) {
				ItemStack holding =  player.inventory.getStackInSlot(player.inventory.currentItem);
				if (holding != null && holding.getItem() instanceof MASoulHarvester) {
					ItemStack itemstack = new ItemStack(MASouls.ZombieSoul, 1);
					event.drops.add(new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ, itemstack));
				}
			}
		}
	}
}

 

What this does is makes it so when a player kills a zombie using a specific tool it will drop a soul. How would I make this soul drop have a chance to drop? Like for example a 10% chance to drop a zombie soul when using the specific tool?

 

 

P.S. Massive thanks to Ernio for helping me with this current code. :)

Posted

Okay I now have this code:

 

//Zombie Soul
@SubscribeEvent
public void addEntityDrop24(LivingDropsEvent event) {
	if (event.entity instanceof EntityZombie) {
		if (event.source != null && event.source.getEntity() instanceof EntityPlayer) {
			EntityPlayer player = ((EntityPlayer) event.source.getEntity());
			if (player != null) {
				ItemStack holding =  player.inventory.getStackInSlot(player.inventory.currentItem);
				if (holding != null && holding.getItem() instanceof MASoulHarvester) {
					ItemStack itemstack = new ItemStack(MASouls.ZombieSoul, 1);
					event.drops.add(new EntityItem(event.entity.worldObj, event.entity.posX, event.entity.posY, event.entity.posZ, itemstack));
				}
			}
		}
	}
}

 

What this does is makes it so when a player kills a zombie using a specific tool it will drop a soul. How would I make this soul drop have a chance to drop? Like for example a 10% chance to drop a zombie soul when using the specific tool?

 

 

P.S. Massive thanks to Ernio for helping me with this current code. :)

Posted

This is stupid easy.

 

1) Pick any point in there where it's clear that the player has used the right tool and has slain the right creature, but before the drop is added

2) Get a random number

3) If(rand < threshold) { //add drop }

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

This is stupid easy.

 

1) Pick any point in there where it's clear that the player has used the right tool and has slain the right creature, but before the drop is added

2) Get a random number

3) If(rand < threshold) { //add drop }

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • https://mclo.gs/46Xf7Sq thanks
    • That seems to have fixed it, thank you!
    • I am having some issues starting an RLCraft server on a minimal install of Debian 12. I have Java installed and I'm able to start the vanilla Minecraft server jar no problem and people can join and play without any issues, as soon as I try to create a new directory with the Forge jar the initial install with the INSTALLER jar works when I use the java command with the --installServer flag, but as soon as I try to start the server using the forge jar that is NOT labelled with installer I get the following error: A problem occurred running the Server launcher.java.lang.reflect.InvocationTargetException         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)         at java.base/java.lang.reflect.Method.invoke(Method.java:569)         at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.run(ServerLaunchWrapper.java:70)         at net.minecraftforge.fml.relauncher.ServerLaunchWrapper.main(ServerLaunchWrapper.java:34) Caused by: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap')         at net.minecraft.launchwrapper.Launch.<init>(Launch.java:34)         at net.minecraft.launchwrapper.Launch.main(Launch.java:28)         ... 6 more   I have tried using newer versions of Java directly from Oracle as well. Has anybody been successful in starting and running a RLCraft server from the terminal on a Linux machine? I cannot figure out why it doesn't want to work but the vanilla jar works without issue. Thank you in advance!
    • This is my latest attempt :  public class ManaScreen extends Screen { Mana mana = new Mana(); boolean removeManaBar = false; ResourceLocation manaBar = ResourceLocation.fromNamespaceAndPath(RSGArmoury.MOD_ID, "/textures/block/spawnable_arena_wall.png"); public ManaScreen() { super(Component.literal("Mana")); } @Override protected void init() { super.init(); Minecraft.getInstance().setScreen(this); } @Override public boolean isPauseScreen() { return false; } @Override public void render(GuiGraphics pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) { pGuiGraphics.blit(manaBar, 10, -10, 0, 0, mana.getMana(), 10, mana.getMana(), 10); if (removeManaBar) { this.onClose(); return; } super.render(pGuiGraphics, pMouseX, pMouseY, pPartialTick); } public void addManaBar() { removeManaBar = false; Minecraft.getInstance().setScreen(new ManaScreen()); } public boolean removeManaBar() { return removeManaBar = true; } }
  • Topics

×
×
  • Create New...

Important Information

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