ForgePlatform(ForgeWorldEdit mod) { this.mod = mod; this.server = FMLCommonHandler.instance().getMinecraftServerInstance(); }
/** * Get the version of the WorldEdit-for-Forge implementation. * * @return a version string */ String getInternalVersion() { return ForgeWorldEdit.class.getAnnotation(Mod.class).version(); }
@Mod(modid = ForgeWorldEdit.MOD_ID, name = "WorldEdit", version = "%VERSION%", acceptableRemoteVersions = "*") public class ForgeWorldEdit { @Instance(MOD_ID) public static ForgeWorldEdit inst; @SidedProxy(serverSide = "com.sk89q.worldedit.forge.CommonProxy", clientSide = "com.sk89q.worldedit.forge.ClientProxy") public static CommonProxy proxy;
@EventHandler public void preInit(FMLPreInitializationEvent event) { logger = event.getModLog(); // Setup working directory workingDir = new File(event.getModConfigurationDirectory() + File.separator + "worldedit"); workingDir.mkdir(); config = new ForgeConfiguration(this); config.load(); MinecraftForge.EVENT_BUS.register(ThreadSafeCache.getInstance()); }
@SubscribeEvent public void tickStart(TickEvent event) { long now = System.currentTimeMillis(); if (now - lastRefresh > REFRESH_DELAY) { Set<UUID> onlineIds = new HashSet<>(); MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance(); if (server == null || server.getPlayerList() == null) { return; } for (EntityPlayerMP player : server.getPlayerList().getPlayers()) { if (player != null) { onlineIds.add(player.getUniqueID()); } } this.onlineIds = new CopyOnWriteArraySet<>(onlineIds); lastRefresh = now; } }
@EventHandler public void init(FMLInitializationEvent event) { MinecraftForge.EVENT_BUS.register(this); WECUIPacketHandler.init(); InternalPacketHandler.init(); proxy.registerHandlers(); }
@EventHandler public void postInit(FMLPostInitializationEvent event) { logger.info("WorldEdit for Forge (version " + getInternalVersion() + ") is loaded"); }
@EventHandler public void serverAboutToStart(FMLServerAboutToStartEvent event) { if (this.platform != null) { logger.warn("FMLServerStartingEvent occurred when FMLServerStoppingEvent hasn't"); WorldEdit.getInstance().getPlatformManager().unregister(platform); } this.platform = new ForgePlatform(this); WorldEdit.getInstance().getPlatformManager().register(platform); if (Loader.isModLoaded("sponge")) { this.provider = new ForgePermissionsProvider.SpongePermissionsProvider(); } else { this.provider = new ForgePermissionsProvider.VanillaPermissionsProvider(platform); } for (ResourceLocation name : Block.REGISTRY.getKeys()) { String nameStr = name.toString(); if (!BlockType.REGISTRY.keySet().contains(nameStr)) { BlockTypes.register(new BlockType(nameStr)); } } for (ResourceLocation name : Item.REGISTRY.getKeys()) { String nameStr = name.toString(); if (!ItemType.REGISTRY.keySet().contains(nameStr)) { ItemTypes.register(new ItemType(nameStr)); } } }
@Mod.EventBusSubscriber(value = Side.CLIENT, modid = LibMisc.MOD_ID) public final class TooltipHandler { @SubscribeEvent(priority = EventPriority.HIGHEST) public static void onTooltipEvent(ItemTooltipEvent event) { if(event.getItemStack().hasTagCompound() && ItemNBTHelper.getBoolean(event.getItemStack(), ItemKeepIvy.TAG_KEEP, false)) event.getToolTip().add(I18n.format("botaniamisc.hasKeepIvy")); } }
/** * Registers a SubTileEntity, a new special flower. Look in the subtile package of the API. * Call this during {@code RegistryEvent.Register<Block>}, and don't forget to register a model in BotaniaAPIClient. */ public static void registerSubTile(String key, Class<? extends SubTileEntity> subtileClass) { subTiles.put(key, subtileClass); subTileMods.put(key, Loader.instance().activeModContainer().getModId()); }
protected TinkerCraftingEvent(ItemStack itemStack, EntityPlayer player, String message) { this.itemStack = itemStack; this.player = player; message += "\n" + TextFormatting.ITALIC + "by " + Loader.instance().activeModContainer().getName(); this.message = message; }
private static boolean checkIncompatibleMods() { if(!checkedIncompatibility) { hasIncompatibleMods = Loader.isModLoaded("optifine"); checkedIncompatibility = true; } return !hasIncompatibleMods; }
@Override @Optional.Method(modid = "BuildCraft|Transport") public boolean isBuildcraftPipe(TileEntity tile) { return false; // tile instanceof IPipeTile; todo buildcraft }
@EventHandler public void serverStarted(FMLServerStartedEvent event) { WorldEdit.getInstance().getEventBus().post(new PlatformReadyEvent()); }
@Override public boolean hasPermission(EntityPlayerMP player, String permission) { ForgeConfiguration configuration = platform.getConfiguration(); return configuration.cheatMode || FMLCommonHandler.instance().getMinecraftServerInstance().getPlayerList().canSendCommands(player.getGameProfile()) || (configuration.creativeEnable && player.interactionManager.getGameType() == GameType.CREATIVE); }
@Mod.EventBusSubscriber(modid = LibMisc.MOD_ID) public final class CommonTickHandler { private CommonTickHandler() {} @SubscribeEvent public static void onTick(WorldTickEvent event) { if(event.phase == Phase.END) { CorporeaHelper.clearCache(); } } }
@EventHandler public void serverStopping(FMLServerStoppingEvent event) { WorldEdit worldEdit = WorldEdit.getInstance(); worldEdit.getSessionManager().unload(); worldEdit.getPlatformManager().unregister(platform); }
@Mod.EventBusSubscriber(value = Side.CLIENT, modid = LibMisc.MOD_ID) public final class SkyblockRenderEvents { @SubscribeEvent public static void onRender(RenderWorldLastEvent event) { World world = Minecraft.getMinecraft().world; if(ConfigHandler.enableFancySkybox && world.provider.getDimension() == 0 && (ConfigHandler.enableFancySkyboxInNormalWorlds || WorldTypeSkyblock.isWorldSkyblock(Minecraft.getMinecraft().world))) { if(!(world.provider.getSkyRenderer() instanceof SkyblockSkyRenderer)) world.provider.setSkyRenderer(new SkyblockSkyRenderer()); } } }
@Mod.EventBusSubscriber(modid = LibMisc.MOD_ID) public static class ChangeListener { @SubscribeEvent public static void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent eventArgs) { if(eventArgs.getModID().equals(LibMisc.MOD_ID)) load(); } } }
@Mod.EventBusSubscriber(Side.CLIENT) public class RangedEvents { @SubscribeEvent public static void onToolPartReplacement(TinkerEvent.OnToolPartReplacement event) { if(event.toolStack.getItem() == TinkerRangedWeapons.bolt) { List<ItemStack> extraParts = event.replacementParts.stream() .filter(Objects::nonNull) .filter(stack -> stack.getItem() == TinkerTools.boltCore) .map(BoltCore::getHeadStack) .collect(Collectors.toList()); event.replacementParts.addAll(new ArrayList<>(extraParts)); } } }