Skip to content

Commit

Permalink
add vehicles damages saving, repair kit, some bug fixes, bag wip
Browse files Browse the repository at this point in the history
  • Loading branch information
nightwolf93 committed May 31, 2020
1 parent 9479e8f commit 5a1c764
Show file tree
Hide file tree
Showing 40 changed files with 1,088 additions and 118 deletions.
37 changes: 35 additions & 2 deletions src/main/java/fr/yuki/YukiRPFramework/YukiRPFrameworkPlugin.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package fr.yuki.YukiRPFramework;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import fr.yuki.YukiRPFramework.character.CharacterState;
import fr.yuki.YukiRPFramework.commands.*;
import fr.yuki.YukiRPFramework.dao.AccountDAO;
Expand All @@ -12,17 +13,23 @@
import fr.yuki.YukiRPFramework.manager.*;
import fr.yuki.YukiRPFramework.model.Account;
import fr.yuki.YukiRPFramework.model.House;
import fr.yuki.YukiRPFramework.model.ItemShopObject;
import fr.yuki.YukiRPFramework.net.payload.*;
import fr.yuki.YukiRPFramework.utils.ServerConfig;
import net.onfirenetwork.onsetjava.Onset;
import net.onfirenetwork.onsetjava.data.Location;
import net.onfirenetwork.onsetjava.data.Vector;
import net.onfirenetwork.onsetjava.data.Weapon;
import net.onfirenetwork.onsetjava.plugin.Plugin;
import net.onfirenetwork.onsetjava.plugin.event.EventHandler;
import net.onfirenetwork.onsetjava.plugin.event.player.*;

import java.io.FileReader;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

