Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Tret

Members
  • Joined

  • Last visited

Everything posted by Tret

  1. Tret replied to Tret's topic in Modder Support
    So I just need to attach my code (I posted above) to chunks?
  2. Tret replied to Tret's topic in Modder Support
    Do you by any chance have good code examples of chunk capabilities in 1.17 forge? I can't find any and I really need some to fully understand the forge documentation.
  3. Tret replied to Tret's topic in Modder Support
    I've been digging for some capabilities knowledge and I can see a lot of people using capabilities and nbt tags to add custom properties to block entities. Should I stick with the custom storage or would the capability system be a better way to implement my mechanic? So far I have these prototype codes: public class HeatCapability implements IHeat{ @Override public void setHeat(double heat) { } @Override public double getHeat() { return 0; } @Override public double ExchangeRate() { return 0; } @Override public double HeatCapacity() { return 0; } @Override public double ExchangeFactor() { return 0; } @Override public void write(DataOutput pOutput) throws IOException { } @Override public byte getId() { return 0; } @Override public TagType<?> getType() { return null; } @Override public Tag copy() { return null; } @Override public void accept(TagVisitor pVisitor) { } } public class HeatStorage implements ICapabilitySerializable<CompoundTag> { @CapabilityInject(IHeat.class) public static final Capability<IHeat> HEAT_CAPABILITY = null; public static final LazyOptional<IHeat> instance = LazyOptional.of(HEAT_CAPABILITY::getDefaultInstance); @Nonnull @Override public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) { return cap == HEAT_CAPABILITY? (LazyOptional<T>) instance : LazyOptional.empty(); } @Override public CompoundTag serializeNBT() { CompoundTag nbt = new CompoundTag(); nbt.putDouble("Heat", instance.resolve().get().getHeat()); return nbt; } @Override public void deserializeNBT(CompoundTag nbt) { instance.resolve().get().setHeat(nbt.getDouble("Heat")); } }
  4. Tret replied to Tret's topic in Modder Support
    And since I add chunk capabilities the container itself will only exist per chunk so it does not need to know which chunk it is in right? Thank you for the suggestion and the help!
  5. Tret replied to Tret's topic in Modder Support
    Yeah but a BlockPos contains a lot of information. For example 3 ints for the 3D space. Id of the world which could be an unsigned short but it is still 31bit of information. If java is smart enough maybe it will use references instead of copy constructors but is it smart enough for that or should I dig into java symbols for getting a value by reference?
  6. Tret replied to Tret's topic in Modder Support
    Is this as easy as this: https://mcforge.readthedocs.io/en/latest/datastorage/capabilities/#attaching-capabilities Or do I need to create my own capability? Also considering I need to store the BlockPos too as a key my storage size would almost go triple the size as opposed if I try to add my value as a block property. Is there a way to avoid this?
  7. Tret replied to Tret's topic in Modder Support
    So my only option is to store them in a map with a blockpos as a key so I can identify where it belongs?
  8. Tret replied to Tret's topic in Modder Support
    Another question arises. How could I add a custom property to every block in Minecraft? Do I need mixin for that?
  9. Tret replied to Tret's topic in Modder Support
    The problem is, this is a constructor and mixin can not modify constructors. Subscribing to the event would still not work as I need to apply my mechanic to every block there is in Minecraft. Subscribing only applies my mechanic to my blocks or am I wrong here?
  10. Tret replied to Tret's topic in Modder Support
    So in theory if I had an event that is triggered when a block's neighbor changes I can determine the heat transfer rate at a given tick for the block and with this way I can spare lot's of calculations. So I would need an event that triggers when a block is placed but not just for my blocks, for every block there is in minecraft. I'm searching for that function so I can implement my mechanic in it.
  11. Tret replied to Tret's topic in Modder Support
    And can you help me out with that?
  12. Tret posted a topic in Modder Support
    Dear Forge Community, I have an idea for a mod which implementation is a bit invasive and I have only c++ experience yet so I've came here to ask this question. (I know I should not program MC mods without java experience but in my opinion the seek for knowledge should not be refused under any circumstances and I'm turning to you guys hoping you would not reject it either.) The base idea is to implement heat and heat exchange and add this mechanic to the vanilla blocks of minecraft. My idea is to only calculate a blocks init heat if It's heat transfer rate is far enough from 0 in any direction. This would allow me to calculate efficiently and would not require me to store a new unsigned short for every block. Also I'm planning to use air as a block group with same heat unit at init. At least yet. The question is. I need to mixin into the chunk generation in order to catch the event block generated event and inject my code before return but I can not find any good documentation about this topic and I also can not find the block generated event function which I need to overwrite. Can you help me out with this? Every help is appreciated since I'm learning modding and java. Edit: typo

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.