Skip to content

Commit

Permalink
Further work on Forge 1.13 compat.
Browse files Browse the repository at this point in the history
  • Loading branch information
me4502 committed Dec 26, 2018
1 parent d6344bd commit fab684c
Show file tree
Hide file tree
Showing 12 changed files with 89 additions and 74 deletions.
32 changes: 17 additions & 15 deletions worldedit-forge/build.gradle
Expand Up @@ -2,7 +2,7 @@ buildscript {
repositories { repositories {
mavenLocal() mavenLocal()
mavenCentral() mavenCentral()
maven { url = "http://files.minecraftforge.net/maven" } maven { url = "https://files.minecraftforge.net/maven" }
jcenter() jcenter()
} }


Expand All @@ -14,7 +14,7 @@ buildscript {
apply plugin: 'net.minecraftforge.gradle' apply plugin: 'net.minecraftforge.gradle'


def minecraftVersion = "1.13" def minecraftVersion = "1.13"
def forgeVersion = "24.0.16-1.13-pre" def forgeVersion = "24.0.32-1.13-pre"


dependencies { dependencies {
compile project(':worldedit-core') compile project(':worldedit-core')
Expand All @@ -28,26 +28,28 @@ sourceCompatibility = 1.8
targetCompatibility = 1.8 targetCompatibility = 1.8


minecraft { minecraft {
mappings channel: 'snapshot', version: '20181215' mappings channel: 'snapshot', version: '20180921-1.13'
// runDir = 'run'

// replaceIn "com/sk89q/worldedit/forge/ForgeWorldEdit.java"
// replace "%VERSION%", project.version
} }


project.archivesBaseName = "${project.archivesBaseName}-mc${minecraftVersion}" project.archivesBaseName = "${project.archivesBaseName}-mc${minecraftVersion}"


processResources { processResources {
from (sourceSets.main.resources.srcDirs) { // this will ensure that this task is redone when the versions change.
expand 'version': project.version, inputs.property 'version', project.version
'mcVersion': minecraftVersion, inputs.property 'mcversion', minecraftVersion
'forgeVersion': forgeVersion, inputs.property 'internalVersion', internalVersion
'internalVersion': project.internalVersion
include 'mcmod.info' // replace stuff in mcmod.info, nothing else
from(sourceSets.main.resources.srcDirs) {
include 'META_INF/mods.toml'

// replace version and mcversion
expand 'version':project.version, 'mcversion': minecraftVersion, 'internalVersion': internalVersion
} }


from (sourceSets.main.resources.srcDirs) { // copy everything else except the mcmod.info
exclude 'mcmod.info' from(sourceSets.main.resources.srcDirs) {
exclude 'META_INF/mods.toml'
} }
} }


Expand Down
Expand Up @@ -63,12 +63,12 @@ public boolean isSolid() {


@Override @Override
public boolean isFragileWhenPushed() { public boolean isFragileWhenPushed() {
return delegate.getMobilityFlag() == EnumPushReaction.DESTROY; return delegate.getPushReaction() == EnumPushReaction.DESTROY;
} }


@Override @Override
public boolean isUnpushable() { public boolean isUnpushable() {
return delegate.getMobilityFlag() == EnumPushReaction.BLOCK; return delegate.getPushReaction() == EnumPushReaction.BLOCK;
} }


@Override @Override
Expand All @@ -78,7 +78,7 @@ public boolean isMovementBlocker() {


@Override @Override
public boolean isBurnable() { public boolean isBurnable() {
return delegate.getCanBurn(); return delegate.isFlammable();
} }


@Override @Override
Expand Down
Expand Up @@ -136,7 +136,7 @@ public boolean isTamed() {


@Override @Override
public boolean isTagged() { public boolean isTagged() {
return entity instanceof EntityLiving && ((EntityLiving) entity).hasCustomName(); return entity.hasCustomName();
} }


@Override @Override
Expand Down
Expand Up @@ -44,10 +44,10 @@
import net.minecraftforge.event.CommandEvent; import net.minecraftforge.event.CommandEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent.LeftClickEmpty; import net.minecraftforge.event.entity.player.PlayerInteractEvent.LeftClickEmpty;
import net.minecraftforge.eventbus.api.Event;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
Expand All @@ -56,24 +56,24 @@
import net.minecraftforge.fml.common.event.FMLServerStartedEvent; import net.minecraftforge.fml.common.event.FMLServerStartedEvent;
import net.minecraftforge.fml.common.event.FMLServerStoppingEvent; import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
import net.minecraftforge.fml.common.eventhandler.Event.Result; import net.minecraftforge.fml.common.eventhandler.Event.Result;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.javafmlmod.FMLModLoadingContext;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;


import java.io.File; import java.io.File;


/** /**
* The Forge implementation of WorldEdit. * The Forge implementation of WorldEdit.
*/ */
@Mod(modid = ForgeWorldEdit.MOD_ID, name = "WorldEdit", version = "%VERSION%", acceptableRemoteVersions = "*") @Mod(ForgeWorldEdit.MOD_ID)
public class ForgeWorldEdit { public class ForgeWorldEdit {


public static Logger logger; private static final Logger LOGGER = LogManager.getLogger();
public static final String MOD_ID = "worldedit"; public static final String MOD_ID = "worldedit";
public static final String CUI_PLUGIN_CHANNEL = "worldedit:cui"; public static final String CUI_PLUGIN_CHANNEL = "worldedit:cui";


private ForgePermissionsProvider provider; private ForgePermissionsProvider provider;


@Instance(MOD_ID)
public static ForgeWorldEdit inst; public static ForgeWorldEdit inst;


@SidedProxy(serverSide = "com.sk89q.worldedit.forge.CommonProxy", clientSide = "com.sk89q.worldedit.forge.ClientProxy") @SidedProxy(serverSide = "com.sk89q.worldedit.forge.CommonProxy", clientSide = "com.sk89q.worldedit.forge.ClientProxy")
Expand All @@ -83,36 +83,42 @@ public class ForgeWorldEdit {
private ForgeConfiguration config; private ForgeConfiguration config;
private File workingDir; private File workingDir;


@EventHandler public ForgeWorldEdit() {
inst = this;

FMLModLoadingContext.get().getModEventBus().addListener(this::preInit);
FMLModLoadingContext.get().getModEventBus().addListener(this::init);
FMLModLoadingContext.get().getModEventBus().addListener(this::postInit);
FMLModLoadingContext.get().getModEventBus().addListener(this::serverAboutToStart);
FMLModLoadingContext.get().getModEventBus().addListener(this::serverStopping);
FMLModLoadingContext.get().getModEventBus().addListener(this::serverStarted);

MinecraftForge.EVENT_BUS.register(ThreadSafeCache.getInstance());
MinecraftForge.EVENT_BUS.register(this);
}

public void preInit(FMLPreInitializationEvent event) { public void preInit(FMLPreInitializationEvent event) {
logger = event.getModLog();
// Setup working directory // Setup working directory
workingDir = new File(event.getModConfigurationDirectory() + File.separator + "worldedit"); workingDir = new File(event.getModConfigurationDirectory() + File.separator + "worldedit");
workingDir.mkdir(); workingDir.mkdir();


config = new ForgeConfiguration(this); config = new ForgeConfiguration(this);
config.load(); config.load();

MinecraftForge.EVENT_BUS.register(ThreadSafeCache.getInstance());
} }


@EventHandler
public void init(FMLInitializationEvent event) { public void init(FMLInitializationEvent event) {
MinecraftForge.EVENT_BUS.register(this);
WECUIPacketHandler.init(); WECUIPacketHandler.init();
InternalPacketHandler.init(); InternalPacketHandler.init();
proxy.registerHandlers(); proxy.registerHandlers();
} }


@EventHandler
public void postInit(FMLPostInitializationEvent event) { public void postInit(FMLPostInitializationEvent event) {
logger.info("WorldEdit for Forge (version " + getInternalVersion() + ") is loaded"); LOGGER.info("WorldEdit for Forge (version " + getInternalVersion() + ") is loaded");
} }


@EventHandler
public void serverAboutToStart(FMLServerAboutToStartEvent event) { public void serverAboutToStart(FMLServerAboutToStartEvent event) {
if (this.platform != null) { if (this.platform != null) {
logger.warn("FMLServerStartingEvent occurred when FMLServerStoppingEvent hasn't"); LOGGER.warn("FMLServerStartingEvent occurred when FMLServerStoppingEvent hasn't");
WorldEdit.getInstance().getPlatformManager().unregister(platform); WorldEdit.getInstance().getPlatformManager().unregister(platform);
} }


Expand Down Expand Up @@ -141,14 +147,12 @@ public void serverAboutToStart(FMLServerAboutToStartEvent event) {
} }
} }


@EventHandler
public void serverStopping(FMLServerStoppingEvent event) { public void serverStopping(FMLServerStoppingEvent event) {
WorldEdit worldEdit = WorldEdit.getInstance(); WorldEdit worldEdit = WorldEdit.getInstance();
worldEdit.getSessionManager().unload(); worldEdit.getSessionManager().unload();
worldEdit.getPlatformManager().unregister(platform); worldEdit.getPlatformManager().unregister(platform);
} }


@EventHandler
public void serverStarted(FMLServerStartedEvent event) { public void serverStarted(FMLServerStartedEvent event) {
WorldEdit.getInstance().getEventBus().post(new PlatformReadyEvent()); WorldEdit.getInstance().getEventBus().post(new PlatformReadyEvent());
} }
Expand Down Expand Up @@ -183,11 +187,11 @@ public void onPlayerInteract(PlayerInteractEvent event) {


boolean isLeftDeny = event instanceof PlayerInteractEvent.LeftClickBlock boolean isLeftDeny = event instanceof PlayerInteractEvent.LeftClickBlock
&& ((PlayerInteractEvent.LeftClickBlock) event) && ((PlayerInteractEvent.LeftClickBlock) event)
.getUseItem() == Result.DENY; .getUseItem() == Event.Result.DENY;
boolean isRightDeny = boolean isRightDeny =
event instanceof PlayerInteractEvent.RightClickBlock event instanceof PlayerInteractEvent.RightClickBlock
&& ((PlayerInteractEvent.RightClickBlock) event) && ((PlayerInteractEvent.RightClickBlock) event)
.getUseItem() == Result.DENY; .getUseItem() == Event.Result.DENY;
if (isLeftDeny || isRightDeny || event.getEntity().world.isRemote) { if (isLeftDeny || isRightDeny || event.getEntity().world.isRemote) {
return; return;
} }
Expand Down Expand Up @@ -233,7 +237,7 @@ public static ItemStack toForgeItemStack(BaseItemStack item) {
if (item.getNbtData() != null) { if (item.getNbtData() != null) {
forgeCompound = NBTConverter.toNative(item.getNbtData()); forgeCompound = NBTConverter.toNative(item.getNbtData());
} }
return new ItemStack(Item.getByNameOrId(item.getType().getId()), item.getAmount(), 0, forgeCompound); return new ItemStack(Item.REGISTRY.get(new ResourceLocation(item.getType().getId())), item.getAmount(), 0, forgeCompound);
} }


/** /**
Expand Down
Expand Up @@ -20,18 +20,19 @@
package com.sk89q.worldedit.forge; package com.sk89q.worldedit.forge;


import com.sk89q.worldedit.forge.net.LeftClickAirEventMessage; import com.sk89q.worldedit.forge.net.LeftClickAirEventMessage;
import net.minecraftforge.fml.common.network.NetworkRegistry; import javafx.geometry.Side;
import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper; import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.network.NetworkRegistry;
import net.minecraftforge.fml.network.simple.SimpleChannel;


import java.nio.charset.Charset; import java.nio.charset.Charset;


public class InternalPacketHandler { public class InternalPacketHandler {
public static final Charset UTF_8_CHARSET = Charset.forName("UTF-8"); public static final Charset UTF_8_CHARSET = Charset.forName("UTF-8");
public static SimpleNetworkWrapper CHANNEL; public static SimpleChannel CHANNEL;


public static void init() { public static void init() {
CHANNEL = NetworkRegistry.INSTANCE.newSimpleChannel(ForgeWorldEdit.MOD_ID); CHANNEL = NetworkRegistry.newSimpleChannel(new ResourceLocation(ForgeWorldEdit.MOD_ID, "worldedit"), () -> "1", check -> true, check -> true);
CHANNEL.registerMessage(LeftClickAirEventMessage.Handler.class, LeftClickAirEventMessage.class, 0, Side.SERVER); CHANNEL.registerMessage(LeftClickAirEventMessage.Handler.class, LeftClickAirEventMessage.class, 0, Side.SERVER);
} }


Expand Down
Expand Up @@ -22,14 +22,14 @@
import com.sk89q.worldedit.forge.gui.GuiHandler; import com.sk89q.worldedit.forge.gui.GuiHandler;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.settings.KeyBinding; import net.minecraft.client.settings.KeyBinding;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.InputEvent.KeyInputEvent; import net.minecraftforge.fml.common.gameevent.InputEvent.KeyInputEvent;
import org.lwjgl.input.Keyboard; import org.lwjgl.input.Keyboard;


public class KeyHandler { public class KeyHandler {


private static Minecraft mc = Minecraft.getMinecraft(); private static Minecraft mc = Minecraft.getInstance();
private static KeyBinding mainKey = new KeyBinding("WorldEdit Reference", Keyboard.KEY_L, "WorldEdit"); private static KeyBinding mainKey = new KeyBinding("WorldEdit Reference", Keyboard.KEY_L, "WorldEdit");


public KeyHandler() { public KeyHandler() {
Expand Down
Expand Up @@ -21,8 +21,7 @@


import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent; import net.minecraftforge.fml.common.gameevent.TickEvent;


import java.util.Collections; import java.util.Collections;
Expand Down
Expand Up @@ -81,7 +81,7 @@ static void setTileEntity(World world, BlockVector3 position, Class<? extends Ti
if (tag != null) { if (tag != null) {
// Set X, Y, Z // Set X, Y, Z
updateForSet(tag, position); updateForSet(tag, position);
tileEntity.readFromNBT(tag); tileEntity.read(tag);
} }


world.setTileEntity(new BlockPos(position.getBlockX(), position.getBlockY(), position.getBlockZ()), tileEntity); world.setTileEntity(new BlockPos(position.getBlockX(), position.getBlockY(), position.getBlockZ()), tileEntity);
Expand All @@ -98,7 +98,7 @@ static void setTileEntity(World world, BlockVector3 position, Class<? extends Ti
static void setTileEntity(World world, BlockVector3 position, @Nullable NBTTagCompound tag) { static void setTileEntity(World world, BlockVector3 position, @Nullable NBTTagCompound tag) {
if (tag != null) { if (tag != null) {
updateForSet(tag, position); updateForSet(tag, position);
TileEntity tileEntity = TileEntity.create(world, tag); TileEntity tileEntity = TileEntity.create(tag);
if (tileEntity != null) { if (tileEntity != null) {
world.setTileEntity(new BlockPos(position.getBlockX(), position.getBlockY(), position.getBlockZ()), tileEntity); world.setTileEntity(new BlockPos(position.getBlockX(), position.getBlockY(), position.getBlockZ()), tileEntity);
} }
Expand Down Expand Up @@ -143,7 +143,7 @@ static TileEntity constructTileEntity(World world, BlockVector3 position, Class<


public static NBTTagCompound copyNbtData(TileEntity tile) { public static NBTTagCompound copyNbtData(TileEntity tile) {
NBTTagCompound tag = new NBTTagCompound(); NBTTagCompound tag = new NBTTagCompound();
tile.writeToNBT(tag); tile.write(tag);
return tag; return tag;
} }
} }
Expand Up @@ -25,7 +25,7 @@
import net.minecraft.network.PacketBuffer; import net.minecraft.network.PacketBuffer;
import net.minecraft.network.ThreadQuickExitException; import net.minecraft.network.ThreadQuickExitException;
import net.minecraft.network.play.server.SPacketCustomPayload; import net.minecraft.network.play.server.SPacketCustomPayload;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.network.FMLEventChannel; import net.minecraftforge.fml.common.network.FMLEventChannel;
import net.minecraftforge.fml.common.network.FMLNetworkEvent.ClientCustomPacketEvent; import net.minecraftforge.fml.common.network.FMLNetworkEvent.ClientCustomPacketEvent;
import net.minecraftforge.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent; import net.minecraftforge.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent;
Expand Down
30 changes: 30 additions & 0 deletions worldedit-forge/src/main/resources/META-INF/mods.toml
@@ -0,0 +1,30 @@
# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml
modLoader="javafml"
# A version range to match for said mod loader - for regular FML @Mod it will be the minecraft version (without the 1.)
loaderVersion="[13,)"
# A URL to refer people to when problems occur with this mod
issueTrackerURL="https://discord.gg/YKbmj7V"
# A URL for the "homepage" for this mod, displayed in the mod UI
displayURL="http://wiki.sk89q.com/wiki/WorldEdit/"
# A file name (in the root of the mod JAR) containing a logo for display
logoFile="worldedit-icon.png"
# A text field displayed in the mod UI
authors="sk89q, wizjany, TomyLobo, kenzierocks, Me4502"
# A list of mods - how many allowed here is determined by the individual mod loader
[[worldedit]]
# The modid of the mod
modId="worldedit"
# The version number of the mod - there's a few well known ${} variables useable here or just hardcode it
version="${internalVersion}"
# A display name for the mod
displayName="WorldEdit"
# The description text for the mod (multi line!)
description='''
WorldEdit is an easy-to-use in-game world editor for Minecraft, supporting both single player and multiplayer.
'''
[[dependencies.sponge]]
modId="sponge"
mandatory=false
versionRange="[1.13]"
ordering="NONE"
side="BOTH"
21 changes: 0 additions & 21 deletions worldedit-forge/src/main/resources/mcmod.info

This file was deleted.

Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit fab684c

Please sign in to comment.