Jump to content

Tener

Members
  • Posts

    1
  • Joined

  • Last visited

Everything posted by Tener

  1. Iam using two mods and they are crashing java.lang.ClassCastException: nonamecrackers2.witherstormmod.client.capability.PlayerScreenBlinder cannot be cast to com.bottomtextdanny.dannys_expansion.core.capabilities.player.DannyEntityCap So iam trying to fix both with mixin, but i legit cant find the reason since i never had a Capability crash on my mods , that is how they registry a capabilitie @EventBusSubscriber( modid = "dannys_expansion" ) public class DannyEntityCap implements INBTSerializable<CompoundNBT>, ICapabilityProvider { private final AccessoryInventory accessories = new AccessoryInventory(5); public boolean accessoriesNeedSync; private float recoil; private float prevRecoil; private float recoilSubstract; private float recoilMultiplier; private int holdableProgression; private int prevHoldableProgression; @Nullable public ItemStack dannyActiveItemstack; private int itemSlot; @CapabilityInject(DannyEntityCap.class) public static Capability<DannyEntityCap> GUN_STABILITY = null; public DannyEntityCap() { } public float getPrevRecoil() { return this.prevRecoil; } public void setPrevRecoil(float f) { this.prevRecoil = f; } public float getRecoilMult() { return this.recoilMultiplier; } public void setRecoilMult(float f) { this.recoilMultiplier = f; } public float getRecoilSub() { return this.recoilSubstract; } public void setRecoilSub(float f) { this.recoilSubstract = f; } public float getRecoil() { return this.recoil; } public void setRecoil(float f) { this.recoil = f; } public int getHoldableProgression() { return this.holdableProgression; } public void setHoldableProgression(int i) { this.holdableProgression = i; } public int getItemSlot() { return this.itemSlot; } public void setItemSlot(int i) { this.itemSlot = i; } public int getPrevHoldableProgression() { return this.prevHoldableProgression; } public void setPrevHoldableProgression(int i) { this.prevHoldableProgression = i; } public AccessoryInventory getAccessories() { return this.accessories; } public void setAccessory(int index, ItemStack itemStack) { this.accessories.setItem(index, itemStack); } @Nonnull public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) { return cap == GUN_STABILITY ? LazyOptional.of(() -> { return this; }).cast() : LazyOptional.empty(); } public CompoundNBT serializeNBT() { CompoundNBT nbt = new CompoundNBT(); nbt.putInt("player_item_progression", this.getHoldableProgression()); nbt.putInt("player_item", this.getItemSlot()); for(int i = 0; i < this.accessories.getContainerSize(); ++i) { CompoundNBT itemNBT = this.accessories.getItem(i).serializeNBT(); CompoundNBT accessoryNBT = ((Accessory)this.accessories.getAccessoryInstances().get(i)).write(); nbt.put("accessory_item_" + i, itemNBT); nbt.put("accessory_" + i, accessoryNBT); } return nbt; } public void deserializeNBT(CompoundNBT nbt) { this.setRecoil((float)nbt.getInt("player_item_progression")); this.setItemSlot(nbt.getInt("player_item")); for(int i = 0; i < this.accessories.getContainerSize(); ++i) { ItemStack stack = ItemStack.EMPTY; INBT itemNBT = nbt.get("accessory_item_" + i); if (itemNBT != null) { stack = ItemStack.of((CompoundNBT)itemNBT); } this.accessories.setItem(i, stack); ((Accessory)this.accessories.getAccessoryInstances().get(i)).read(nbt.getCompound("accessory_" + i)); } } } And other @SubscribeEvent public static void attachEntityCapabilities(AttachCapabilitiesEvent<Entity> event) { Entity entity = (Entity)event.getObject(); if (entity instanceof ClientPlayerEntity) { ClientPlayerEntity player = (ClientPlayerEntity)entity; final LazyOptional<PlayerCameraShaker> cameraShaker = LazyOptional.of(() -> { return new PlayerCameraShaker(player); }); event.addCapability(new ResourceLocation("witherstormmod", "camera_shaker"), new ICapabilityProvider() { public <T> LazyOptional<T> getCapability(Capability<T> capability, Direction side) { return capability == WitherStormModClientCapabilities.CAMERA_SHAKER ? cameraShaker.cast() : LazyOptional.empty(); } }); event.addListener(cameraShaker::invalidate); final LazyOptional<PlayerScreenBlinder> screenBlinder = LazyOptional.of(PlayerScreenBlinder::new); event.addCapability(new ResourceLocation("witherstormmod", "blinder"), new ICapabilityProvider() { public <T> LazyOptional<T> getCapability(Capability<T> capability, Direction side) { return capability == WitherStormModClientCapabilities.SCREEN_BLINDER ? screenBlinder.cast() : LazyOptional.empty(); } }); event.addListener(screenBlinder::invalidate); } } Erros happens on calls like that DannyEntityCap capability = (DannyEntityCap)entityIn.getCapability(DannyEntityCap.GUN_STABILITY).orElse((Object)null); Both codes are open sourced, just want to fix and run on my modpack.
×
×
  • Create New...

Important Information

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