Jump to content

Recommended Posts

Posted

Hey everyone,

 

I created a block which can modify items. I have one input, one output an 4 modifier slots. When all the conditions are given I delete all slots and set the output slot to my output item with my modified values. The modified values are read correct(I send them to chat for debug) but the item doesnt get the values.

 

I think the problem is in the

onCreated

method of my item. It is created before the NBT values are set.

 

My Files:

 

EditedFrame:

 

package de.gero.skybees.items;

import java.util.List;

import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import de.gero.skybees.api.IEditableHiveFrame;
import forestry.api.apiculture.IBee;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IHiveFrame;

public class EditedHiveFrame extends Item implements IHiveFrame, IEditableHiveFrame {

private float floweringModifer;
private float lifespanModifer;
private float mutationModifier;
private float territoryModifer;
private float productionModifer;

public EditedHiveFrame(int id) {
	super(id);
	setMaxStackSize(1);
	setMaxDamage(500);
}

@Override
public String getItemDisplayName(ItemStack stack) {
	return "Custom Hive Frame";
}

@Override
public String getUnlocalizedName() {
	return "item.skyCustomFrame.name";
}

@Override
public void onCreated(ItemStack itemStack, World world, EntityPlayer player) {
	NBTTagCompound tag = itemStack.getTagCompound();
	this.floweringModifer = tag.getFloat("floweringModifer");
	this.lifespanModifer = tag.getFloat("lifespanModifer");
	this.mutationModifier = tag.getFloat("mutationModifier");
	this.territoryModifer = tag.getFloat("territoryModifer");
	this.productionModifer = tag.getFloat("productionModifer");
}

@Override
public float getFloweringModifier(IBeeGenome beeGenome, float currentModifier) {
	return this.floweringModifer;
}

@Override
public float getGeneticDecay(IBeeGenome beeGenome, float currentModifier) {
	return 1.0F;
}

@Override
public float getLifespanModifier(IBeeGenome beeGenome1, IBeeGenome beeGenome2, float currentModifier) {
	return this.lifespanModifer;
}

@Override
public float getMutationModifier(IBeeGenome beeGenome1, IBeeGenome beeGenome2, float currentModifier) {
	return this.mutationModifier;
}

@Override
public float getProductionModifier(IBeeGenome beeGenome, float currentModifier) {
	return currentModifier < 16.0F ? this.productionModifer : 1.0F;
}

@Override
public float getTerritoryModifier(IBeeGenome beeGenome, float currentModifier) {
	return this.territoryModifer;
}

@Override
public boolean isHellish() {
	return false;
}

@Override
public boolean isSealed() {
	return false;
}

@Override
public boolean isSelfLighted() {
	return false;
}

@Override
public boolean isSunlightSimulated() {
	return false;
}

@Override
public ItemStack frameUsed(IBeeHousing housing, ItemStack frame, IBee queen, int wear) {
	frame.setItemDamage(frame.getItemDamage() + wear);
	if(frame.getItemDamage() >= frame.getMaxDamage()) {
		return null;
	}
	return frame;
}

@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister iconRegister) {
	this.itemIcon = iconRegister.registerIcon("skybees:textures/item/frameCustom.png");
}

@Override
@SideOnly(Side.CLIENT)
public EnumRarity getRarity(ItemStack par1ItemStack){
	return EnumRarity.uncommon;
}

@Override
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {
	par3List.add("M: " + this.mutationModifier + "    F: " + this.floweringModifer);
	par3List.add("P: " + this.productionModifer + "    T: " + this.territoryModifer);
	par3List.add("L: " + this.lifespanModifer);
}
}


 

 

The craft() method of my tilentity

 

 

public void craft(){
	float flowering = 0;
	float lifespan = 0;
	float mutation = 0;
	float production = 0;
	float territory = 0;

	for(int i = 0; i < 4; i++){
		if(items[i] != null){
			if(items[i].getDisplayName().contains("Flowering")){
				for(int y = 0; y < items[i].stackSize; y++){
					flowering++;
				}
			} else if(items[i].getDisplayName().contains("Lifespan")){
				for(int y = 0; y < items[i].stackSize; y++){
					lifespan++;
				}
			} else if(items[i].getDisplayName().contains("Mutation")){
				for(int y = 0; y < items[i].stackSize; y++){
					mutation++;
				}
			} else if(items[i].getDisplayName().contains("Production")){
				for(int y = 0; y < items[i].stackSize; y++){
					production++;
				}
			} else if(items[i].getDisplayName().contains("Territory")){
				for(int y = 0; y < items[i].stackSize; y++){
					territory++;
				}
			}
		}
	}

//All values got detected correctly here
	MinecraftServer.getServer().getConfigurationManager().sendChatMsg(ChatMessageComponent.createFromText("" + flowering + lifespan + mutation + production + territory));

	ItemStack output = new ItemStack(Skybees.editedFrame);

	NBTTagCompound tag = output.getTagCompound();
	if (tag == null) {
		tag = new NBTTagCompound();
		output.setTagCompound(tag);
	}
	tag.setFloat("floweringModifer", flowering);
	tag.setFloat("lifespanModifer", lifespan);
	tag.setFloat("mutationModifier", mutation);
	tag.setFloat("territoryModifer", production);
	tag.setFloat("productionModifer", territory);

	setInventorySlotContents(5, output);

	mod = 0;
	setInventorySlotContents(0, null);
}

 

 

