Skip to content

Commit

Permalink
0.0.1
Browse files Browse the repository at this point in the history
  • Loading branch information
VinyarionHyarmendacil committed Apr 26, 2020
1 parent 2300cbe commit 460a5b9
Show file tree
Hide file tree
Showing 31 changed files with 631 additions and 68 deletions.
6 changes: 3 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'eclipse'
apply plugin: 'maven-publish'

version = '1.0'
group = 'com.yourname.modid' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = 'modid'
version = '0.0.1'
group = 'sybyline.anduril' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = 'anduril'

sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.

Expand Down
23 changes: 20 additions & 3 deletions src/main/java/sybyline/anduril/Anduril.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
package sybyline.anduril;

import net.minecraft.block.Block;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.*;
import net.minecraftforge.eventbus.api.*;
import net.minecraftforge.fml.ModContainer;
import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.*;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.*;
import net.minecraftforge.fml.event.server.*;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.forgespi.language.IModInfo;
import sybyline.anduril.extensions.Submod;
import sybyline.anduril.scripting.common.CommonScripting;
import sybyline.anduril.scripting.server.ServerManagement;

import org.apache.logging.log4j.*;
import org.apache.maven.artifact.versioning.*;
Expand Down Expand Up @@ -53,8 +52,13 @@ private void gameStart(FMLClientSetupEvent event) {
Submod.gameStart(event);
}

@SubscribeEvent
public void serverStartPre(FMLServerAboutToStartEvent event) {
}

@SubscribeEvent
public void serverStart(FMLServerStartingEvent event) {
ServerManagement.INSTANCE.serverStart(event);
CommonScripting.INSTANCE.serverStart(event);
}

Expand All @@ -71,19 +75,32 @@ public void serverTick(TickEvent.ServerTickEvent event) {
@SubscribeEvent
public void serverClose(FMLServerStoppingEvent event) {
CommonScripting.INSTANCE.serverStop(event);
ServerManagement.INSTANCE.serverStop(event);
}

@SubscribeEvent
public void serverClosePost(FMLServerStoppedEvent event) {
}

private void enqueueIMC(InterModEnqueueEvent event) {
Submod.interModCommsEnqueue();
}

private void processIMC(InterModProcessEvent event) {
event.getIMCStream().forEach(msg -> {
// String from = msg.getSenderModId();
// String method = msg.getMethod();
// Handle compatibility
});
}

/*
@Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD)
public static class RegistryEvents {
@SubscribeEvent
public static void onBlocksRegistry(final RegistryEvent.Register<Block> blockRegistryEvent) {
}
}
*/

}
17 changes: 17 additions & 0 deletions src/main/java/sybyline/anduril/extensions/Submod.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import net.minecraftforge.forgespi.language.ModFileScanData;
import net.minecraftforge.forgespi.language.ModFileScanData.AnnotationData;
import sybyline.anduril.extensions.annotation.SubmodMarker;
import sybyline.anduril.extensions.client.SubmodClient;

/**
* Submods extend from this class, have an {@code @Submod.Marker} on their type,
Expand All @@ -38,6 +39,11 @@ protected Submod() {
*/
protected abstract void submodSetup();

/**
* Called during the FMLCommonSetupEvent. Make calls to the Submod API during this event
*/
protected abstract void enqueIMCMessages();

/**
* Ensure that some task gets run synchronously, by default, submods are initialized concurrently
*/
Expand Down Expand Up @@ -141,6 +147,17 @@ public static void loadSubmods() {
}
}

public static void interModCommsEnqueue() {
submods.forEach(submod -> {
try {
submod.enqueIMCMessages();
} catch(Exception e) {
LOGGER.error("Submod errored during InterModComms: " + submod.submod_id + ":", e);
e.printStackTrace();
}
});
}

