Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Can/How Get A Server Sided Container


8iggy
 Share

Recommended Posts

How Can I Get A Server Menu/Container? For An Example. I Made A Menu On My Server And Have Some Items In It. I Want To Get All The Information From The Container And Be Able To Access It In My Code.

Hope This Is Enough Info!

Link to comment
Share on other sites

To begin where are you trying to access info for the container? From the server or client? If it's the latter you'll need to send a C2S packet. Then the easiest way to collect info is when the player opens the inventory, since they have a containerMenu variable. The packet would look something like:

 Spoiler
public class C2SPacketForContainer {
    private final String input1;
    private final String input2;

    public C2SPacketForContainer(String input1, String input2) {
        this.input1 = input1;
        this.input2 = input2;
    }
    public C2SPacketForContainer(PacketBuffer packetBuffer) {
        input1 = packetBuffer.readUtf();
        input2 = packetBuffer.readUtf();
    }

    public void encode(PacketBuffer packetBuffer) {
        packetBuffer.writeUtf(input1);
        packetBuffer.writeUtf(input2);
    }

    public static C2SPacketForContainer decode(PacketBuffer packetBuffer) {
        return new C2SPacketForContainer(packetBuffer.readUtf(), packetBuffer.readUtf());
    }

    public void handle(Supplier<NetworkEvent.Context> supplier) {
        NetworkEvent.Context context = supplier.get();
        context.enqueueWork(() -> {
            ServerPlayerEntity player = context.getSender();
            if (player != null) {
                Container container = player.containerMenu;
                if (container instanceof MyContainer) {
                    MyContainer menu = (MyContainer) container;
                    (do stuff)
                }
            }
        });
        context.setPacketHandled(true);
    }
}

 

Edited by urbanxx001
Link to comment
Share on other sites

7 minutes ago, urbanxx001 said:

To begin where are you trying to access info for the container? From the server or client? If it's the latter you'll need to send a C2S packet. Then the easiest way to collect info is when the player opens the inventory, since they have a containerMenu variable. The packet would look something like:

  Hide contents
public class C2SPacketForContainer {
    private final String input1;
    private final String input2;

    public C2SPacketForContainer(String input1, String input2) {
        this.input1 = input1;
        this.input2 = input2;
    }
    public C2SPacketForContainer(PacketBuffer packetBuffer) {
        input1 = packetBuffer.readUtf();
        input2 = packetBuffer.readUtf();
    }

    public void encode(PacketBuffer packetBuffer) {
        packetBuffer.writeUtf(input1);
        packetBuffer.writeUtf(input2);
    }

    public static C2SPacketForContainer decode(PacketBuffer packetBuffer) {
        return new C2SPacketForContainer(packetBuffer.readUtf(), packetBuffer.readUtf());
    }

    public void handle(Supplier<NetworkEvent.Context> supplier) {
        NetworkEvent.Context context = supplier.get();
        context.enqueueWork(() -> {
            ServerPlayerEntity player = context.getSender();
            if (player != null) {
                Container container = player.containerMenu;
                if (container instanceof MyContainer) {
                    MyContainer menu = (MyContainer) container;
                    (do stuff)
                }
            }
        });
        context.setPacketHandled(true);
    }
}

 

I'm trying to get it info from the server and into the client. I'm still new to forge so I'm not sure if this will work for that.

Link to comment
Share on other sites

17 minutes ago, urbanxx001 said:

To begin where are you trying to access info for the container? From the server or client? If it's the latter you'll need to send a C2S packet. Then the easiest way to collect info is when the player opens the inventory, since they have a containerMenu variable. The packet would look something like:

  Hide contents
public class C2SPacketForContainer {
    private final String input1;
    private final String input2;

    public C2SPacketForContainer(String input1, String input2) {
        this.input1 = input1;
        this.input2 = input2;
    }
    public C2SPacketForContainer(PacketBuffer packetBuffer) {
        input1 = packetBuffer.readUtf();
        input2 = packetBuffer.readUtf();
    }

