Everything posted by TallYate
-
[1.15.2] How do I create an item with power?
My Armor Item doesn’t implement IEnergyStorage, I think that came from CapabilityEnergy.ENERGY
-
[1.15.2] How do I create an item with power?
stack.getCapability(CapabilityEnergy.ENERGY, null).ifPresent(handler -> { handler is an IEnergyStorage, how would I add my own method to that?
-
[1.15.2] How do I create an item with power?
I think I have to do something like handler.getEnergyStored()=nbt.getInt("Energy"); but getEnergyStored() returns a value and not a variable/reference, and I don't see any other methods to write to the capability.
-
[1.15.2] How do I create an item with power?
@Override @Nullable public CompoundNBT getShareTag(ItemStack stack) { CompoundNBT tag = stack.getOrCreateTag(); stack.getCapability(CapabilityEnergy.ENERGY, null).ifPresent(handler -> {tag.putInt("Energy", handler.getEnergyStored());}); return tag; } @Override public void readShareTag(ItemStack stack, @Nullable CompoundNBT nbt) { stack.getCapability(CapabilityEnergy.ENERGY, null).ifPresent(handler -> {nbt.putInt("Energy", handler.getEnergyStored());}); } ok I've done this. I did the local variable thing because I thought it was a reference that I could change. What am I actually supposed to do in readShareTag?
-
[1.15.2] How do I create an item with power?
@Override @Nullable public CompoundNBT getShareTag(ItemStack stack) { CompoundNBT tag = stack.getOrCreateTag(); stack.getCapability(CapabilityEnergy.ENERGY, null).ifPresent(handler -> {tag.putInt("Energy", stack.getCapability(CapabilityEnergy.ENERGY).orElseGet(null).getEnergyStored());}); return tag; } @Override public void readShareTag(ItemStack stack, @Nullable CompoundNBT nbt) { stack.setTag(nbt); int energy = stack.getCapability(CapabilityEnergy.ENERGY, null).orElse(null).getEnergyStored(); energy=nbt.getInt("Energy"); } I feel like I have done the readShareTag part wrong
-
[1.15.2] How do I create an item with power?
Ok, so how do I sync it?
-
[1.15.2] How do I create an item with power?
https://streamable.com/pi8evu
-
[1.15.2] How do I create an item with power?
Thank you for that, it has stopped spam changing It is not charging in chargers though, but it does suck up power when it is taken out. You can see what I want to happen with the Industrial Foregoing Drill public class PowerArmor extends ArmorItem { public PowerArmor(IArmorMaterial materialIn, EquipmentSlotType slot, Properties builder) { super(materialIn, slot, builder); } private EnergyStorage newStorage() { return new EnergyStorage(10000, 1000, 1000); } @Override public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) { return new ICapabilityProvider() { protected EnergyStorage storage = newStorage(); protected LazyOptional<EnergyStorage> storageHolder = LazyOptional.of(() -> storage); @Override public <T> LazyOptional<T> getCapability(Capability<T> cap, Direction side) { if (cap == CapabilityEnergy.ENERGY) { return storageHolder.cast(); } return LazyOptional.empty(); } }; } @Override public void addInformation(ItemStack stack, @Nullable World worldIn, List<ITextComponent> tooltip, ITooltipFlag flagIn) { IEnergyStorage cap = stack.getCapability(CapabilityEnergy.ENERGY, null).orElseGet(null); String charge = Integer.toString(cap.getEnergyStored()); String capacity = Integer.toString(cap.getMaxEnergyStored()); tooltip.add(new TranslationTextComponent("Charge: " + charge + "/" + capacity)); } } Minecraft_ 1.15.2 - Singleplayer 2020-06-20 20-42-13.mp4 Minecraft_ 1.15.2 - Singleplayer 2020-06-20 20-42-13.mp4 Minecraft_ 1.15.2 - Singleplayer 2020-06-20 20-42-13.mp4
-
Forge 1.5.2 install 'These libraries failed to Download' error
do you mean 1.15.2?
-
[1.15.2] How do I create an item with power?
@Override public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) { return new ICapabilityProvider() { EnergyStorage storage = new EnergyStorage(capacity, input, output); LazyOptional<EnergyStorage> storageHolder = LazyOptional.of(() -> storage); @Override public <T> LazyOptional<T> getCapability(Capability<T> cap, Direction side) { if (cap == CapabilityEnergy.ENERGY) { return storageHolder.cast(); } return null; } }; } I moved it into ICapabilityProvider(), but it is still constantly changing this.initCapabilities(stack, stack.serializeNBT()).getCapability(CapabilityEnergy.ENERGY, null) and this.initCapabilities(stack, stack.serializeNBT()).getCapability(CapabilityEnergy.ENERGY, null).orElse(null) also I put this in public void addInformation(ItemStack stack, @Nullable World worldIn, List<ITextComponent> tooltip, ITooltipFlag flagIn) for testing
-
[1.15.2] How do I create an item with power?
That returns a new instance each time, so I need to store it somewhere?
-
[1.15.2] How do I create an item with power?
public class PowerArmor extends ArmorItem { //public EnergyStorage storage; private int capacity; private int input; private int output; public PowerArmor(IArmorMaterial materialIn, EquipmentSlotType slot, Properties builder) { super(materialIn, slot, builder); //this.storage = new EnergyStorage(10000, 1000, 1000); this.capacity = 10000; this.input = 1000; this.output = 1000; } @Override public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) { return new ICapabilityProvider() { @Override public <T> LazyOptional<T> getCapability(Capability<T> cap, Direction side) { if (cap == CapabilityEnergy.ENERGY) { EnergyStorage storage = new EnergyStorage(capacity, input, output); LazyOptional<EnergyStorage> storageHolder = LazyOptional.of(() -> storage); return storageHolder.cast(); } return null; } }; } } maybe like this?
-
[1.15.2] How do I create an item with power?
public class PowerArmor extends ArmorItem { public EnergyStorage storage; public PowerArmor(IArmorMaterial materialIn, EquipmentSlotType slot, Properties builder) { super(materialIn, slot, builder); this.storage = new EnergyStorage(10000, 1000, 1000); } @Override public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) { return new ICapabilityProvider() { @Override public <T> LazyOptional<T> getCapability(Capability<T> cap, Direction side) { if (cap == CapabilityEnergy.ENERGY) { LazyOptional<EnergyStorage> storageHolder = LazyOptional.of(() -> storage); return storageHolder.cast(); } return null; } }; } @Override public void addInformation(ItemStack stack, @Nullable World worldIn, List<ITextComponent> tooltip, ITooltipFlag flagIn) { String something = "what do I put here"; tooltip.add(new TranslationTextComponent( "Charge: " + something)); } } Like this?
-
[1.15.2] How do I create an item with power?
What are you referring to when you say capability provider?
-
[1.15.2] How do I create an item with power?
- [1.15.2] How do I create an item with power?
How do I do that?- [1.15.2] How do I create an item with power?
Ok I made my code like Draco18's public class PowerArmor extends ArmorItem { public EnergyStorage storage; public LazyOptional<EnergyStorage> storageHolder = LazyOptional.of(() -> storage); public PowerArmor(IArmorMaterial materialIn, EquipmentSlotType slot, Properties builder) { super(materialIn, slot, builder); this.storage = new EnergyStorage(10000, 1000, 1000, 123); // 123 is just a test } @Override public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) { return new ICapabilityProvider() { @Override public <T> LazyOptional<T> getCapability(Capability<T> cap, Direction side) { if (cap == CapabilityEnergy.ENERGY) { return storageHolder.cast(); } return null; } }; } @Override public void addInformation(ItemStack stack, @Nullable World worldIn, List<ITextComponent> tooltip, ITooltipFlag flagIn) { String something = "what do I put here"; tooltip.add(new TranslationTextComponent( "Charge: " + something)); } } Is this correct? Also, how do I get the charge?- [1.15.2] How do I create an item with power?
Ok I tested it and get this: The game crashed whilst ticking block entity Error: java.lang.ClassCastException: java.lang.Class cannot be cast to net.minecraftforge.energy.IEnergyStorage- [1.15.2] How do I create an item with power?
public class PowerArmor extends ArmorItem{ protected int energy; protected int capacity; protected int maxReceive; protected int maxExtract; public ICapabilityProvider capability; public PowerArmor(IArmorMaterial materialIn, EquipmentSlotType slot, Properties builder) { super(materialIn, slot, builder); this.capacity = 10000; this.maxReceive = 1000; this.maxExtract = 1000; this.energy = Math.max(0 , Math.min(capacity, energy)); this.capability = new ICapabilityProvider() { @Override public <T> LazyOptional<T> getCapability(Capability<T> cap, Direction side) { return (LazyOptional<T>) LazyOptional.of(() -> IEnergyStorage.class); } }; } @Override public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) { return this.capability; } } Is this good?- [1.15.2] How do I create an item with power?
Like this? @Override public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundNBT nbt) { return new ICapabilityProvider() { @Override public <T> LazyOptional<T> getCapability(Capability<T> cap, Direction side) { return (LazyOptional<T>) LazyOptional.of(() -> IEnergyStorage.class); } }; }- [1.15.2] How do I create an item with power?
What do you mean by that?- [1.15.2] How do I create an item with power?
public class PowerArmor extends ArmorItem implements IEnergyStorage{ protected int energy; protected int capacity; protected int maxReceive; protected int maxExtract; public PowerArmor(IArmorMaterial materialIn, EquipmentSlotType slot, Properties builder) { super(materialIn, slot, builder); this.capacity = 10000; this.maxReceive = 1000; this.maxExtract = 1000; this.energy = Math.max(0 , Math.min(capacity, energy)); } @Override public int receiveEnergy(int maxReceive, boolean simulate) { if (!canReceive()) return 0; int energyReceived = Math.min(capacity - energy, Math.min(this.maxReceive, maxReceive)); if (!simulate) energy += energyReceived; return energyReceived; } @Override public int extractEnergy(int maxExtract, boolean simulate) { if (!canExtract()) return 0; int energyExtracted = Math.min(energy, Math.min(this.maxExtract, maxExtract)); if (!simulate) energy -= energyExtracted; return energyExtracted; } @Override public int getEnergyStored() { return energy; } @Override public int getMaxEnergyStored() { return capacity; } @Override public boolean canExtract() { return this.maxExtract > 0; } @Override public boolean canReceive() { return this.maxReceive > 0; } } This is my code. I've heard that I need to use initCapabilities. How would I do that?- [1.15.2] Why does this not change my velocity?
Apparently movement is client-side so that's why it doesn't move me- [1.15.2] Why does this not change my velocity?
public static void handle(key msg, Supplier<NetworkEvent.Context> ctx) { if (msg.key == 0 && ctx.get().getSender().getItemStackFromSlot(EquipmentSlotType.FEET) .getItem() == ModItems.KABOOTS.get()) { ctx.get().enqueueWork(() -> { ServerPlayerEntity sender = ctx.get().getSender(); Vec3d pos = sender.getPositionVec(); Vec3d look = sender.getLookVec(); double x = pos.getX() - (look.getX() / 2); double y = pos.getY() - 0.3; double z = pos.getZ() - (look.getZ() / 2); float size = 1.0F; sender.world.createExplosion(sender, (DamageSource) null, x, y, z, size, false, Explosion.Mode.BREAK); int k1 = MathHelper.floor(x - size - 1.0D); int l1 = MathHelper.floor(x + size + 1.0D); int i2 = MathHelper.floor(y - size - 1.0D); int i1 = MathHelper.floor(y + size + 1.0D); int j2 = MathHelper.floor(z - size - 1.0D); int j1 = MathHelper.floor(z + size + 1.0D); List<Entity> list = sender.getEntityWorld().getEntitiesWithinAABB(LivingEntity.class, new AxisAlignedBB((double) k1, (double) i2, (double) j2, (double) l1, (double) i1, (double) j1), Predicates.instanceOf(LivingEntity.class)); for (int i = 0; i < list.size(); i++) { list.get(i).setVelocity(0, 0, 25); CrudeTechMod.log(list.get(i).toString()); } }); } ctx.get().setPacketHandled(true); } I am logged, but my velocity doesn't change ServerPlayerEntity['Dev'/50, l='test', x=-299.80, y=3.25, z=433.91]- [1.15.2] Make server summon entity based on client
The problem was that I made the array at the beginning, but then used keyExplosiveJump instead of array[0] - [1.15.2] How do I create an item with power?
IPS spam blocked by CleanTalk.
Important Information
By using this site, you agree to our Terms of Use.