Thank you for helping an have a nice day!

Posted

Thanks for your fast reply!

 

How would I pass on the values to my item when I spawn it in? This method I am using worked till now...

 

Thanks and have nice day!

Posted

Isnt that what I did here?

 

ItemStack output = new ItemStack(Skybees.editedFrame);

	NBTTagCompound tag = output.getTagCompound();
	if (tag == null) {
		tag = new NBTTagCompound();
		output.setTagCompound(tag);
	}
	tag.setFloat("floweringModifer", flowering);
	tag.setFloat("lifespanModifer", lifespan);
	tag.setFloat("mutationModifier", mutation);
	tag.setFloat("territoryModifer", production);
	tag.setFloat("productionModifer", territory);

Posted

You really are using superfluous loops for no good reason here.

for(int y = 0; y < items[ i ].stackSize; y++){
flowering++;
}

flowering += items[ i ].stackSize;

does the same thing with one instruction.

 

Posted

@diesieben07

 

When i Spawn in my Item it does not have the upgrades. Now I am searching for a way to set the values which are passed via the NBT-Data

 

I hope this was understandable

 

Have a nice day!

Posted

My machine can customize Hive Frames... Depending on which Modifier I put in the Modifier slots it sets the value for production to the number of modifiers. In that "craft" process all slots in the inventory get wiped and I create a new Item (dfferent from the ones I deleted) and try to set the values I got via nbt, so that that Item is now in the output slots with the values set (visible via tooltip).

 