    public void encode(PacketBuffer packetBuffer) {
        packetBuffer.writeUtf(input1);
        packetBuffer.writeUtf(input2);
    }

    public static C2SPacketForContainer decode(PacketBuffer packetBuffer) {
        return new C2SPacketForContainer(packetBuffer.readUtf(), packetBuffer.readUtf());
    }

    public void handle(Supplier<NetworkEvent.Context> supplier) {
        NetworkEvent.Context context = supplier.get();
        context.enqueueWork(() -> {
            ServerPlayerEntity player = context.getSender();
            if (player != null) {
                Container container = player.containerMenu;
                if (container instanceof MyContainer) {
                    MyContainer menu = (MyContainer) container;
                    (do stuff)
                }
            }
        });
        context.setPacketHandled(true);
    }
}

 

So I put It into my code and it seems like the class PacketBuffer doesn't have a method called write/readUtf. I'm currently using 1.16.5 forge. And I also don't know how to use the class.

for example

C2SPacketForContainer packet = new C2SPacketForContainer(what do i put here?);

 

Link to comment
Share on other sites

42 minutes ago, 8iggy said:

So I put It into my code and it seems like the class PacketBuffer doesn't have a method called write/readUtf. I'm currently using 1.16.5 forge. And I also don't know how to use the class.

The inputs are just a template- in this case it's two strings, but they can be ints, chars, etc. or none at all, depending if you need to initially send info across sides. I'd suggest reading Forge's documentation on packets first if you haven't used them before: 
Forge Docs Networking

You usually send the packet by invoking handler methods:

ModPacketHandler.sendToServer(new C2SPacketForContainer(input1, input2));

Where the handler class has packet registration and the methods:

Spoiler
public class ModPacketHandler {
    public static int networkId = 0;

    private static final String NETWORK_PROTOCOL_VERSION = "1";
    public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel(
            Main.getLocation("main"),
            () -> NETWORK_PROTOCOL_VERSION,
            NETWORK_PROTOCOL_VERSION::equals,
            NETWORK_PROTOCOL_VERSION::equals
    );

    public static void registerC2SPackets() {
        CHANNEL.registerMessage(networkId++,
                C2SPacketForContainer.class,
                C2SPacketForContainer::encode,
                C2SPacketForContainer::decode,
                C2SPacketForContainer::handle,
                Optional.of(NetworkDirection.PLAY_TO_SERVER)
        );
    }

    public static void registerS2CPackets() {
        CHANNEL.registerMessage(networkId++,
                S2CPacketForContainer.class,
                S2CPacketForContainer::encode,
                S2CPacketForContainer::decode,
                S2CPacketForContainer::handle,
                Optional.of(NetworkDirection.PLAY_TO_CLIENT)
        );
    };

	// The only C2S Method

    /**
     * Sends a packet to the server
     * @param msg  Packet to send
     */
    public static void sendToServer(Object msg) {
        CHANNEL.sendToServer(msg);
    }

	// Multiple S2C Methods

    /**
     * Sends a packet to a player
     * @param msg     Packet to send
     * @param player  Player to send to
     */
    public static void sendToClient(Object msg, ServerPlayerEntity player) {
        if (!(player instanceof FakePlayer)) {
            CHANNEL.sendTo(msg, player.connection.connection, NetworkDirection.PLAY_TO_CLIENT);
        }
    }

    /**
     * Sends a packet to players tracking an entity. For tile entities, use chunk or all method instead.
     * @param msg     Packet to send
     * @param entity  Entity being tracked
     */
    public static void sendToClientsTrackingEntity(Object msg, Entity entity) {
        CHANNEL.send(PacketDistributor.TRACKING_ENTITY.with(() -> entity), msg);
    }

