Skip to content

Instantly share code, notes, and snippets.

View Lanse505's full-sized avatar

Simon Stålnäbb Lanse505

  • Dalarna, Sweden
  • 20:59 (UTC +02:00)
View GitHub Profile
package com.teamacronymcoders.essence.capabilities.itemstack;
import com.teamacronymcoders.essence.api.holder.ModifierHolder;
import com.teamacronymcoders.essence.api.holder.ModifierInstance;
import com.teamacronymcoders.essence.api.modified.IModified;
import com.teamacronymcoders.essence.api.modifier.core.Modifier;
import com.teamacronymcoders.essence.utils.helpers.EssenceItemstackModifierHelpers;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.ListNBT;
import net.minecraftforge.common.util.Constants;
Hey guys, so I've got a question for the modders/forge people in chat :P
So I decided to look into adding my own Stat (Statistic) to the game for when you "Stasis" blocks/TE's using my wrench.
While doing this I noticed there isn't a really "clean" way of doing it since there isn't a proper "Stat" ForgeRegistry, and all the methods for Stats are private, and such.
I did some code digging into other mods trying to find how others were doing it, and the best approach I could find was not exactly "clean" by forge standards.
I ended-up doing this:
```java
public class EssenceStats {
public static final EssenceStats INSTANCE = new EssenceStats();
package com.teamacronymcoders.essence.items.misc.wrench;
import com.teamacronymcoders.essence.Essence;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
package com.teamacronymcoders.essence.serializable.loot;
import com.google.gson.JsonObject;
import com.teamacronymcoders.essence.utils.config.EssenceModifierConfig;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tags.ItemTags;
import net.minecraft.tags.Tag;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.storage.loot.LootContext;
public static JsonElement serializeEffectInstance(EffectInstance instance) {
final JsonObject object = new JsonObject();
object.addProperty("effect", instance.getPotion().getRegistryName().toString());
object.addProperty("duration", instance.getDuration());
final JsonObject propertiesElement = new JsonObject();
if (instance.getAmplifier() > 0) {
propertiesElement.addProperty("amplifier", instance.getAmplifier());
propertiesElement.addProperty("ambient", instance.isAmbient());
propertiesElement.addProperty("showParticles", instance.doesShowParticles());
propertiesElement.addProperty("showIcon", instance.isShowIcon());
{
"inputList": [
{
"tag": "minecraft:wool"
},
{
"tag": "minecraft:anvil"
},
{
"tag": "minecraft:arrows"
{
"from": "minecraft:coarse_dirt",
"to": {
"block": "minecraft:farmland",
"properties": {
"moisture": "0"
}
},
"type": "essence:hoe_tilling"
}
---- Minecraft Crash Report ----
// Uh... Did I do that?
Time: 2020-03-20 19:44
Description: Exception in server tick loop
java.lang.StackOverflowError: Exception in server tick loop
at java.util.stream.StreamSupport.intStream(StreamSupport.java:139) ~[?:1.8.0_201] {}
at java.util.stream.IntStream.range(IntStream.java:798) ~[?:1.8.0_201] {}
at com.google.common.collect.CollectSpliterators.indexed(CollectSpliterators.java:94) ~[guava-21.0.jar:?] {}
package com.teamacronymcoders.essence.api.holder;
import com.teamacronymcoders.essence.api.modifier.core.CoreModifier;
import com.teamacronymcoders.essence.api.tool.IModified;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.common.util.INBTSerializable;
import javax.annotation.Nonnull;
package com.teamacronymcoders.essence.utils.helpers;
import com.teamacronymcoders.essence.Essence;
import com.teamacronymcoders.essence.api.capabilities.EssenceCapabilities;
import com.teamacronymcoders.essence.api.tool.IModifierHolder;
import com.teamacronymcoders.essence.api.tool.ModifierInstance;
import com.teamacronymcoders.essence.api.modifier.core.Modifier;
import com.teamacronymcoders.essence.api.tool.IModifiedTool;
import com.teamacronymcoders.essence.modifier.cosmetic.EnchantedModifier;
import com.teamacronymcoders.essence.utils.registration.EssenceRegistries;