My problem is that the Item I create (by doing ItemStack output = new ItemStack(Skybees.editedFrame);) does not take the nbt data I pass and does not show them in the tooltip.

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I made a custom pack, but i can't even load it, it just crashes at launcher, giving me Error 1. I looked at the log, and it just doesn't seem to tell me what the issue actually is. Here's the report.   Edit- Trying to get report, but copy paste being weird [22:59:59] [main/ERROR]:Error replacing mixin module source java.lang.ClassNotFoundException: cpw.mods.cl.JarModuleFinder$JarModuleReference at java.base/jdk.internal.loader.Loader.loadClass(Loader.java:571) ~[?:?] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?] at cpw.mods.securejarhandler/net.minecraftforge.securemodules.SecureModuleClassLoader.loadClass(SecureModuleClassLoader.java:429) ~[securemodules-2.2.21.jar!/:?] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?] at java.base/java.lang.Class.forName0(Native Method) ~[?:?] at java.base/java.lang.Class.forName(Class.java:421) ~[?:?] at java.base/java.lang.Class.forName(Class.java:412) ~[?:?] at LAYER SERVICE/[email protected]+1.20.1/io.github.steelwoolmc.mixintransmog.InstrumentationHack.inject(InstrumentationHack.java:46) ~[?:?] at LAYER SERVICE/[email protected]+1.20.1/io.github.steelwoolmc.mixintransmog.MixinTransformationService.<init>(MixinTransformationService.java:59) ~[?:?] at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) [?:?] at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502) [?:?] at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) [?:?] at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:789) [?:?] at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:729) [?:?] at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1403) [?:?] at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.TransformationServicesHandler.discoverServices(TransformationServicesHandler.java:156) [modlauncher-10.2.4.jar!/:?] at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.run(Launcher.java:84) [modlauncher-10.2.4.jar!/:?] at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.main(Launcher.java:75) [modlauncher-10.2.4.jar!/:?] at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.BootstrapEntry.main(BootstrapEntry.java:17) [modlauncher-10.2.4.jar!/:?] at [email protected]/net.minecraftforge.bootstrap.Bootstrap.moduleMain(Bootstrap.java:188) [bootstrap-2.1.8.jar!/:?] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[?:?] at net.minecraftforge.bootstrap.Bootstrap.bootstrapMain(Bootstrap.java:133) [bootstrap-2.1.8.jar:2.1.8] at net.minecraftforge.bootstrap.Bootstrap.start(Bootstrap.java:53) [bootstrap-2.1.8.jar:2.1.8] at net.minecraftforge.bootstrap.ForgeBootstrap.main(ForgeBootstrap.java:19) [bootstrap-2.1.8.jar:2.1.8] [22:59:59] [main/FATAL]:Encountered serious error loading transformation service, expect problems java.util.ServiceConfigurationError: cpw.mods.modlauncher.api.ITransformationService: Provider io.github.steelwoolmc.mixintransmog.MixinTransformationService could not be instantiated at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:586) ~[?:?] at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.TransformationServicesHandler.discoverServices(TransformationServicesHandler.java:156) [modlauncher-10.2.4.jar!/:?] at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.run(Launcher.java:84) [modlauncher-10.2.4.jar!/:?] at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.main(Launcher.java:75) [modlauncher-10.2.4.jar!/:?] at SECURE-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.BootstrapEntry.main(BootstrapEntry.java:17) [modlauncher-10.2.4.jar!/:?] at [email protected]/net.minecraftforge.bootstrap.Bootstrap.moduleMain(Bootstrap.java:188) [bootstrap-2.1.8.jar!/:?] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[?:?] at net.minecraftforge.bootstrap.Bootstrap.bootstrapMain(Bootstrap.java:133) [bootstrap-2.1.8.jar:2.1.8] at net.minecraftforge.bootstrap.Bootstrap.start(Bootstrap.java:53) [bootstrap-2.1.8.jar:2.1.8] at net.minecraftforge.bootstrap.ForgeBootstrap.main(ForgeBootstrap.java:19) [bootstrap-2.1.8.jar:2.1.8] Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: cpw.mods.cl.JarModuleFinder$JarModuleReference at LAYER SERVICE/[email protected]+1.20.1/io.github.steelwoolmc.mixintransmog.MixinTransformationService.<init>(MixinTransformationService.java:62) ~[?:?] at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[?:?] at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502) ~[?:?] at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) ~[?:?] at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:789) ~[?:?] ... 12 more Caused by: java.lang.ClassNotFoundException: cpw.mods.cl.JarModuleFinder$JarModuleReference at java.base/jdk.internal.loader.Loader.loadClass(Loader.java:571) ~[?:?] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?] at cpw.mods.securejarhandler/net.minecraftforge.securemodules.SecureModuleClassLoader.loadClass(SecureModuleClassLoader.java:429) ~[securemodules-2.2.21.jar!/:?] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?] at java.base/java.lang.Class.forName0(Native Method) ~[?:?] at java.base/java.lang.Class.forName(Class.java:421) ~[?:?] at java.base/java.lang.Class.forName(Class.java:412) ~[?:?] at LAYER SERVICE/[email protected]+1.20.1/io.github.steelwoolmc.mixintransmog.InstrumentationHack.inject(InstrumentationHack.java:46) ~[?:?] at LAYER SERVICE/[email protected]+1.20.1/io.github.steelwoolmc.mixintransmog.MixinTransformationService.<init>(MixinTransformationService.java:59) ~[?:?] at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[?:?] at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502) ~[?:?] at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) ~[?:?] at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:789) ~[?:?] ... 12 more [22:59:59] [main/INFO]:SpongePowered MIXIN Subsystem Version=0.8.7 Source=jar:file:///C:/Users/mxz/curseforge/minecraft/Install/libraries/org/spongepowered/mixin/0.8.7/mixin-0.8.7.jar!/ Service=ModLauncher Env=CLIENT at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:813) ~[?:?] at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:729) ~[?:?] at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1403) ~[?:?]
    • here is a different world https://ibb.co/Q3VWj9gW and the server console https://ibb.co/dwQf0qrR
    • Mods: Securitycraft Appleskin Architectury betterarchiology betterburning betterchunkloading borderlesswindow botarium cebonsapi cebonsbetterbeacons charmofundying chunkloaders clothconfig cofhcore connectivity coroutil create enchant industry create misc and things create create confectionery create new age forge create stuff additions creative core cupboard curios custom player models drinkbeer drippy loading screen durability tooltip easyanvils embeddium enderitemod entityculling fancymenufarmers delight ferrite core flux networks framed blocks fusion gecolib gravestone mod iceberg inventory profiles next jade jade addons jei journeymap jer konkrete kotlin libIPN lootintegrations lootr melody mes mns mss mvs nethersdelight nullscape nyfsquiver puzzleslib recipeessentials It seems the problem is with mods that place features as different worlds give different errors after the start part  
    • I get this error when joining my 1.20.1 forge 47.4.0 / also tested on 47.3.39. It then shows a long list of mods and errors (see image). No crash occurs. https://cdn.discordapp.com/attachments/324493105313349644/1354950353665265824/image.png?ex=67e7275a&is=67e5d5da&hm=4006cb062aa548c3aff108082bf4ea5e44d6ead972da3b23102b74ea95f54c7c&
    • in fact, after removing the lootr, the situation only got worse
  • Topics

×
×
  • Create New...

Important Information

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