    /**
     * Sends a packet to the sender and players tracking an entity. For tile entities, use chunk or all method instead.
     * @param msg     Packet to send
     * @param entity  Entity being tracked
     */
    public static void sendToClientAndClientsTrackingEntity(Object msg, Entity entity) {
        CHANNEL.send(PacketDistributor.TRACKING_ENTITY_AND_SELF.with(() -> entity), msg);
    }

    /**
     * Sends a packet to players within a chunk at a position
     * @param msg          Packet to send
     * @param serverWorld  World instance
     * @param pos          Position within chunk
     */
    public static void sendToClientsTrackingChunk(Object msg, ServerWorld serverWorld, BlockPos pos) {
        Chunk chunk = serverWorld.getChunkAt(pos);
        CHANNEL.send(PacketDistributor.TRACKING_CHUNK.with(() -> chunk), msg);
    }

    /**
     * Sends a packet to all players
     * @param msg  Packet to send
     */
    public static void sendToAllClients(Object msg) {
        CHANNEL.send(PacketDistributor.ALL.noArg(), msg);
    }

}

 

The register methods are called in common setup.

Spoiler
 private static void commonSetup(FMLCommonSetupEvent event) {
        event.enqueueWork(() -> {
            ModPacketHandler.registerC2SPackets();
            ModPacketHandler.registerS2CPackets();
        });
}

 

Edited by urbanxx001
Link to comment
Share on other sites

5 hours ago, 8iggy said:

I Made A Menu On My Server And Have Some Items In It. I Want To Get All The Information From The Container And Be Able To Access It In My Code.

Please stop capitalizing every word...

You need to call NetworkHooks.openGui on the server to open your GUI. You also need to register your ScreenFactory on the client.

Link to comment
Share on other sites

16 hours ago, diesieben07 said:

Please stop capitalizing every word...

You need to call NetworkHooks.openGui on the server to open your GUI. You also need to register your ScreenFactory on the client.

SoRrY

Link to comment
Share on other sites

19 hours ago, urbanxx001 said:

The inputs are just a template- in this case it's two strings, but they can be ints, chars, etc. or none at all, depending if you need to initially send info across sides. I'd suggest reading Forge's documentation on packets first if you haven't used them before: 
Forge Docs Networking

You usually send the packet by invoking handler methods:

ModPacketHandler.sendToServer(new C2SPacketForContainer(input1, input2));

Where the handler class has packet registration and the methods:

  Reveal hidden contents
public class ModPacketHandler {
    public static int networkId = 0;

    private static final String NETWORK_PROTOCOL_VERSION = "1";
    public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel(
            Main.getLocation("main"),
            () -> NETWORK_PROTOCOL_VERSION,
            NETWORK_PROTOCOL_VERSION::equals,
            NETWORK_PROTOCOL_VERSION::equals
    );

    public static void registerC2SPackets() {
        CHANNEL.registerMessage(networkId++,
                C2SPacketForContainer.class,
                C2SPacketForContainer::encode,
                C2SPacketForContainer::decode,
                C2SPacketForContainer::handle,
                Optional.of(NetworkDirection.PLAY_TO_SERVER)
        );
    }

    public static void registerS2CPackets() {
        CHANNEL.registerMessage(networkId++,
                S2CPacketForContainer.class,
                S2CPacketForContainer::encode,
                S2CPacketForContainer::decode,
                S2CPacketForContainer::handle,
                Optional.of(NetworkDirection.PLAY_TO_CLIENT)
        );
    };

	// The only C2S Method

    /**
     * Sends a packet to the server
     * @param msg  Packet to send
     */
    public static void sendToServer(Object msg) {
        CHANNEL.sendToServer(msg);
    }

	// Multiple S2C Methods

    /**
     * Sends a packet to a player
     * @param msg     Packet to send
     * @param player  Player to send to
     */
    public static void sendToClient(Object msg, ServerPlayerEntity player) {
        if (!(player instanceof FakePlayer)) {
            CHANNEL.sendTo(msg, player.connection.connection, NetworkDirection.PLAY_TO_CLIENT);
        }
    }