public static void gameStart(FMLClientSetupEvent event) {
try {
SubmodClient.INSTANCE.init(event);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sybyline.anduril.extensions;
package sybyline.anduril.extensions.client;

import java.util.List;

Expand All @@ -12,6 +12,8 @@
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import sybyline.anduril.Anduril;
import sybyline.anduril.extensions.Submod;
import sybyline.anduril.util.client.ScreenUtils;

public final class SubmodClient {

Expand All @@ -26,14 +28,42 @@ public void init(FMLClientSetupEvent event) {
MinecraftForge.EVENT_BUS.register(this);
}

private static final int ROW = 10;

@SubscribeEvent
public void drawGui(GuiScreenEvent.DrawScreenEvent.Post event) {
Screen screen = event.getGui();
if (screen instanceof MainMenuScreen) {
double mouseX = event.getMouseX();
double mouseY = event.getMouseY();
List<String> strings = getMainMenuStrings();
float x = 2, y = 2;
for (int i = 0; i < strings.size(); i++) {
mc.fontRenderer.drawString(strings.get(i), x, y + (i * 10), -1);
String s = strings.get(i);
int l = mc.fontRenderer.getStringWidth(s);
mc.fontRenderer.drawString(s, x, y + (i * ROW), -1);
if (i == 0 && mouseX >= x && mouseX <= x + ROW && mouseY >= y && mouseY <= y + l) {
ScreenUtils.box((int)x - 1, (int)y - 1, l + 1, ROW + 1, -1);
}
}
}
}

@SubscribeEvent
public void clickGui(GuiScreenEvent.MouseClickedEvent.Post event) {
Screen screen = event.getGui();
if (screen instanceof MainMenuScreen) {
double mouseX = event.getMouseX();
double mouseY = event.getMouseY();
List<String> strings = getMainMenuStrings();
float x = 2, y = 2;
if (strings.size() > 0) {
String s = strings.get(0);
int l = mc.fontRenderer.getStringWidth(s);
if (mouseX >= x && mouseX <= x + ROW && mouseY >= y && mouseY <= y + l) {
event.setCanceled(true);
mc.displayGuiScreen(new SubmodListScreen());
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package sybyline.anduril.extensions.client;

import net.minecraft.client.gui.screen.Screen;
import net.minecraft.util.text.*;

public class SubmodListScreen extends Screen {

public SubmodListScreen() {
super(new TranslationTextComponent("anduril.submodlist"));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,12 @@ private LOTRSubmod() {}

@Override
protected void submodSetup() {
LOGGER.info("Hello from submod setup!");
LOGGER.info("Submod setup!");
}

@Override
protected void enqueIMCMessages() {
LOGGER.info("Submod IMCMessages!");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,16 @@ public default void gui_display(IMCResource location) {

// Shapes

public void draw_lineHorizontal(int p_hLine_1_, int p_hLine_2_, int p_hLine_3_, int p_hLine_4_);
public void draw_lineHorizontal(int x1, int x2, int y, int color);

public void draw_lineVertical(int p_vLine_1_, int p_vLine_2_, int p_vLine_3_, int p_vLine_4_);
public void draw_lineVertical(int x, int y1, int y2, int color);

public default void draw_lineBox(int x, int y, int w, int h, int color) {
this.draw_lineHorizontal(x, x + w - 1, y, color);
this.draw_lineHorizontal(x, x + w - 1, y + h - 1, color);
this.draw_lineVertical(x, y, y + h, color);
this.draw_lineVertical(x + w - 1, y, y + h, color);
}

public void draw_pointSmall(int x, int y, int color);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package sybyline.anduril.scripting.api.common;

import java.util.UUID;

import sybyline.anduril.scripting.api.server.IPermission;

public interface IScriptPlayer extends IScriptLiving {

public boolean is_online();
Expand All @@ -8,6 +12,14 @@ public interface IScriptPlayer extends IScriptLiving {

public String name();

public UUID uuid();

public void send_chat(String text);

public boolean hasPermission(IPermission permission);

public void grantPermission(IPermission permission);

public void revokePermission(IPermission permission);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package sybyline.anduril.scripting.api.server;

import java.util.Set;

public interface IPermission {

public String key();

public String desc();

public Set<IPermission> children();

public default void add(IPermission permission) {
if (!posesses(permission)) children().add(permission);
}

public default void remove(IPermission permission) {
children().remove(permission);
}

public default boolean posesses(IPermission permission) {
if (key().equals(permission.key())) {
return true;
}
return children().stream().anyMatch(child -> child.posesses(permission));
}

public default boolean exists() {
return !key().isEmpty();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package sybyline.anduril.scripting.api.server;

public interface IPermissionConfigure {

public IPermission new_node(String node, String desc);

public IPermission get_node(String node);

public IPermission get_command(String command);

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
package sybyline.anduril.scripting.api.server;

import sybyline.anduril.scripting.api.data.IScriptData;

public interface IScriptServer {

public void command(String command, Object... inserts);

public IScriptData persistant();

public Object ephemeral();

public IPermissionConfigure permissions();

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import sybyline.anduril.scripting.common.CommonScripting;
import sybyline.anduril.scripting.common.ScriptUtil;
import sybyline.anduril.scripting.common.ScriptWrapperSimple;
import sybyline.anduril.util.Util;
import sybyline.anduril.util.data.SimpleReloadListener;

Expand All @@ -28,6 +29,7 @@ public void setup(FMLClientSetupEvent event) {
mc = event.getMinecraftSupplier().get();
mc_resources = (IReloadableResourceManager)mc.getResourceManager();
mc_resources.addReloadListener(SimpleReloadListener.prepare(this::clientReloadGui).call());
mc_resources.addReloadListener(SimpleReloadListener.prepare(this::clientReloadTooltips).call());
MinecraftForge.EVENT_BUS.register(this);
CommonScripting.INSTANCE.setPrintln_debug(string -> {
if (mc.gameSettings.showDebugInfo) {
Expand All @@ -42,9 +44,11 @@ public void setup(FMLClientSetupEvent event) {

// Custom overlay

public static final ResourceLocation OVERLAY = new ResourceLocation(Util.ANDURIL, "overlay");
public static final ResourceLocation OVERLAY = new ResourceLocation(Util.ANDURIL, "special/overlay");
public static final ResourceLocation TOOLTIPS = new ResourceLocation(Util.ANDURIL, "special/tooltips");

public ScriptGuiWrapper<?> game_overlay = null;
public ScriptWrapperSimple tooltips = null;

private int prevWidth = -1, prevHeight = -1;

Expand Down Expand Up @@ -91,6 +95,18 @@ public void onClose() {
}
}

private void clientReloadTooltips(IResourceManager __) {
// TODO : tooltips
String js = js(TOOLTIPS);
if (js != null) {
tooltips = new ScriptWrapperSimple("tooltips", js);
tooltips.setupWithContext(null);
} else {
CommonScripting.LOGGER.info("No tooltips " + TOOLTIPS);
tooltips = null;
}
}

public void serverSendsGui(ResourceLocation loc, boolean redisplay, CompoundNBT nbt) {
try {
if (mc.currentScreen != null && mc.currentScreen instanceof ScriptGuiWrapper) {
Expand Down Expand Up @@ -124,7 +140,7 @@ public ScriptGuiWrapper<?> tryOpen(ResourceLocation loc, Object data) {

private String js(ResourceLocation loc) {
if (loc != null) try {
IResource res = mc_resources.getResource(Util.Structs.sandwich(loc, Util.ANDURIL + "/guis/", ".js"));
IResource res = mc_resources.getResource(Util.Structs.sandwich(loc, Util.ANDURIL, ".js"));
return Util.IO.readString(res.getInputStream());
} catch(Exception e) {
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package sybyline.anduril.scripting.client;

import com.mojang.blaze3d.platform.GlStateManager;

import net.minecraftforge.fml.client.gui.widget.ExtendedButton;
import sybyline.anduril.scripting.api.client.*;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,9 @@ public IScriptPane new_list(int x, int y, int w, int h, int x_offset, int y_offs
}

public IScriptButton new_button(int x, int y, int w, int h, int z, String msg, Runnable clickAction, Runnable hoverAction) {
return new ScriptButton(x, y, w, h, z, msg, clickAction, hoverAction);
ScriptButton ret = new ScriptButton(x, y, w, h, z, msg, clickAction, hoverAction);
ret._internal_screen = this;
return ret;
}

public IScriptInput<String> new_textfield(int x, int y, int w, int h, String text) {
Expand Down
Loading

0 comments on commit 460a5b9

Please sign in to comment.