Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package net.modificationstation.sltest.entity;

import net.mine_diver.unsafeevents.listener.EventListener;
import net.modificationstation.stationapi.api.event.entity.EntityRegister;
import net.modificationstation.stationapi.api.event.entity.EntityRegisterEvent;
import net.modificationstation.stationapi.api.event.registry.EntityHandlerRegistryEvent;
import net.modificationstation.stationapi.api.event.registry.MobHandlerRegistryEvent;

Expand All @@ -11,9 +11,9 @@
public class EntityListener {

@EventListener
public void registerEntities(EntityRegister event) {
event.register(TestEntity.class, "sltest:test");
event.register(PoorGuy.class, "GPoor");
public void registerEntities(EntityRegisterEvent event) {
event.register("sltest:test", TestEntity.class);
event.register("GPoor", PoorGuy.class);
}

@EventListener
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,24 @@
import net.mine_diver.unsafeevents.listener.EventListener;
import net.modificationstation.sltest.SLTest;
import net.modificationstation.sltest.option.OptionListener;
import net.modificationstation.sltest.packet.MineLMomentPacket;
import net.modificationstation.stationapi.api.client.event.keyboard.KeyStateChangedEvent;
import net.modificationstation.stationapi.api.network.packet.MessagePacket;
import net.modificationstation.stationapi.api.network.packet.PacketHelper;
import net.modificationstation.stationapi.api.util.Identifier;
import org.lwjgl.input.Keyboard;

public class KeyboardListener {

@EventListener
public static void keyStateChange(KeyStateChangedEvent event) {
if (event.environment == KeyStateChangedEvent.Environment.IN_GAME && Keyboard.getEventKey() == OptionListener.testBind.code)
PacketHelper.send(new MessagePacket(Identifier.of(SLTest.NAMESPACE, "give_me_diamonds")));
if (event.environment == KeyStateChangedEvent.Environment.IN_GAME) {
if (Keyboard.getEventKey() == OptionListener.testBind.code) {
PacketHelper.send(new MessagePacket(Identifier.of(SLTest.NAMESPACE, "give_me_diamonds")));
}

if (Keyboard.getEventKey() == OptionListener.mineLMoment.code) {
PacketHelper.send(new MineLMomentPacket(0));
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@
import net.mine_diver.unsafeevents.listener.EventListener;
import net.minecraft.client.option.KeyBinding;
import net.modificationstation.stationapi.api.client.event.option.KeyBindingRegisterEvent;
import org.lwjgl.input.Keyboard;

public class OptionListener {

public static KeyBinding testBind;
public static KeyBinding mineLMoment;

@Environment(EnvType.CLIENT)
@EventListener
public void registerKeyBindings(KeyBindingRegisterEvent event) {
testBind = new KeyBinding("key.sltest.testBind", 21);
event.keyBindings.add(testBind);
event.register(testBind = new KeyBinding("key.sltest.testBind", 21));
event.register(mineLMoment = new KeyBinding("key.sltest.mine_l_moment", Keyboard.KEY_L));
}

public static KeyBinding testBind;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package net.modificationstation.sltest.packet;

import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.network.NetworkHandler;
import net.minecraft.network.packet.Packet;
import net.minecraft.world.World;
import net.modificationstation.stationapi.api.entity.player.PlayerHelper;
import net.modificationstation.stationapi.api.network.packet.ManagedPacket;
import net.modificationstation.stationapi.api.network.packet.PacketHelper;
import net.modificationstation.stationapi.api.network.packet.PacketType;
import net.modificationstation.stationapi.api.util.SideUtil;
import org.jetbrains.annotations.NotNull;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

public class MineLMomentPacket extends Packet implements ManagedPacket<MineLMomentPacket> {
public static final PacketType<MineLMomentPacket> TYPE = PacketType.builder(true, true, MineLMomentPacket::new).build();

int mineLMoments;

public MineLMomentPacket(int mineLMoments) {
this.mineLMoments = mineLMoments;
}

public MineLMomentPacket() {
}

@Override
public void read(DataInputStream stream) {
try {
mineLMoments = stream.readInt();
} catch (IOException e) {
throw new RuntimeException(e);
}
}

@Override
public void write(DataOutputStream stream) {
try {
stream.writeInt(mineLMoments);
} catch (IOException e) {
throw new RuntimeException(e);
}
}

@Override
public void apply(NetworkHandler networkHandler) {
SideUtil.run(() -> handleClient(networkHandler), () -> handleServer(networkHandler));
}

@Environment(EnvType.CLIENT)
public void handleClient(NetworkHandler networkHandler) {
PlayerEntity player = PlayerHelper.getPlayerFromPacketHandler(networkHandler);
player.sendMessage(mineLMoments + " Mine L Moments have occurred near you");
}

@Environment(EnvType.SERVER)
public void handleServer(NetworkHandler networkHandler) {
PlayerEntity player = PlayerHelper.getPlayerFromPacketHandler(networkHandler);
World world = player.world;

PacketHelper.sendToAllTracking(player, new MineLMomentPacket((int) world.getTime()));
}

@Override
public int size() {
return 4;
}

@Override
public @NotNull PacketType<MineLMomentPacket> getType() {
return TYPE;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package net.modificationstation.sltest.packet;

import net.mine_diver.unsafeevents.listener.EventListener;
import net.modificationstation.stationapi.api.event.network.packet.PacketRegisterEvent;
import net.modificationstation.stationapi.api.mod.entrypoint.Entrypoint;
import net.modificationstation.stationapi.api.util.Namespace;

@SuppressWarnings("unused")
public class PacketListener {
@Entrypoint.Namespace
public static Namespace NAMESPACE;

@EventListener
public void registerPackets(PacketRegisterEvent event) {
event.register(NAMESPACE.id("mine_l_moment"), MineLMomentPacket.TYPE);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ public class TileEntityListener {
@EventListener
public void registerTileEntities(BlockEntityRegisterEvent event) {
SLTest.LOGGER.info("reeee tile entiites");
event.register(TileEntityFreezer.class, "sltest:freezer");
event.register("sltest:freezer", TileEntityFreezer.class);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
item.@.test_item.name=Test Item
item.@.model_item.name=IDK Something
key.@.testBind=Diamonds!
key.@.mine_l_moment=Mine L Moment
tile.@.test_block.name=Test Block
tile.@.test_animated_block0.name=Test Animated Block
tile.@.test_animated_block1.name=Charged Animated Block
Expand Down
3 changes: 2 additions & 1 deletion src/test/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@
"net.modificationstation.sltest.worldgen.TestWorldgenListener",
"net.modificationstation.sltest.bonemeal.BonemealListener",
"net.modificationstation.sltest.dispenser.DispenserListener",
"net.modificationstation.sltest.effect.TestEffectListener"
"net.modificationstation.sltest.effect.TestEffectListener",
"net.modificationstation.sltest.packet.PacketListener"
],
"stationapi:event_bus_client": [
"net.modificationstation.sltest.gui.GuiListener",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,8 @@
@SuperBuilder
public class BlockEntityRendererRegisterEvent extends Event {
public final Map<Class<? extends BlockEntity>, BlockEntityRenderer> renderers;

public final void register(Class<? extends BlockEntity> blockEntityClass, BlockEntityRenderer renderer) {
renderers.put(blockEntityClass, renderer);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,19 @@
import lombok.experimental.SuperBuilder;
import net.mine_diver.unsafeevents.Event;
import net.minecraft.block.entity.BlockEntity;
import net.modificationstation.stationapi.api.util.Identifier;

import java.util.function.BiConsumer;

@SuperBuilder
public class BlockEntityRegisterEvent extends Event {
public final BiConsumer<Class<? extends BlockEntity>, String> register;

public final void register(Class<? extends BlockEntity> blockEntityClass, String id) {
public final void register(String id, Class<? extends BlockEntity> blockEntityClass) {
register.accept(blockEntityClass, id);
}

public final void register(Identifier id, Class<? extends BlockEntity> blockEntityClass) {
register.accept(blockEntityClass, id.toString());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
import lombok.experimental.SuperBuilder;
import net.mine_diver.unsafeevents.Event;
import net.minecraft.entity.Entity;
import net.modificationstation.stationapi.api.util.Identifier;

@SuperBuilder
public class EntityRegister extends Event {
public class EntityRegisterEvent extends Event {
@FunctionalInterface
public interface RegisterFunction {
void register(Class<? extends Entity> entityClass, String entityIdentifier, int entityId);
Expand All @@ -19,11 +20,15 @@ public interface RegisterFunctionNoId {
public final RegisterFunction register;
public final RegisterFunctionNoId registerNoID;

public final void register(Class<? extends Entity> entityClass, String entityIdentifier, int entityId) {
public final void register(String entityIdentifier, int entityId, Class<? extends Entity> entityClass) {
register.register(entityClass, entityIdentifier, entityId);
}

public final void register(Class<? extends Entity> entityClass, String entityIdentifier) {
public final void register(String entityIdentifier, Class<? extends Entity> entityClass) {
registerNoID.register(entityClass, entityIdentifier);
}

public final void register(Identifier entityIdentifier, Class<? extends Entity> entityClass) {
registerNoID.register(entityClass, entityIdentifier.toString());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityRegistry;
import net.modificationstation.stationapi.api.StationAPI;
import net.modificationstation.stationapi.api.event.entity.EntityRegister;
import net.modificationstation.stationapi.api.event.entity.EntityRegisterEvent;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
Expand All @@ -24,7 +24,7 @@ private static void register(Class<? extends Entity> arg, String string, int i)
@Inject(method = "<clinit>", at = @At("RETURN"))
private static void stationapi_onEntityRegister(CallbackInfo ci) {
StationAPI.EVENT_BUS.post(
EntityRegister.builder()
EntityRegisterEvent.builder()
.register(EntityRegistryMixin::register)
.registerNoID((aClass, s) -> {
idToClass.put(s, aClass);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,8 @@
@SuperBuilder
public class KeyBindingRegisterEvent extends Event {
public final List<KeyBinding> keyBindings;

public final void register(KeyBinding keyBinding) {
keyBindings.add(keyBinding);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
import net.minecraft.network.packet.Packet;
import net.modificationstation.stationapi.api.StationAPI;
import net.modificationstation.stationapi.api.network.packet.MessagePacket;
import net.modificationstation.stationapi.api.network.packet.PacketType;
import net.modificationstation.stationapi.api.registry.PacketTypeRegistry;
import net.modificationstation.stationapi.api.registry.Registry;
import net.modificationstation.stationapi.api.util.Identifier;

/**
* Event that fires after vanilla packets are registered.
Expand Down Expand Up @@ -33,15 +37,25 @@ public class PacketRegisterEvent extends Event implements PacketRegister {
*
* <p>Uses {@link PacketRegisterEvent#register} field to process the registration.
*
* @param packetId the packet ID that you want to use for the packet.
* The ID is written as a byte, meaning it can be any number in the 0-255 (inclusive) range,
* except for already taken packet IDs.
* @param packetId the packet ID that you want to use for the packet.
* The ID is written as a byte, meaning it can be any number in the 0-255 (inclusive) range,
* except for already taken packet IDs.
* @param receivableOnClient whether this packet is supposed to be received on the client side.
* @param receivableOnServer whether this packet is supposed to be received on the server side.
* @param packetClass the packet's class that extends {@link Packet} or a sub class of it.
* @param packetClass the packet's class that extends {@link Packet} or a sub class of it.
*/
@Override
public final void register(int packetId, boolean receivableOnClient, boolean receivableOnServer, Class<? extends Packet> packetClass) {
register.register(packetId, receivableOnClient, receivableOnServer, packetClass);
}

/**
* Registers the given {@link PacketType}
*
* @param id The identifier of the packet
* @param packetType The packet type of the packet
*/
public final void register(Identifier id, PacketType<? extends Packet> packetType) {
Registry.register(PacketTypeRegistry.INSTANCE, id, packetType);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,10 @@
import net.modificationstation.stationapi.api.event.network.packet.PacketRegisterEvent;
import net.modificationstation.stationapi.api.network.packet.ManagedPacket;
import net.modificationstation.stationapi.api.registry.PacketTypeRegistry;
import net.modificationstation.stationapi.api.util.Null;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

Expand Down