    /**
     * Sends a packet to players tracking an entity. For tile entities, use chunk or all method instead.
     * @param msg     Packet to send
     * @param entity  Entity being tracked
     */
    public static void sendToClientsTrackingEntity(Object msg, Entity entity) {
        CHANNEL.send(PacketDistributor.TRACKING_ENTITY.with(() -> entity), msg);
    }

    /**
     * Sends a packet to the sender and players tracking an entity. For tile entities, use chunk or all method instead.
     * @param msg     Packet to send
     * @param entity  Entity being tracked
     */
    public static void sendToClientAndClientsTrackingEntity(Object msg, Entity entity) {
        CHANNEL.send(PacketDistributor.TRACKING_ENTITY_AND_SELF.with(() -> entity), msg);
    }

    /**
     * Sends a packet to players within a chunk at a position
     * @param msg          Packet to send
     * @param serverWorld  World instance
     * @param pos          Position within chunk
     */
    public static void sendToClientsTrackingChunk(Object msg, ServerWorld serverWorld, BlockPos pos) {
        Chunk chunk = serverWorld.getChunkAt(pos);
        CHANNEL.send(PacketDistributor.TRACKING_CHUNK.with(() -> chunk), msg);
    }

    /**
     * Sends a packet to all players
     * @param msg  Packet to send
     */
    public static void sendToAllClients(Object msg) {
        CHANNEL.send(PacketDistributor.ALL.noArg(), msg);
    }

}

 

The register methods are called in common setup.

  Reveal hidden contents
 private static void commonSetup(FMLCommonSetupEvent event) {
        event.enqueueWork(() -> {
            ModPacketHandler.registerC2SPackets();
            ModPacketHandler.registerS2CPackets();
        });
}

 

Thanks! In The ModPacketHandler Class. What Is Main? If It's My Main Class getLocation Isn't A Method In It.

Edited by 8iggy
Link to comment
Share on other sites

You still capitalizing every word...

the name sounds like it will return a ResourceLocation or the mod id, not sure because urbanxx001 didn't say what the method does

can you actually explain your exact goal to us, because it can be that there is a easier way to do this

Link to comment
Share on other sites

15 hours ago, 8iggy said:

Thanks! In The ModPacketHandler Class. What Is Main? If It's My Main Class getLocation Isn't A Method In It.

Sorry, yes Luis is right it's just a helper function for resourcelocation:

public static ResourceLocation getLocation(String name) {
        return new ResourceLocation(MOD_ID, name);
    }

As he and diesieben said though, if it's a simple problem like calling openGui and registering the screen, then packets are unnecessary, but you need to describe it in more detail. 

Edited by urbanxx001
Link to comment
Share on other sites

8 hours ago, urbanxx001 said:

Sorry, yes Luis is right it's just a helper function for resourcelocation:

public static ResourceLocation getLocation(String name) {
        return new ResourceLocation(MOD_ID, name);
    }

As he and diesieben said though, if it's a simple problem like calling openGui and registering the screen, then packets are unnecessary, but you need to describe it in more detail. 

Can I access all the items using openGUI or registering the screen?

Link to comment
Share on other sites

11 hours ago, urbanxx001 said:

Sorry, yes Luis is right it's just a helper function for resourcelocation:

public static ResourceLocation getLocation(String name) {
        return new ResourceLocation(MOD_ID, name);
    }

As he and diesieben said though, if it's a simple problem like calling openGui and registering the screen, then packets are unnecessary, but you need to describe it in more detail. 

Thanks! I'm going to test this but I'm still having some errors with other stuff. If it's ok with you can I send a message here if I have anymore issues?

Link to comment
Share on other sites

21 hours ago, Luis_ST said:

You still capitalizing every word...