@Plugin(name = "YukiRPFramework", author = "Yuki")
public class YukiRPFrameworkPlugin {
Expand All @@ -35,6 +42,7 @@ public void onEnable() {
Onset.registerListener(this);
ModdingManager.init();
InventoryManager.init();
ItemManager.init();
CharacterManager.init();
VehicleManager.init();
GarageManager.init();
Expand All @@ -52,6 +60,7 @@ public void onEnable() {
Onset.registerCommand("item", new ItemCommand());
Onset.registerCommand("loc", new LocCommand());
Onset.registerCommand("v", new VCommand());
Onset.registerCommand("vmove", new MoveCommand());
Onset.registerCommand("dv", new DVCommand());
Onset.registerCommand("addgatheritem", new AddGatherItemCommand());
Onset.registerCommand("listgatheritem", new ShowGatherItemListCommand());
Expand All @@ -71,6 +80,9 @@ public void onEnable() {
Onset.registerCommand("nitro", new NitroCommand());
Onset.registerCommand("dhouse", new DebugHouseCommand());
Onset.registerCommand("chouse", new CreateHouseCommand());
Onset.registerCommand("fhouse", new FreeHouseCommand());
Onset.registerCommand("houseprops", new SetHousePropsCommand());
Onset.registerCommand("givehousekey", new GiveHouseKeyCommand());

// Register remote events
Onset.registerRemoteEvent("GlobalUI:ToogleWindow");
Expand Down Expand Up @@ -107,6 +119,9 @@ public void onEnable() {
Onset.registerRemoteEvent("House:RequestBuy");
Onset.registerRemoteEvent("Object:EditExistingPlacement");
Onset.registerRemoteEvent("Phone:RequestBuyItemShop");
Onset.registerRemoteEvent("Weapon:StoreWeapon");
Onset.registerRemoteEvent("Growbox:Destroy");
Onset.registerRemoteEvent("ATM:GetInfos");
} catch (Exception ex) {
ex.printStackTrace();
Onset.print("Can't start the plugin because : " + ex.toString());
Expand Down Expand Up @@ -166,6 +181,12 @@ public void onJoin(PlayerSteamAuthEvent evt) {
account.getSaveZ() + 50,
account.getSaveH()));
Onset.broadcast("<span color=\"#ffee00\">" + account.getCharacterName() + " est de retour !</>");

// Set weapons
for(Map.Entry<Integer, Weapon> weaponEntry :
((HashMap<Integer, Weapon>)new Gson().fromJson(account.getWeapons(), new TypeToken<HashMap<Integer, Weapon>>(){}.getType())).entrySet()) {
evt.getPlayer().setWeapon(weaponEntry.getKey(), weaponEntry.getValue());
}
}

// Insert the account in the cache if not exist
Expand Down Expand Up @@ -239,6 +260,10 @@ public void onRemoteEvent(PlayerRemoteEvent evt) {
ATMManager.handleATMWithdraw(evt.getPlayer(), (int)Float.parseFloat((evt.getArgs()[0]).toString()));
break;

case "ATM:GetInfos":
ATMManager.handleATMGetInfos(evt.getPlayer());
break;

case "Vehicle:RequestLockToogle":
VehicleManager.handleVehicleLockRequest(evt.getPlayer());
break;
Expand Down Expand Up @@ -307,6 +332,10 @@ public void onRemoteEvent(PlayerRemoteEvent evt) {
JobManager.handleUseJobTool(evt.getPlayer(), (evt.getArgs()[0]).toString());
break;

case "Growbox:Destroy":
GrowboxManager.handleGrowboxDestroy(evt.getPlayer(), (evt.getArgs()[0]).toString());
break;

case "Growbox:FillWaterPot":
GrowboxManager.handleGrowboxFillWaterPot(evt.getPlayer(), new Gson().fromJson((evt.getArgs()[0]).toString(),
GrowboxFillWaterPotPayload.class));
Expand Down Expand Up @@ -364,6 +393,10 @@ public void onRemoteEvent(PlayerRemoteEvent evt) {
case "Phone:RequestBuyItemShop":
HouseManager.handleRequestBuyItemShop(evt.getPlayer(), Integer.parseInt((evt.getArgs()[0]).toString()));
break;

case "Weapon:StoreWeapon":
WeaponManager.storeWeapon(evt.getPlayer());
break;
}
}
catch (Exception ex) {
Expand Down Expand Up @@ -394,8 +427,8 @@ public void onPlayerInteractDoor(PlayerInteractDoorEvent evt) {
HouseManager.handleHouseMenu(evt.getPlayer(), evt.getDoor().getLocation());
return;
}
if(house.getAccountId() != account.getId() && house.isLocked()) {
SoundManager.playSound3D("sounds/toctoc.mp3", evt.getPlayer().getLocation(), 800, 0.5);
if(!HouseManager.canBuildInHouse(evt.getPlayer(), house) && house.isLocked()) {
SoundManager.playSound3D("sounds/toctoc.mp3", evt.getPlayer().getLocation(), 800, 1);
UIStateManager.sendNotification(evt.getPlayer(), ToastTypeEnum.ERROR, I18n.t(account.getLang(), "toast.house.dont_own_it"));
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,17 @@

import fr.yuki.YukiRPFramework.job.ObjectPlacementInstance;
import fr.yuki.YukiRPFramework.job.WearableWorldObject;
import fr.yuki.YukiRPFramework.manager.ModdingManager;
import fr.yuki.YukiRPFramework.modding.Line3D;
import fr.yuki.YukiRPFramework.model.Bag;
import fr.yuki.YukiRPFramework.model.Mask;
import fr.yuki.YukiRPFramework.ui.UIState;
import net.onfirenetwork.onsetjava.Onset;
import net.onfirenetwork.onsetjava.data.Vector;
import net.onfirenetwork.onsetjava.entity.Player;
import net.onfirenetwork.onsetjava.entity.WorldObject;

import java.util.ArrayList;

public class CharacterState {
private WearableWorldObject wearableWorldObject;
Expand All @@ -14,6 +22,11 @@ public class CharacterState {
private boolean cuffed = false;
private UIState uiState = null;
private Line3D currentDisplayedLine3D = null;
private ArrayList<Vector> lastLocationsRequest = new ArrayList<>();
private Mask currentMask = null;
private WorldObject maskWorldObject = null;
private Bag currentBag = null;
private WorldObject bagWorldObject = null;

public CharacterState() {
this.uiState = new UIState();
Expand Down Expand Up @@ -82,4 +95,68 @@ public Line3D getCurrentDisplayedLine3D() {
public void setCurrentDisplayedLine3D(Line3D currentDisplayedLine3D) {
this.currentDisplayedLine3D = currentDisplayedLine3D;
}

public ArrayList<Vector> getLastLocationsRequest() {
return lastLocationsRequest;
}

public void setLastLocationsRequest(ArrayList<Vector> lastLocationsRequest) {
this.lastLocationsRequest = lastLocationsRequest;
}

public void attachMask(Mask mask, Player player) {
if(this.maskWorldObject != null) {
this.maskWorldObject.destroy();
}
this.currentMask = mask;
Onset.print("Attach mask id: " + mask.getModelId());
this.maskWorldObject = Onset.getServer().createObject(new Vector(0, 0, 0), mask.getModelId());
this.maskWorldObject.attach(player, new Vector(mask.getX(), mask.getY(), mask.getZ()), new Vector(mask.getRx(), mask.getRy(), mask.getRz()), mask.getSocket());
if(ModdingManager.isCustomModelId(mask.getModelId())) ModdingManager.assignCustomModel(this.maskWorldObject, mask.getModelId());
this.maskWorldObject.setScale(new Vector(mask.getSx(), mask.getSy(), mask.getSz()));
}

public void unattachMask() {
if(this.maskWorldObject != null) {
this.maskWorldObject.destroy();
}
this.currentMask = null;
}

public void attachBag(Bag bag, Player player) {
if(this.bagWorldObject != null) {
this.bagWorldObject.destroy();
}
this.currentBag = bag;
Onset.print("Attach bag id: " + bag.getModelId());
this.bagWorldObject = Onset.getServer().createObject(new Vector(0, 0, 0), bag.getModelId());
this.bagWorldObject.attach(player, new Vector(bag.getX(), bag.getY(), bag.getZ()), new Vector(bag.getRx(), bag.getRy(), bag.getRz()), bag.getSocket());
if(ModdingManager.isCustomModelId(bag.getModelId())) ModdingManager.assignCustomModel(this.bagWorldObject, bag.getModelId());
this.bagWorldObject.setScale(new Vector(bag.getSx(), bag.getSy(), bag.getSz()));
//TODO: Refresh weight
}

public void unattachBag() {
if(this.bagWorldObject != null) {
this.bagWorldObject.destroy();
}
this.currentBag = null;
//TODO: Refresh weight
}

public Mask getCurrentMask() {
return currentMask;
}

public void setCurrentMask(Mask currentMask) {
this.currentMask = currentMask;
}

public Bag getCurrentBag() {
return currentBag;
}

public void setCurrentBag(Bag currentBag) {
this.currentBag = currentBag;
}
}
Original file line number Diff line number Diff line change
@@ -1,33 +1,49 @@
package fr.yuki.YukiRPFramework.commands;

import fr.yuki.YukiRPFramework.character.CharacterState;
import fr.yuki.YukiRPFramework.dao.HouseDAO;
import fr.yuki.YukiRPFramework.manager.CharacterManager;
import fr.yuki.YukiRPFramework.manager.HouseManager;
import fr.yuki.YukiRPFramework.manager.WorldManager;
import fr.yuki.YukiRPFramework.model.Account;
import fr.yuki.YukiRPFramework.model.House;
import net.onfirenetwork.onsetjava.Onset;
import net.onfirenetwork.onsetjava.data.Vector;
import net.onfirenetwork.onsetjava.entity.Player;
import net.onfirenetwork.onsetjava.plugin.CommandExecutor;

import java.sql.SQLException;

public class CreateHouseCommand implements CommandExecutor {
@Override
public boolean onCommand(Player player, String s, String[] strings) {
if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false;
CharacterState state = CharacterManager.getCharacterStateByPlayer(player);
if(state.getCurrentDisplayedLine3D() == null) return true;
//if(state.getCurrentDisplayedLine3D() == null) return true;

Vector firstLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 1);
Vector secondLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 2);

Account account = WorldManager.getPlayerAccount(player);
House house = new House();
house.setAccountId(account.getId());
house.setPrice(100);
house.setName("House");
house.setSx(state.getCurrentDisplayedLine3D().getsX());
house.setSy(state.getCurrentDisplayedLine3D().getsY());
house.setSz(state.getCurrentDisplayedLine3D().getsZ());
house.setEx(state.getCurrentDisplayedLine3D().geteX());
house.setEy(state.getCurrentDisplayedLine3D().geteY());
house.setEz(state.getCurrentDisplayedLine3D().geteZ());
house.setPrice(2500);
house.setName("Maison");
house.setSx(firstLoc.getX());
house.setSy(firstLoc.getY());
house.setSz(firstLoc.getZ());
house.setEx(secondLoc.getX());
house.setEy(secondLoc.getY());
house.setEz(secondLoc.getZ());
HouseManager.getHouses().add(house);
try {
HouseDAO.insertHouse(house);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
Onset.print("House created id: " + house.getId());
player.sendMessage("House created id: " + house.getId());

return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import fr.yuki.YukiRPFramework.modding.Line3D;
import fr.yuki.YukiRPFramework.model.Account;
import fr.yuki.YukiRPFramework.model.House;
import net.onfirenetwork.onsetjava.data.Vector;
import net.onfirenetwork.onsetjava.entity.Door;
import net.onfirenetwork.onsetjava.entity.Player;
import net.onfirenetwork.onsetjava.plugin.CommandExecutor;
Expand All @@ -15,9 +16,13 @@ public class DebugHouseCommand implements CommandExecutor {
@Override
public boolean onCommand(Player player, String s, String[] args) {
if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false;
Line3D line3D = new Line3D(Double.parseDouble(args[0]), Double.parseDouble(args[1]), Double.parseDouble(args[2]),
Double.parseDouble(args[3]), Double.parseDouble(args[4]), Double.parseDouble(args[5]), Integer.parseInt(args[6]));

CharacterState state = CharacterManager.getCharacterStateByPlayer(player);
Vector firstLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 1);
Vector secondLoc = state.getLastLocationsRequest().get(state.getLastLocationsRequest().size() - 2);

Line3D line3D = new Line3D(firstLoc.getX(), firstLoc.getY(), firstLoc.getZ(),
secondLoc.getX(), secondLoc.getY(), secondLoc.getZ(), 5);
if(state.getCurrentDisplayedLine3D() != null) {
state.getCurrentDisplayedLine3D().hide(player);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package fr.yuki.YukiRPFramework.commands;

import fr.yuki.YukiRPFramework.dao.HouseDAO;
import fr.yuki.YukiRPFramework.manager.HouseManager;
import fr.yuki.YukiRPFramework.manager.WorldManager;
import fr.yuki.YukiRPFramework.model.House;
import fr.yuki.YukiRPFramework.model.HouseItemObject;
import net.onfirenetwork.onsetjava.entity.Door;
import net.onfirenetwork.onsetjava.entity.Player;
import net.onfirenetwork.onsetjava.plugin.CommandExecutor;

import java.sql.SQLException;

public class FreeHouseCommand implements CommandExecutor {
@Override
public boolean onCommand(Player player, String s, String[] args) {
if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false;
House house = HouseManager.getHouseAtLocation(player.getLocation());
if(house == null) {
house = HouseManager.getHouseAtLocation(WorldManager.getNearestDoor(player.getLocation()).getLocation());
}
if(house == null) return true;
house.setAccountId(-1);
for(Door door : house.getLine3D().getDoorsInside()) {
door.close();
}
for(HouseItemObject houseItemObject : house.getHouseItemObjects()) {
houseItemObject.destroy();
}
try {
HouseDAO.saveHouse(house);
} catch (SQLException throwables) {
throwables.printStackTrace();
}

player.sendMessage("This house is free now");
return true;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package fr.yuki.YukiRPFramework.commands;

import fr.yuki.YukiRPFramework.manager.HouseManager;
import fr.yuki.YukiRPFramework.manager.WorldManager;
import fr.yuki.YukiRPFramework.model.Account;
import fr.yuki.YukiRPFramework.model.House;
import net.onfirenetwork.onsetjava.Onset;
import net.onfirenetwork.onsetjava.entity.Player;
import net.onfirenetwork.onsetjava.plugin.CommandExecutor;

public class GiveHouseKeyCommand implements CommandExecutor {
@Override
public boolean onCommand(Player player, String s, String[] args) {
Player playerTarget = Onset.getPlayers().stream().filter(x -> x.getId() == Integer.parseInt(args[0]))
.findFirst().orElse(null);
if(playerTarget == null) return true;

House house = HouseManager.getHouseAtLocation(player.getLocation());
if(house == null) return true;
if(!HouseManager.canBuildInHouse(player, house)) return true;
Account targetAccount = WorldManager.getPlayerAccount(playerTarget);

if(house.getAllowedPlayers().contains(targetAccount) || playerTarget.getId() == house.getAccountId()) return true;

house.getAllowedPlayers().add(targetAccount.getId());

return true;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package fr.yuki.YukiRPFramework.commands;

import fr.yuki.YukiRPFramework.character.CharacterState;
import fr.yuki.YukiRPFramework.manager.CharacterManager;
import fr.yuki.YukiRPFramework.manager.InventoryManager;
import fr.yuki.YukiRPFramework.manager.WorldManager;
import fr.yuki.YukiRPFramework.model.ItemTemplate;
Expand All @@ -12,6 +14,8 @@ public class LocCommand implements CommandExecutor {
public boolean onCommand(Player player, String s, String[] args) {
if(WorldManager.getPlayerAccount(player).getAdminLevel() == 0) return false;
Location loc = player.getLocationAndHeading();
CharacterState state = CharacterManager.getCharacterStateByPlayer(player);
state.getLastLocationsRequest().add(player.getLocation());
player.sendMessage("Current loc x=" + loc.getX() + ", y=" + loc.getY() + ", z=" + loc.getZ() + ", h=" + loc.getHeading());
return true;
}
Expand Down
Loading

0 comments on commit 5a1c764

Please sign in to comment.