the name sounds like it will return a ResourceLocation or the mod id, not sure because urbanxx001 didn't say what the method does

can you actually explain your exact goal to us, because it can be that there is a easier way to do this

I always say the same thing every time and people still don't get it but I'm trying to get all the items from a server sided menu/inventory. Get all the info in them aswell, like the lore and display name. I figured out how to do it all but don't know how to get an instance of a server menu/inventory.

Link to comment
Share on other sites

19 minutes ago, 8iggy said:

but don't know how to get an instance of a server menu/inventory.

You can't if you're on the client. That's why packets exist and why OpenGui does what it does.

You can only interact with the data the client knows about and OpenGui will send the inventory contents to the client (including all of the lore, because how else would you be able to see it?)

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

41 minutes ago, 8iggy said:

Thanks! I'm going to test this but I'm still having some errors with other stuff. If it's ok with you can I send a message here if I have anymore issues?

Of course this is your thread and we're here to help you.

If the place you're trying to access the items is a part of the inventory object (the block, tile entity, container, etc. classes) then it's easier. But if you're still in the process of creating your inventory, I'd suggest any of the following:

-Forge docs on Tile Entities

-Minecraft By Example topics. 

-Examine the source code for objects like Chests.

38 minutes ago, 8iggy said:

 I figured out how to do it all but don't know how to get an instance of a server menu/inventory.

Outside of block/TE/container, an easy way is the player's containerMenu value that I mentioned before, which is whatever menu is currently open:

Container container = player.containerMenu
Edited by urbanxx001
Link to comment
Share on other sites

33 minutes ago, urbanxx001 said:

Of course this is your thread and we're here to help you.

If the place you're trying to access the items is a part of the inventory object (the block, tile entity, container, etc. classes) then it's easier. But if you're still in the process of creating your inventory, I'd suggest any of the following:

-Forge docs on Tile Entities

-Minecraft By Example topics. 

-Examine the source code for objects like Chests.

Outside of block/TE/container, an easy way is the player's containerMenu value that I mentioned before, which is whatever menu is currently open:

Container container = player.containerMenu

I feel really dumb... Sorry for being such a pain. Thanks to everyone who replied to this thread!

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
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.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • ---- Minecraft Crash Report ---- // Who set us up the TNT? Time: 10/24/21, 8:51 PM Description: Initializing game org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered     at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363)     at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:208)     at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:178)     at org.spongepowered.asm.mixin.transformer.FabricMixinTransformerProxy.transformClassBytes(FabricMixinTransformerProxy.java:23)     at meteordevelopment.meteorclient.MixinPlugin$Transformer.transformClassBytes(MixinPlugin.java:37)     at net.fabricmc.loader.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:162)     at net.fabricmc.loader.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:154)     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)     at net.minecraft.class_757.<init>(class_757.java:283)     at net.minecraft.class_310.<init>(class_310.java:565)     at net.minecraft.client.main.Main.main(Main.java:179)     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.base/java.lang.reflect.Method.invoke(Method.java:567)     at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:234)     at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:153)     at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28) Caused by: org.spongepowered.asm.mixin.injection.throwables.InjectionError: Critical injection failure: Redirector updateHasStatusEffectProxy(Lnet/minecraft/class_746;Lnet/minecraft/class_1291;)Z in meteor-client.mixins.json:LightmapTextureManagerMixin failed injection check, (0/1) succeeded. Scanned 1 target(s). Using refmap meteor-client-refmap.json     at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.postInject(InjectionInfo.java:408)     at org.spongepowered.asm.mixin.transformer.MixinTargetContext.applyInjections(MixinTargetContext.java:1291)     at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyInjections(MixinApplicatorStandard.java:1042)     at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:395)     at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:320)     at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:345)     at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:569)     at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:351)     ... 17 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace:     at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363)     at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:208)     at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:178)     at org.spongepowered.asm.mixin.transformer.FabricMixinTransformerProxy.transformClassBytes(FabricMixinTransformerProxy.java:23)     at meteordevelopment.meteorclient.MixinPlugin$Transformer.transformClassBytes(MixinPlugin.java:37)     at net.fabricmc.loader.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:162)     at net.fabricmc.loader.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:154)     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)     at net.minecraft.class_757.<init>(class_757.java:283)     at net.minecraft.class_310.<init>(class_310.java:565) -- Initialization -- Details: Stacktrace:     at net.minecraft.client.main.Main.main(Main.java:179)     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.base/java.lang.reflect.Method.invoke(Method.java:567)     at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:234)     at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:153)     at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28) -- System Details -- Details:     Minecraft Version: 1.17.1     Minecraft Version ID: 1.17.1     Operating System: Windows 10 (amd64) version 10.0     Java Version: 16.0.1, Microsoft     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft     Memory: 653549032 bytes (623 MiB) / 1778384896 bytes (1696 MiB) up to 2147483648 bytes (2048 MiB)     CPUs: 12     Processor Vendor: AuthenticAMD     Processor Name: AMD Ryzen 5 3600 6-Core Processor                   Identifier: AuthenticAMD Family 23 Model 113 Stepping 0     Microarchitecture: Zen 2     Frequency (GHz): 3.59     Number of physical packages: 1     Number of physical CPUs: 6     Number of logical CPUs: 12     Graphics card #0 name: Radeon RX 580 Series     Graphics card #0 vendor: Advanced Micro Devices, Inc. (0x1002)     Graphics card #0 VRAM (MB): 4095.00     Graphics card #0 deviceId: 0x67df     Graphics card #0 versionInfo: DriverVersion=27.20.22025.1006     Memory slot #0 capacity (MB): 8192.00     Memory slot #0 clockSpeed (GHz): 2.40     Memory slot #0 type: DDR4     Virtual memory max (MB): 30651.30     Virtual memory used (MB): 17073.36     Swap memory total (MB): 22528.00     Swap memory used (MB): 1513.81     JVM Flags: 9 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M     Fabric Mods:          apoli: Apoli 2.0.3         baritone: Baritone 1.7.0         calio: Calio 1.0.3         cardinal-components-base: Cardinal Components API (base) 3.1.1         cardinal-components-entity: Cardinal Components API (entities) 3.1.1         cloth-basic-math: Cloth Basic Math 0.5.1         cloth-config2: Cloth Config v4 5.0.34         fabric: Fabric API 0.41.0+1.17         fabric-api-base: Fabric API Base 0.3.0+a02b446318         fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.3.0+cbda931818         fabric-biome-api-v1: Fabric Biome API (v1) 3.2.0+cbda931818         fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.5+a02b446318         fabric-command-api-v1: Fabric Command API (v1) 1.1.3+5ab9934c18         fabric-commands-v0: Fabric Commands (v0) 0.2.2+92519afa18         fabric-containers-v0: Fabric Containers (v0) 0.1.12+cbda931818         fabric-content-registries-v0: Fabric Content Registries (v0) 0.3.0+cbda931818         fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.1.5+be9da31018         fabric-dimensions-v1: Fabric Dimensions API (v1) 2.0.11+6cefd57718         fabric-entity-events-v1: Fabric Entity Events (v1) 1.3.0+57bef5a318         fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.4.10+fc40aa9d18         fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.2.1+92519afa18         fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.7+cbda931818         fabric-item-api-v1: Fabric Item API (v1) 1.2.4+cbda931818         fabric-item-groups-v0: Fabric Item Groups (v0) 0.2.10+b7ab612118         fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.4+cbda931818         fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.2+36b77c3e18         fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 1.4.4+a02b446318         fabric-loot-tables-v1: Fabric Loot Tables (v1) 1.0.4+a02b446318         fabric-mining-levels-v0: Fabric Mining Levels (v0) 0.1.3+92519afa18         fabric-models-v0: Fabric Models (v0) 0.3.0+a02b446318         fabric-networking-api-v1: Fabric Networking API (v1) 1.0.13+cbda931818         fabric-networking-blockentity-v0: Fabric Networking Block Entity (v0) 0.2.11+a02b446318         fabric-networking-v0: Fabric Networking (v0) 0.3.2+92519afa18         fabric-object-builder-api-v1: Fabric Object Builder API (v1) 1.10.9+cbda931818         fabric-object-builders-v0: Fabric Object Builders (v0) 0.7.3+a02b446318         fabric-particles-v1: Fabric Particles (v1) 0.2.4+a02b446318         fabric-registry-sync-v0: Fabric Registry Sync (v0) 0.7.11+7931163218         fabric-renderer-api-v1: Fabric Renderer API (v1) 0.4.4+cbda931818         fabric-renderer-indigo: Fabric Renderer - Indigo 0.4.8+cbda931818         fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 3.2.4+7931163218         fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.1.5+a02b446318         fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 0.1.14+4658223018         fabric-rendering-v0: Fabric Rendering (v0) 1.1.5+7931163218         fabric-rendering-v1: Fabric Rendering (v1) 1.9.0+7931163218         fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.4.8+a00e834b18         fabric-screen-api-v1: Fabric Screen API (v1) 1.0.4+cbda931818         fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.1.8+cbda931818         fabric-structure-api-v1: Fabric Structure API (v1) 1.1.13+5ab9934c18         fabric-tag-extensions-v0: Fabric Tag Extensions (v0) 1.2.1+b06cb95b18         fabric-textures-v0: Fabric Textures (v0) 1.0.6+a02b446318         fabric-tool-attribute-api-v1: Fabric Tool Attribute API (v1) 1.2.12+b7ab612118         fabric-transfer-api-v1: Fabric Transfer API (v1) 1.4.0+7931163218         fabricloader: Fabric Loader 0.11.7         fallflyinglib: FallFlyingLib 3.0.0-beta.2         java: OpenJDK 64-Bit Server VM 16         meteor-client: Meteor Client 0.4.5         minecraft: Minecraft 1.17.1         origins: Origins 1.1.2         playerabilitylib: Pal 1.3.0-nightly.1.17-rc1         reach-entity-attributes: Reach Entity Attributes 2.1.1     Launched Version: fabric-loader-0.11.7-1.17.1     Backend library: LWJGL version 3.2.2 build 10     Backend API: Radeon RX 580 Series GL version 3.2.14742 Core Profile Forward-Compatible Context 21.8.2 27.20.22025.1006, ATI Technologies Inc.     Window size: <not initialized>     GL Caps: Using framebuffer using OpenGL 3.2     GL debug messages:      Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'fabric'     Type: Client (map_client.txt)     CPU: 12x AMD Ryzen 5 3600 6-Core Processor 
    • If you want the more future proof in-code solution that doesn't require an arbitrary hardcoded string interpolation,   .withStyle(ChatFormatting.GOLD) this call on the `TextComponent` will color it. You can use any ChatFormatting enum constant, including ones that are added after the fact, and you don't have to consult some table on the internet to find what you want.
    • No, you would need capabilities for that (if an existing entity is resistant, or the player) unless only your own mobs are resistant.
    • https://maven.minecraftforge.net/net/minecraftforge/eventbus/3.0.5/eventbus-3.0.5-service.jar https://maven.minecraftforge.net/net/minecraftforge/accesstransformers/2.2.0/accesstransformers-2.2.0-shadowed.jar TLDR: The vanilla launcher is crap, so we have to do a work around which is screwing up on creeperhost.
    • To my knowledge, if Structurize isn't in the list of mods, it'll work on 1.16.5 by default, without you needing to change anything. We implemented a Version Compatibility Matrix to make this easier for you.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.